显示软件包…
1 个不稳定版本
0.45.0 | 2023年7月11日 |
---|
#34 在 #wasm-bytecode
305KB
9K SLoC
parity-wasm
低级 WebAssembly 格式库。
Rust WebAssembly 格式序列化/反序列化
添加到 Cargo.toml
[dependencies]
parity-wasm = "0.42"
然后
let module = parity_wasm::deserialize_file("./res/cases/v1/hello.wasm").unwrap();
assert!(module.code_section().is_some());
let code_section = module.code_section().unwrap(); // Part of the module with functions code
println!("Function count in wasm file: {}", code_section.bodies().len());
Wabt 测试套件
parity-wasm
支持 wasm 测试套件,运行涉及反序列化的断言。
要运行测试套件
- 检出子模块(
git submodule update --init --recursive
) - 运行
cargo test --release --workspace
解码器可以使用 cargo-fuzz
与 wasm-opt
进行模糊测试
- 确保您已安装所有构建
binaryen
和cargo-fuzz
的先决条件(cmake
和 C++11 工具链) - 检出子模块(
git submodule update --init --recursive
) - 使用
cargo fuzz
命令安装cargo install cargo-fuzz
- 将 rustup 设置为使用夜间工具链,因为
cargo fuzz
使用 rust 编译器插件:rustup override set nightly
- 运行
cargo fuzz run deserialize
no_std
软件包
该软件包有一个默认启用的 std
功能。要在 no_std
上下文中使用此软件包,请将以下内容添加到您的 Cargo.toml
(仍需要分配器)
[dependencies]
parity-wasm = { version = "0.41", default-features = false }
许可协议
parity-wasm
主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发,任选其一。
有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您提交给parity-wasm的任何有意贡献均应双重许可,如上所述,不得添加任何额外条款或条件。