Giter Site home page Giter Site logo

wasm-languages1's Introduction

Fermyon WebAssembly Language Guide

Update 20th February 2024:

This repository is archived, and all contribution activity now takes place in the fermyon/developer repository.

The public-facing website (that renders these markdown files) is at https://developer.fermyon.com/wasm-languages.


This repository contains the Wasm Language Guide from Fermyon.com. You can see the published version at https://www.fermyon.com/wasm-languages/webassembly-language-support.

The content in this repo (including this page) are formatted to be served directly from Bartholomew.

Contributions

We welcome contributors. To make changes or additions, create new pull requests against this repository.

The content template provides the scaffolding for adding a new language. The About Examples explains how an example should work. (Examples are not required. But when provided, we like to keep them consistent.)

All community members must abide by the Code of Conduct

Adding New Languages

The guide is arranged to break down languages into three categories:

  • Top Languages: This section is reserved for only the languages that trend into the top RedMonk rankings.
  • WebAssembly Languages: These are languages specifically built for WebAssembly. While we love research languages, we do require that languages in this category have reached certain stability levels as well as a moderate amount of usage.
  • Other Notable Languages: This section is the most permissive. Usually, we focus on historically important languages, languages that didn't quite make the top 20, or languages that seem to be gaining momentum.

To add a new language, open a PR that includes a new language page (see tpl.md for a template) and also adds the language to either the WebAssembly Languages or Other Notable Languages section of the wasm-language-support.md page. Please adhere to the format we have provided. Uniformity is an important quality of entries.

Examples

We have chosen a very specific example, which is explained in about-examples.md. Specifically, we want examples that can execute in wasmtime (the reference implementation of the Bytecode Alliance and WASI work), and that can run as Wagi modules. Wagi is an important testbed for two reasons:

  1. Wagi only requires core Wasm and WASI support, and does not require any non-standard host runtime features
  2. Fermyon's goal is to articulate how WebAssembly can run on the cloud, and Wagi is the easiest way to do so

While we appreciate that other runtimes offer their own APIs and features, we do not accept examples that are based on those features.

Updating Existing Entries

We are always interested in updates to the content on language pages. We do have a few brief guidelines:

  • The pros and cons. The tone of pros/cons is objective, oriented toward the developer, and friendly in tone. We will request changes on (or close) PRs that take a negative tone or attempt to use the pros/cons to air grievances or get really nit-picky.
  • Learn More: Include new references, tutorials, or discussions that focus on compiling the language to WebAssembly or using WebAssembly-specific features in the language.
    • For example, we would welcome the addition of a link to an article entitled "Compiling a C++ app to WebAssembly".
    • While the text on the page should focus on core WebAssembly and WASI features, we allow linking off to browser, cloud, and specialty projects that support the language on the page.
  • Examples: Read the previous section and the About Examples document.

There are some pieces of information that we are not interested in:

  • Whether a language has a runtime for WebAssembly. We are not interested in "embedding a Wasm runtime in C++", for example.
  • Non-language projects (like tools or other runtimes). In the future we might add a section for these. But for now, the guide is focused exclusively on languages.

License

The contents of this repository are licensed under the Creative Commons 4.0 Attribution Share-Alike license, usually abbreviated cc4.0-by-sa.

wasm-languages1's People

Contributors

technosophos avatar tpmccallum avatar vdice avatar mikkelhegn avatar jdbohrman avatar jpshackelford avatar kevmoo avatar ereslibre avatar skuzmich avatar flynnduism avatar itowlson avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.