This week Mozilla, Red Hat, Fastly and Intel have formed an open source Bytecode Alliance that wants to expand the binary format standard WebAssembly past its browser origin so developers can create cross-platform runtimes that work on desktop, mobile and server environments.
At the core of the Alliance is the binary format standard WebAssembly (Wasm), which is supported by all major browsers as of 2017.
The Bytecode Alliance wants to create a secure environment using WebAssembly standards that allows: “Application developers and service providers to confidently run untrusted code, on any infrastructure, for any operating system or device, leveraging decades of experience doing so inside web browsers.”
Using this technology the Bytecode Alliance is collaboration on and creating new runtime components and language tools. So far the Alliance has released the following projects;
Wasmtime is a stand-alone WebAssembly runtime that can be used as a CLI tool or embedded into other systems. It’s very configurable and scalable so that it can serve as the base for many use-case specific runtimes, from small IoT devices all the way up to cloud data centers.
Lucet is an example of a use-case specific runtime. It’s ideal for fast CDNs and Edge Compute, using AOT compilation and other techniques to provide low-latency and high-concurrency. We are refactoring it to use Wasmtime at its core.
WebAssembly Micro Runtime (WAMR) is another use-case specific runtime. It’s ideal for small embedded devices that have extremely limited resources. It provides a small footprint and uses an interpreter to keep memory overhead low.
Cranelift is emerging as a state-of-the-art code generator. It is designed to generate optimized machine code very quickly because it parallelizes compilation on a function-by-function level.
WASI common is a standalone implementation of the WebAssembly System Interface that runtimes can use.
cargo-wasi is a lightweight Cargo subcommand that compiles Rust code to target WebAssembly and the WebAssembly System Interface for outside-the-browser use.
wat and wasmparser parse WebAssembly. wat parses the text format, and wasmparser is an event-driven library for parsing the binary format.
Mark Skarpness VP of Intel Architecture, Graphics, and Software commented in the release that: “Intel is joining the Bytecode Alliance as a founding member to help extend WebAssembly’s performance and security benefits beyond the browser to a wide range of applications and servers. Bytecode Alliance technologies can help developers extend software using a wide selection of languages, building upon the full capabilities of leading-edge compute platforms”