Expand description
This is a Rust interface to Fizzy, a fast, deterministic, and pedantic WebAssembly interpreter.
Examples
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
.execute(
"sum",
&[fizzy::TypedValue::U32(42), fizzy::TypedValue::U32(24)],
)
.expect("execution failed");
let result = result
.expect("return value expected")
.as_u32()
.expect("u32 expected as a return type");
assert_eq!(result, 66);
}
Structs
The result of an execution.
An instance of a module.
A parsed and validated WebAssembly 1.0 module.
Enums
The various kinds of errors, which can be returned by any of the interfaces.
A WebAssembly value i32/i64/f32/f64 with its type specified.
Functions
Parse and validate the input according to WebAssembly 1.0 rules.
Parse and validate the input according to WebAssembly 1.0 rules. Returns true if the supplied input is valid.
Type Definitions
A WebAssembly value of i32/i64/f32/f64.