4 个版本 (2 个重大更改)
0.8.0 | 2022 年 6 月 28 日 |
---|---|
0.7.0 | 2021 年 3 月 1 日 |
0.6.0 | 2020 年 12 月 24 日 |
0.6.0-dev | 2020 年 10 月 7 日 |
#992 in WebAssembly
235KB
5.5K SLoC
Fizzy
这是 Rust 对 Fizzy 的接口,Fizzy 是一个 WebAssembly 虚拟机。
有关更多信息,请参阅 上游仓库。
lib.rs
:
这是对 Fizzy 的 Rust 接口,Fizzy 是一个快速、确定性和严格的 WebAssembly 解释器。
示例
这是一个泛型示例,用于解析和实例化一个模块,并执行一个带有输入和输出的简单函数。
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);
}
无运行时依赖
~0–2MB
~38K SLoC