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:

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

Singlepass

Cranelift

LLVM

Caching

βœ…

βœ…

βœ…

Emscripten

βœ…

βœ…

βœ…

Metering

βœ…

βœ…

βœ…

Multi-value return

πŸ”„

βœ…

βœ…

SIMD

⬜

βœ…

βœ…

WASI

βœ…

βœ…

βœ…

WASMER_BACKTRACE

βœ…

βœ…

⬜

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?