On Apple M4, Silverfir-nano beats Wasmtime's Cranelift on multiple benchmarks and goes head-to-head with V8 TurboFan, while staying ultra-compact and no_std-compatible.
All benchmarks on Apple M4 (MacBook Air, macOS 26). Silverfir vs Wasmtime Cranelift (optimizing JIT) and V8 TurboFan (Node.js 25.4).
See the charts above and full benchmark results for numbers.
- Competes with optimizing JITs — beats Cranelift on CoreMark and Lua benchmarks, beats V8 on STREAM and floating-point workloads
- Ultra-compact — the minimal
no_stdJIT binary is just 277 KB stripped, with zero runtime dependencies - Full WebAssembly 2.0 — multi-value, reference types, bulk memory, multiple tables
no_std— core library requires onlyalloc; runs on embedded and bare-metal
Silverfir-nano uses a micro-JIT that translates WebAssembly to native ARM64 machine code at function granularity. Key techniques:
- Native code generation — direct ARM64 emission, no interpreter dispatch overhead
- Register allocation — maps WebAssembly locals and stack to hardware registers
- Inline operations — arithmetic, comparisons, and memory access compiled to native instructions
If you need a pure interpreter without JIT (e.g., for platforms without executable memory), check out the interp branch:
git checkout interpThis branch includes the fast interpreter with instruction fusion and register caching, but no native code generation.
# Default build (micro-JIT)
cargo build --release
# Run a WASI program
./target/release/sf-nano-cli program.wasm [args...]
# Run benchmarks
python3 benchmarks/wasi/run_tests.py
# Run benchmarks in V8 (Node.js)
node benchmarks/wasi/run_v8.mjs
# Minimal no_std build (277 KB, no WASI, JIT only)
# Must be built standalone (excluded from workspace due to no_std)
cd sf-nano-cli-minimal && cargo run --releaseTested against the official WebAssembly spec testsuite:
- Multi-value returns
- Reference types (
funcref,externref) - Bulk memory operations
- Multiple tables
- Mutable globals import/export
MIT / Apache-2.0