Runtime
Features

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 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;

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:

SinglepassCraneliftLLVMJavascriptCoreBrowser
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:

FeaturesSinglepassCraneliftLLVMJavascriptCoreBrowser
Cachingβœ…βœ…βœ…βŒβŒ*
Meteringβœ…βœ…βœ…βŒβŒ

Legend:

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

Backend support by Operating System

LinuxmacOSWindowsBrowser
Craneliftβœ…βœ…βœ…βŒ
LLVMβœ…βœ…βœ…βŒ
Singlepassβœ…βœ…βœ…βŒ
JavascriptCoreβœ…βœ…βœ…βŒ
Browserβœ…βœ…βœ…βœ…

Backend support by Chipset

x86_64arm64x86RISC-V
Craneliftβœ…βœ…βœ…βœ…
LLVMβœ…βœ…βœ…βœ…
Singlepassβœ…βœ…βŒβŒ
JavascriptCoreβœ…βœ…βœ…βŒ
Browserβœ…βœ…βœ…βœ…