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:

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)

βœ…

πŸ”„

βœ…

Legend

  • βœ… Supported

  • πŸ”„ In the works

  • ⬜ Not yet supported (please ping us if you need this feature!)

Support by Operating System

Linux

macOS

Windows

Cranelift

βœ…

βœ…

βœ…

LLVM

βœ…

βœ…

βœ…

Singlepass

βœ…

βœ…

WASI

βœ…

βœ…

βœ…*

  • 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?