Wasm3 – A high performance WebAssembly interpreter in C
Wasm3
A high performance WebAssembly interpreter written in C.
∼ 15.8x faster than other wasm interpreters (wac
, life
, wasm-micro-runtime
)
∼ 4..5x slower than state of the art wasm JIT
engines (liftoff
, cranelift
)
∼ 11.5x slower than native execution
* Based on CoreMark 1.0 benchmark. Your mileage may vary.
Getting Started
Here's an online demo and a small getting started guide:
Status
wasm3
passes the WebAssembly spec testsuite and is able to run many WASI
apps.
Minimum useful system requirements: ~64Kb for code and ~10Kb RAM
wasm3
runs on a wide range of platforms:
- Linux, Windows, OS X
- Android, iOS
- Raspberry Pi, Orange Pi and other SBCs
- MCUs:
Arduino MKR*, Arduino Due, Particle Photon,
ESP8266, ESP32, Air602 (W600), nRF52, nRF51,
Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166),
Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K), ATmega1284 etc. - OpenWRT-enabled routers
- Browsers... yes, using WebAssembly itself!
-
wasm3
can executewasm3
(self-hosting)
wasm3
is built on top of Steven Massey's novel interpreter topology, with:
- Wasm 1.0 spec conformance
WASI
support- Support of
x86
,x64
,ARM
,MIPS
,RISC-V
,Xtensa
architectures
Building
See DEV.md
Testing & Fuzzing
See test/README.md
License
This project is released under The MIT License (MIT)
from Hacker News https://github.com/wasm3/wasm3