This repo contains a list of virtual machines and tools that execute the WebAssembly(wasm) format and/or compile it to executable machine code
🚀 - Active development
😴 - Unmaintained (been more than a year since last commit)
- aWsm 🚀
- Chicory 🚀
- CMM of Wasm 😴
- EOSVM 🚀
- Extism 🚀
- FDVM 😴
- Fizzy 🚀
- GraalWASM 🚀
- Happy New Moon With Report 🚀
- inNative 🚀
- Life 😴
- Lucet 🚀
- wasm3 🚀
- Motor 😴
- py-wasm 😴
- Serverless Wasm 😴
- Swam 🚀
- VMIR 😴
- wac 😴
- Wagon 😴
- WAKit 🚀
- Warpy 😴
- WasmEdge 🚀
- Wasmer 🚀
- Wasmi 🚀
- Wasmo 🚀
- WasmRT 😴
- Wasmtime 🚀
- WasmVM 🚀
- WasmVM 😴
- WAVM 😴
- WebAssembly 😴
- WebAssembly Micro Runtime 🚀
- Wizard Research Engine 🚀
- TWVM 🚀
- wazero 🚀
aWsm is a compiler and runtime for compiling WebAssembly (Wasm) code into llvm bytecode, then into sandboxed binaries you can run on various platforms.
-
Languages written in
Rust C -
Compiler framework
LLVM -
Compilation / Execution modes
AOT -
Interoperability with other languages
C -
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS
Chicory is a JVM native WebAssembly runtime. It allows you to run WebAssembly programs with zero native dependencies or JNI.
-
Languages written in
Java -
Compiler framework
JVM -
Compilation / Execution modes
Interpreter AOT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
WASI
-
Non-web standards
N/A
-
Used by
- JRuby (Ruby prism parser)
- Apache Camel
-
Platforms supported
Anywhere the JVM runs
A compiler from WebAssembly to native code, via the OCaml backend.
-
Languages written in
OCaml -
Compiler framework
OCaml Compiler -
Compilation / Execution modes
AOT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS
EOS VM is designed from the ground up for the high demands of blockchain applications which require far more from a WebAssembly engine than those designed for web browsers or standards development.
-
Languages written in
C++ -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Extism's goal is to make all software programmable, and is a flexible, embedded runtime to make it easy to extend your software with WebAssembly.
-
Languages written in
Rust -
Compiler framework
Custom -
Compilation / Execution modes
JIT -
Interoperability with other languages
SDKs to execute WebAssembly in:
PDKs to create WebAssembly plug-ins in:
-
Host APIs supported
- module loading & linking via
Manifest
- WASI
- non-WASI
http_request
- module loading & linking via
-
Platforms supported
Linux macOS Windows
WASM runtime to develop server-side WebAssembly applications.
-
Languages written in
JavaScript -
Compiler framework
NodeJS(V8) -
Compilation / Execution modes
JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Fizzy aims to be a fast, deterministic, and pedantic WebAssembly interpreter written in C++.
-
Languages written in
C++ -
Compiler framework
N/A
-
Compilation / Execution modes
Interpreter -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
WASI -
Non-web standards
WASI -
Used by
N/A
-
Platforms supported
Linux macOS
GraalWasm is a WebAssembly engine implemented in the GraalVM. It can interpret and compile WebAssembly programs in the binary format, or be embedded into other programs.
-
Languages written in
Java -
Compiler framework
GraalVM -
Compilation / Execution modes
JIT -
Interoperability with other languages
Java JVM Graal supported languages -
Non-MVP features supported
-
Host APIs supported
WASI -
Non-web standards
WASI -
Used by
- GraalVM JavaScript - A high performance implementation of the JavaScript programming language.
-
Platforms supported
Linux macOS Windows
Happy New Moon with Report is an open-source implementation of WebAssembly written entirely in Java. It is used to run or test Web Assembly Modules (*.wasm) in Java.
-
Languages written in
Java -
Compiler framework
N/A
-
Compilation / Execution modes
Interpreted -
Interoperability with other languages
Java JVM languages -
Non-MVP features supported
Sign Extensions -
Host APIs supported
N/A
-
Used by
N/A
-
Platforms supported
JVM Linux macOS Windows
An AOT (ahead-of-time) compiler for WebAssembly that creates C compatible binaries, either as sandboxed plugins you can dynamically load, or as stand-alone executables that interface directly with the operating system.
-
Languages written in
C++ -
Compiler framework
LLVM -
Compilation / Execution modes
AOT JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
Threads Multiple Result and Block Parameters Name Section Bulk Memory Operations Sign Extension Instructions Non-trapping Conversion Instructions -
Host APIs supported
Custom -
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Life is a secure & fast WebAssembly VM built for decentralized applications, written in Go by Perlin Network.
-
Languages written in
Go -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Lucet is a native WebAssembly compiler and runtime. It is designed to safely execute untrusted WebAssembly programs inside your application.
NOTE: Lucet is now in maintenance mode. Work has been moved to wasmtime.
-
Languages written in
Rust -
Compiler framework
Cranelift -
Compilation / Execution modes
AOT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
WASI -
Non-web standards
WASI -
Used by
N/A
-
Platforms supported
Linux
🚀 A high performance WebAssembly interpreter
-
Languages written in
C -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
Python C/C++ Rust Go Zig Swift C#/.Net -
Non-MVP features supported
Multi-Value Bulk Memory Operations Sign-extension operators Non-trapping conversions Name Section -
Host APIs supported
WASI Custom -
Non-web standards
WASI Gas Metering -
Used by
-
Platforms supported
Windows Linux
(any arch)macOS
(any arch)FreeBSD
(any arch)Android OpenWRT SBC/MCU Arduino
Motor is a WebAssembly runtime, which aims for secure and efficient execution of WebAssembly programs
-
Languages written in
Rust -
Compiler framework
Dynasm -
Compilation / Execution modes
JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS
A python implementation of the WebAssembly interpreter
-
Languages written in
Python -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
A small demo of Web Assembly's potential outside of browsers
-
Languages written in
Rust -
Compiler framework
Wasmi Cranelift -
Compilation / Execution modes
Interpreted JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
WebAssembly engine in Scala
-
Languages written in
Scala -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
VMIR is a standalone library written in C that can parse and execute WebAssembly and LLVM Bitcode files
-
Languages written in
C -
Compiler framework
LLVM -
Compilation / Execution modes
Interpreted JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
N/A
-
Platforms supported
Linux macOS Windows
A Minimal WebAssembly interpreter written in C.
-
Languages written in
C -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Wagon is a WebAssembly-based interpreter in Go, for Go.
-
Languages written in
Go -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
A WebAssembly runtime written in Swift.
-
Languages written in
Swift -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS
WebAssembly interpreter in RPython.
-
Languages written in
RPython -
Compiler framework
RPython -
Compilation / Execution modes
JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
A lightweight, high-performance, and extensible WebAssembly runtime for cloud native, edge, and decentralized applications. Project under CNCF.
-
Languages written in
C++ -
Compiler framework
LLVM -
Compilation / Execution modes
Interpreter AOT -
Interoperability with other languages
Solidity Rust C/C++ Go/TinyGo JavaScript Python Grain Swift Zig Ruby -
Non-MVP features supported
Bulk Memory Operations SIMD Multi-Memory Multi-Value Reference Types Sign Extension Instructions Non-Trapping Float-to-Int Conversions Mutable Global -
Host APIs supported
WASI Networking Socket TensorFlow Command Interface Image Processing -
Non-web standards
WASI Gas Metering Ethereum Environment Interface Oasis Substrate -
Used by
-
Platforms supported
Linux macOS Windows Android OpenHarmony seL4 RTOS
Wasmer is a standalone WebAssembly runtime for running WebAssembly outside of the browser, supporting WASI and Emscripten.
-
Languages written in
Rust C++ -
Compiler framework
Singlepass Cranelift (Default) LLVM -
Compilation / Execution modes
JIT AOT -
Interoperability with other languages
Rust PHP C C++ Python Go PHP Java Ruby Postgres C#/.Net Elixir R D Swift -
Non-MVP features supported
Threads SIMD Multi Value returns Name Section Bulk Memory Operations Sign Extension Instructions -
Host APIs supported
Emscripten WASI -
Non-web standards
WASI wasm-c-api -
Used by
- Spacemesh Virtual Machine - A Spacemesh smart contracts vm
- CosmWasm - A Cosmos-compatible library for running wasm smart contracts
- NEAR Protocol - The reference client for NEAR protocol
- Dprint - Pluggable and configurable code formatting platform
-
Platforms supported
Linux (x64, aarch64, x86) macOS (x64, arm64) Windows (x64, x86) FreeBSD (x64) Android
A Wasm interpreter.
-
Languages written in
Rust -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
Mutable Globals Sign-extension operators Non-trapping conversions Multi-Value Bulk Memory Operations Reference Types Tail Calls Extended Const -
Host APIs supported
N/A
-
Non-web standards
WASI -
Used by
Substrate smoldot Ayaka Game Engine -
Platforms supported
Linux macOS Windows WebAssembly
A WebAssembly Runtime and Compiler based on LLVM.
-
Languages written in
Rust -
Compiler framework
LLVM -
Compilation / Execution modes
JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
macOS
wasmrt is a runtime built for native execution of WebAssembly modules (virtualized at first, eventually JIT).
-
Languages written in
C++ -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Wasmtime is a standalone wasm-only runtime for WebAssembly, using the Cranelift JIT
-
Languages written in
Rust -
Compiler framework
Cranelift -
Compilation / Execution modes
JIT -
Interoperability with other languages
Python -
Non-MVP features supported
Interface types -
Host APIs supported
WASI -
Non-web standards
WASI wasm-c-api -
Used by
-
Platforms supported
Linux macOS Windows
An unofficial standalone WebAssembly process virtual machine
-
Languages written in
C++ -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
WebAssembly Virtual Machine, which aim to fit embedded systems.
-
Languages written in
Rust -
Compiler framework
Life -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
WebAssembly Virtual Machine, which aim to fit embedded systems.
-
Languages written in
C++ Python -
Compiler framework
LLVM -
Compilation / Execution modes
JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
Threads SIMD Multiple Result and Block Parameters Exception Handling Name Section Reference Types Bulk Memory Operations Sign Extension Instructions -
Host APIs supported
WASI Emscripten WAVIX -
Non-web standards
- WASI
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
An experimental, minimal toolkit and runtime on top of node to produce and run WebAssembly modules
-
Languages written in
JavaScript -
Compiler framework
NodeJS(V8) -
Compilation / Execution modes
JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
WebAssembly Micro Runtime (WAMR) is a standalone WebAssembly (WASM) runtime with small footprint
-
Languages written in
C -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted AOT-Modules JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
-
Host APIs supported
-
Non-web standards
- WASI
-
Used by
N/A
-
Platforms supported
Linux macOS Windows AliOS-Things Android Linux-SGX Nuttx VxWorks Zephyr
A tiny and efficient WebAssembly virtual machine.
-
Languages written in
C++ -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted -
Interoperability with other languages
N/A
-
Non-MVP features supported
N/A
-
Host APIs supported
N/A
-
Non-web standards
N/A
-
Used by
N/A
-
Platforms supported
Linux macOS Windows
Wizard is a WebAssembly 1.0 and 2.0 spec-compliant runtime written in Virgil, with zero platform dependencies. It features a fast interpreter, baseline compilation, and advanced dynamic analysis.
-
Languages written in
Virgil -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
Bulk Memory Operations Import/Export of Mutable Globals Sign-extension operators Multi-Value Returns Name Section Non-trapping float-to-int conversions Reference Types SIMD Tail-call GC Exception Handling -
Host APIs supported
Wave WASI -
Non-web standards
WASI -
Used by
-
Platforms supported
Linux (amd64, x86) macOs (amd64) Java (java5) Wasm 1.0
wazero is a WebAssembly 1.0 and 2.0 spec compliant runtime written in Go, with zero platform dependencies.
-
Languages written in
Go -
Compiler framework
Custom -
Compilation / Execution modes
Interpreted JIT -
Interoperability with other languages
N/A
-
Non-MVP features supported
Bulk Memory Operations Import/Export of Mutable Globals Sign-extension operators Multi-Value Returns Name Section Non-trapping float-to-int conversions Reference Types SIMD -
Host APIs supported
AssemblyScript WASI -
Non-web standards
WASI -
Used by
-
Platforms supported
FreeBSD (amd64) Linux (amd64, arm64, riscv64) macOs (amd64) Windows (amd64)
To the extent possible under law, Steve Akinyemi has waived all copyright and related or neighboring rights to this work.