97个版本

0.45.0 2022年5月26日
0.42.2 2021年3月9日
0.42.1 2020年9月1日
0.41.0 2019年10月31日
0.13.0 2017年7月31日

WebAssembly 中排名第1104

Download history 53337/week @ 2024-03-14 57506/week @ 2024-03-21 56442/week @ 2024-03-28 70394/week @ 2024-04-04 62398/week @ 2024-04-11 55765/week @ 2024-04-18 50608/week @ 2024-04-25 46682/week @ 2024-05-02 46159/week @ 2024-05-09 46020/week @ 2024-05-16 57937/week @ 2024-05-23 59543/week @ 2024-05-30 44917/week @ 2024-06-06 48700/week @ 2024-06-13 49727/week @ 2024-06-20 36617/week @ 2024-06-27

每月下载量190,233
用于 816 个Crate(直接使用66个)

MIT/Apache

310KB
9K SLoC

parity-wasm

底层WebAssembly格式库。

Build Status crates.io link

文档

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-fuzzwasm-opt进行模糊测试

  • 确保您已安装所有构建binaryencargo-fuzzcmake和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 获取详细信息。

贡献

除非您明确声明,否则您提交给 parity-wasm 的任何有意包含的贡献,根据 Apache-2.0 许可证的定义,将按照上述方式双重许可,不附加任何额外条款或条件。

无运行时依赖