Wasmer Runtime Features
The Wasmer WebAssembly runtime supports different backends:
- Native backends: Singlepass, Cranelift and LLVM Each of these have different tradeoffs of compilation speed vs runtime speed;
- Other runtimes: JavascriptCore and Browser;
Each of this backends support different features, and have different support for Operating Systems and Chipsets.
WebAssembly Features
- Bulk-memory operations: e.g. instructions with behavior similar to C's
memmove
andmemset
in WebAssembly; - Multi-value return: return multiple values from functions making data transfer between host and guest simpler;
- Import & export of mutable globals: adds ability to import and export mutable globals;
- Non-trapping float-to-int conversions: this proposal would establish a convention for saturating operations, to avoid introducing trapping;
- Sign-extension operations: adds five new integer instructions for sign-extending 8-bit, 16-bit, and 32-bit values;
- Reference types: easier and more efficient interop with host environment;
- SIMD: Single Instruction, Multiple data: do heavy number crunching more quickly and/or with lower power usage.
- Threads: adds a new shared linear memory type and some new operations for atomic memory access;
Wasmer features
- Caching: compiled WebAssembly modules can be reused so subsequent runs of a Wasm file will have very little start up time;
- Metering: computation time and other resources can be monitored and limits set to control how the Wasm code runs. This is also known as "gas metering";
Support of features by backend
WebAssembly features:
Singlepass | Cranelift | LLVM | JavascriptCore | Browser | |
---|---|---|---|---|---|
Bulk memory operations | β | β | β | β | β |
Multi-value return | π | β | β | β | β |
Import & export of mutable globals | β | β | β | β | β |
Non-trapping float-to-int conversions | β | β | β | β | β |
Sign-extension operations | β | β | β | β | β |
Reference types | π | β | β | β | β |
SIMD (Phase 4) | β | β | β | β | β |
Threads (Phase 2) | β | β | β | β | β |
Wasmer features:
Features | Singlepass | Cranelift | LLVM | JavascriptCore | Browser |
---|---|---|---|---|---|
Caching | β | β | β | β | β* |
Metering | β | β | β | β | β |
Legend:
- β Supported
- π In the works
- β Not yet supported (please ping us if you need this feature!)
Backend support by Operating System
Linux | macOS | Windows | Browser | |
---|---|---|---|---|
Cranelift | β | β | β | β |
LLVM | β | β | β | β |
Singlepass | β | β | β | β |
JavascriptCore | β | β | β | β |
Browser | β | β | β | β |
Backend support by Chipset
x86_64 | arm64 | x86 | RISC-V | |
---|---|---|---|---|
Cranelift | β | β | β | β |
LLVM | β | β | β | β |
Singlepass | β | β | β | β |
JavascriptCore | β | β | β | β |
Browser | β | β | β | β |