Wasmer Features
The Wasmer WebAssembly runtime provides various features for users and developers:
- Compilers: Wasmer supports multiple compilers: Singlepass, Cranelift and LLVM. Each of these have different tradeoffs of compilation speed vs runtime speed;
- 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";
- 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;
- ABIs: it allows running different types of programs compiled to WebAssembly, with ABIs such as:
- Emscripten
- WASI
Runtime features:
Text | Singlepass | Cranelift | LLVM |
---|---|---|---|
Emscripten | ✅ | ✅ | ✅ |
WASI | ✅ | ✅ | ✅ |
WebAssembly features:
Text | Singlepass | Cranelift | LLVM |
---|---|---|---|
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) | ✅ | 🔄 | ✅ |
Text | Linux | macOS | Windows |
---|---|---|---|
Cranelift | ✅ | ✅ | ✅ |
LLVM | ✅ | ✅ | ✅ |
Singlepass | ✅ | ✅ | ✅ |
WASI | ✅ | ✅ | ✅* |
*
poll_fd
is not fully implemented for Windows yetText | x86_64 | arm64 | x86 |
---|---|---|---|
Cranelift | ✅ | ✅ | ✅ |
LLVM | ✅ | ✅ | ✅ |
Singlepass | ✅ | 🔄 | ⬜ |
Wasmer enables WebAssembly usage in a lot of different languages. Here are some of the features in each of those:
Text | Rust | C / C++ | Go | Python | Ruby |
---|---|---|---|---|---|
Terminate in host call | ✅ | ⬜ | ✅ | ✅ | ✅ |
WASI | ✅ | ✅ | ✅ | ✅ | ✅ |
WASI FS API | ✅ | ⬜ | ⬜ | ⬜ | ⬜ |
Serialize/Deserialize | ✅ | ✅ | ✅ | ✅ | ✅ |
Metering | ✅ | ⬜ | ⬜ | ⬜ | ⬜ |
Last modified 1yr ago