Repolode
wasm3

wasm3/wasm3

A fast WebAssembly interpreter in C, small enough for microcontrollers and embeddable as a library in many languages.

Stars
8,077
Forks
538
Open issues
21
Last commit
last month

What is it?

Wasm3 is a WebAssembly interpreter written in C. It runs WASM modules without generating native machine code, which keeps the runtime small and portable. The project states minimum requirements of roughly 64 KB of code and 10 KB of RAM, so it targets constrained hardware such as MCUs like ESP32 and Arduino boards as well as Linux, Windows, macOS, Android, and iOS.

The interpreter passes the WebAssembly spec test suite and can run many WASI applications. It supports a range of proposals, including bulk memory operations, exception handling, multiple memories, tail calls, and reference types. Extra features include execution tracing, gas metering, suspend/resume snapshots, and resource caps.

Wasm3 can be used as a standalone tool or embedded as a library. Bindings exist for Python, Rust, Go, Zig, .NET, Swift, Nim, and Arduino/PlatformIO.

Key features

  • 01Interpreter-based execution with no JIT, suited to platforms that forbid runtime code generation
  • 02Passes the WebAssembly spec test suite and runs many WASI apps
  • 03Runs on MCUs such as ESP32 and Arduino with about 64 KB code and 10 KB RAM
  • 04Supports multiple WebAssembly proposals such as bulk memory, exception handling, and tail calls
  • 05Provides gas metering, resource caps, execution tracing, and suspend/resume snapshots

Use cases

  • Running sandboxed plugins or IoT rules on microcontrollers
  • Embedding WASM scripting into a C, Python, Rust, or Go application
  • Executing WASI programs on Linux, Windows, or mobile devices where JIT is unavailable
  • Adding a portable, sandboxed runtime to edge computing or embedded products

Quick start

  1. 1

    Follow the installation instructions linked in the README (docs/Installation.md)

Things to know

  • The maintainer has entered a minimal maintenance phase and is not developing new features, though pull requests are still reviewed and merged.
  • As an interpreter, it is slower than JIT-based WebAssembly runtimes.

In collections

Topics

FAQ

What is wasm3?
A fast WebAssembly interpreter in C, small enough for microcontrollers and embeddable as a library in many languages. Wasm3 is a WebAssembly interpreter written in C. It runs WASM modules without generating native machine code, which keeps the runtime small and portable. The project states minimum requirements of roughly 64 KB of code and 10 KB of RAM, so it targets constrained hardware such as MCUs like ESP32 and Arduino boards as well as Linux, Windows, macOS, Android, and iOS.
Is wasm3 free to use? What license does it have?
wasm3 is open source under the MIT license. Check the license terms before using it in commercial products.
Is wasm3 still maintained?
Updated within 6 months. The last commit to wasm3 was on Sep 30, 2026.
What can I use wasm3 for?
Running sandboxed plugins or IoT rules on microcontrollers Embedding WASM scripting into a C, Python, Rust, or Go application Executing WASI programs on Linux, Windows, or mobile devices where JIT is unavailable Adding a portable, sandboxed runtime to edge computing or embedded products
How do I install wasm3?
Follow the installation instructions linked in the README (docs/Installation.md)
Where can I get wasm3?
The source code and installation instructions are on GitHub: https://github.com/wasm3/wasm3

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects