Personal notes on the WebAssembly ecosystem
WebAssembly's unique value proposition:
- Language neutrality: avoid biasing the component model toward just one language or family of languages.
- Embeddability: design components to be embedded in a diverse set of host execution environments, including browsers, servers, intermediaries, small devices and data-intensive systems.
- Optimizability: maximize the static information available to Ahead-of-Time compilers to minimize the cost of instantiation and startup.
- Formal semantics: define the component model within the same semantic framework as core wasm.
- Web platform integration: ensure components can be natively supported in browsers by extending the existing WebAssembly integration points: the JS API, Web API and ESM-integration. Before native support is implemented, ensure components can be polyfilled in browsers via Ahead-of-Time compilation to currently-supported browser functionality.
Wasmer is a fast and secure WebAssembly runtime that enables super lightweight containers to run anywhere: from Desktop to the Cloud, Edge and IoT devices.
https://github.com/paritytech/wasmi
wasmi was conceived as a component of parity-ethereum (ethereum-like contracts in wasm) and substrate. These projects are related to blockchain and require a high degree of correctness. The project is not trying to be be involved in any implementation of any of work-in-progress Wasm proposals. Instead the project tries to be as close as possible to the specification, therefore avoiding features that are not directly supported by the specification.
With all that said wasmi should be a good option for initial prototyping and there shouldn't be a problem migrating from wasmi to another specification compliant execution engine later on.
A TypeScript-like language for WebAssembly.
https://www.assemblyscript.org/
https://github.com/bytecodealliance/wit-bindgen
A language binding generator for WebAssembly interface types
https://github.com/fermyon/spin
An open source framework for building and running fast, secure, and composable cloud microservices with WebAssembly.
https://github.com/WebAssembly/component-model
Repository for design and specification of the Component Model.
https://github.com/proxy-wasm/proxy-wasm-rust-sdk
WebAssembly for Proxies (Rust SDK)
A small and efficient runtime for WebAssembly & WASI.
Low level tooling for WebAssembly in Rust.
https://github.com/bytecodealliance/wasm-tools
https://github.com/WebAssembly/WASI
The WebAssembly System Interface is not a monolithic standard system interface, but is instead a modular collection of standardized APIs. None of the APIs are required to be implemented to have a compliant runtime. Instead, host environments can choose which APIs make sense for their use cases.
https://github.com/deislabs/wagi
Write HTTP handlers in WebAssembly with a minimal amount of work.
https://github.com/singlestore-labs/wasi-data
The goal of this proposal is to define a mechanism for programs compiled to Wasm to represent and drive distributed algorithms, taking advantage of distributed storage and computation systems.
Apache Spark is one such example. The main abstraction Spark provides is a resilient distributed dataset (RDD), which is a fault-tolerant collection of elements that can be operated on in parallel.
https://github.com/WebAssembly/wasi-nn
Neural Network proposal for WASI.
https://github.com/WebAssembly/wasi-parallel
wasi-parallel is a proposal to add a parallel for construct to WASI. It includes:
- an explainer, diving into the rationale for this specification
- the proposed API in WITX form
https://github.com/proxy-wasm/spec
WebAssembly for Proxies (ABI specification)
https://github.com/tetratelabs/wazero
wazero is a WebAssembly 1.0 spec compliant runtime written in Go. It has zero dependencies, and doesn't rely on CGO. This means you can run applications in other languages and still keep cross compilation.
Import wazero and extend your Go application with code written in any language!
https://github.com/mbasso/awesome-wasm
Curated list of awesome things regarding WebAssembly (wasm) ecosystem.
https://github.com/appcypher/awesome-wasm-langs
A curated list of languages that compile directly to or have their VMs in WebAssembly
https://github.com/byrneml/wasm-resources
Another curated list of wasm resources.
https://wasmedge.org/book/en/dev/rust.html
WasmEdge is a lightweight, high-performance, and extensible WebAssembly runtime for cloud native, edge, and decentralized applications. It powers serverless apps, embedded functions, microservices, smart contracts, and IoT devices.
- bytecodealliance - a nonprofit organization dedicated to creating secure new software foundations, building on standards such as WebAssembly and WebAssembly System Interface (WASI).
- deislabs -
- Envoy
- ethereum
- Fermyon - building open source, WebAssembly-powered cloud tools, with the aim of simplifying and unlocking new technologies for all.
- ferrous systems
- Figma
- Lapse
- mozilla
- Open Policy Agent
- RedPanda
- Scylla
- SecondState
- Shopify
- SingleStore
- Tetrate