romantkachuk-okta / wasm3

A high performance WebAssembly interpreter in C

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GitHub issues GitHub license

Wasm3

This is an (experimental) high performance WebAssembly interpreter written in C.

∼ 10x faster than other wasm interpreters (wasm-micro-runtime, wac, life)
∼ 5-6x slower than state of the art wasm JIT engines, like liftoff
∼ 10-15х slower than native execution
* Your mileage may vary

Status

Minimum useful system requirements: ~64Kb for code and ~10Kb RAM

wasm3 currently runs on a wide range of platforms:

  • Linux, Windows, OS X
  • Android
  • 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), etc.
  • OpenWRT-enabled routers
  • Browsers... yes, using WebAssembly itself!
  • TODO: run on wasm3 (should be self-hosting)

wasm3 is built on top of Steven Massey's novel interpreter topology, with:

  • Aim at Wasm 1.0 spec conformance (not there yet)
  • Lot's of bugfixes
  • Portability improvements

Building

See DEV.md

About

A high performance WebAssembly interpreter in C

License:MIT License


Languages

Language:C 68.5%Language:HTML 17.2%Language:C++ 8.2%Language:Python 2.2%Language:Makefile 1.5%Language:CMake 0.8%Language:Shell 0.7%Language:Java 0.3%Language:Assembly 0.3%Language:WebAssembly 0.3%Language:Lua 0.0%Language:JavaScript 0.0%