4 releases (2 breaking)

0.8.0 Jun 28, 2022
0.7.0 Mar 1, 2021
0.6.0 Dec 24, 2020
0.6.0-dev Oct 7, 2020

#758 in WebAssembly


5.5K SLoC

C++ 4.5K SLoC // 0.1% comments Rust 1K SLoC // 0.1% comments Shell 7 SLoC // 0.4% comments


This is a Rust interface to Fizzy, a WebAssembly virtual machine.

Please refer to the upstream repository for more information.


This is a Rust interface to Fizzy, a fast, deterministic, and pedantic WebAssembly interpreter.


This is a generic example for parsing and instantiating a module, and executing a simple function with inputs and an output.

extern crate fizzy;

fn main() {
    // This wasm binary exports a single sum(u32, u32) -> u32 function.
    let wasm = [
        0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x01, 0x07, 0x01, 0x60, 0x02, 0x7f,
        0x7f, 0x01, 0x7f, 0x03, 0x02, 0x01, 0x00, 0x07, 0x07, 0x01, 0x03, 0x73, 0x75, 0x6d,
        0x00, 0x00, 0x0a, 0x09, 0x01, 0x07, 0x00, 0x20, 0x00, 0x20, 0x01, 0x6a, 0x0b,
    let module = fizzy::parse(&wasm).expect("parsing failed");
    let mut instance = module.instantiate().expect("instantiation failed");
    let result = instance
            &[fizzy::TypedValue::U32(42), fizzy::TypedValue::U32(24)],
        .expect("execution failed");
    let result = result
        .expect("return value expected")
        .expect("u32 expected as a return type");
    assert_eq!(result, 66);

No runtime deps

~33K SLoC