Wasmer Features
The Wasmer WebAssembly runtime provides various features for users and developers:
Backends: Wasmer supports multiple compiler backends: 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:
Multi-value return: return multiple values from functions making data transfer between host and guest simpler;
SIMD: Single Instruction, Multiple data: do heavy number crunching more quickly and/or with lower power usage.
ABIs: it allows running different types of programs compiled to WebAssembly, with ABIs such as:
Emscripten
WASI
Support of features by Backend
Singlepass | Cranelift | LLVM | |
Caching | ✅ | ✅ | ✅ |
Emscripten | ✅ | ✅ | ✅ |
Metering | ✅ | ✅ | ✅ |
Multi-value return | ✅ | ✅ | ✅ |
SIMD | ⬜ | ⬜ | ✅ |
WASI | ✅ | ✅ | ✅ |
| ✅ | ⬜ | ⬜ |
Support by Operating System
GNU Linux | Mac OSX | Windows NT | |
Cranelift Backend | ✅ | ✅ | ✅ |
LLVM Backend | ✅ | ✅ | ✅ |
Singlepass Backend | ✅ | ✅ | |
WASI | ✅ | ✅ | ✅* |
poll_fd
is not fully implemented for Windows yet
Language integration
TODO: define a set of features that are relevant and mark them here
Current ideas:
Callbacks
Metering
Caching
TODO: expand this table, it's focused on new features that we haven't implemented yet and doesn't list all language integrations
Rust | C / C++ | Go | Python | Ruby | |
Terminate in host call | ✅ | ⬜ | ⬜ | ⬜ | ⬜ |
WASI | ✅ | ✅ | 🔄 | ⬜ | ⬜ |
WASI FS API | ✅ | ⬜ | ⬜ | ⬜ | ⬜ |
Last updated