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 and memset 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:
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)
βœ…
πŸ”„
βœ…

Legend

  • βœ… Supported
  • πŸ”„ In the works
  • ⬜ Not yet supported (please ping us if you need this feature!)

Support by Operating System

Text
Linux
macOS
Windows
Cranelift
βœ…
βœ…
βœ…
LLVM
βœ…
βœ…
βœ…
Singlepass
βœ…
βœ…
βœ…
WASI
βœ…
βœ…
βœ…*
* poll_fd is not fully implemented for Windows yet

Compiler Support by Chipset

Text
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:
Text
Rust
C / C++
Go
Python
Ruby
Terminate in host call
βœ…
⬜
βœ…
βœ…
βœ…
WASI
βœ…
βœ…
βœ…
βœ…
βœ…
WASI FS API
βœ…
⬜
⬜
⬜
⬜
Serialize/Deserialize
βœ…
βœ…
βœ…
βœ…
βœ…
Metering
βœ…
⬜
⬜
⬜
⬜
Copy link
On this page
Support of features by Compiler
Support by Operating System
Compiler Support by Chipset
Language Embeddings