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
Support of features by Compiler
Runtime features:
Singlepass
Cranelift
LLVM
Emscripten
β
β
β
WASI
β
β
β
WebAssembly features:
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 (Phase 4)
π
π
π
SIMD (Phase 3)
β¬
β
β
Threads (Phase 2)
β
π
β
Support by Operating System
poll_fd
is not fully implemented for Windows yet
Compiler Support by Chipset
x86_64
arm64
x86
Cranelift
β
β
β
LLVM
β
β
β
Singlepass
β
π
β¬
Language Embeddings
Wasmer enables WebAssembly usage in a lot of different languages. Here are some of the features in each of those:
Rust
C / C++
Go
Python
Ruby
Terminate in host call
β
β¬
β¬
β¬
β¬
WASI
β
β
β
β
β¬
WASI FS API
β
β¬
β¬
β¬
β¬
Serialize/Deserialize
β
β
β
β
β¬
Metering
β
β¬
β¬
β¬
β¬
Last updated
Was this helpful?