1 个不稳定版本

0.46.0 2023年10月17日

675WebAssembly 中排名

Download history 192/week @ 2024-04-10 153/week @ 2024-04-17 262/week @ 2024-04-24 199/week @ 2024-05-01 379/week @ 2024-05-08 300/week @ 2024-05-15 256/week @ 2024-05-22 264/week @ 2024-05-29 295/week @ 2024-06-05 208/week @ 2024-06-12 287/week @ 2024-06-19 437/week @ 2024-06-26 264/week @ 2024-07-03 331/week @ 2024-07-10 416/week @ 2024-07-17 388/week @ 2024-07-24

1,487 每月下载量
12 个crate中(直接使用4个)使用

MIT/Apache

305KB
9K SLoC

casper-wasm

注意:此项目是从 https://github.com/paritytech/parity-wasm 分支出来的,因为该仓库已存档且存在需要解决的问题。建议不要使用0.45.0版本的parity-wasm的发布版本。

低级WebAssembly格式库。

文档

Rust WebAssembly格式序列化和反序列化

添加到Cargo.toml

[dependencies]
casper-wasm = "0.46"

然后

let module = casper_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测试套件

casper-wasm支持完整的wasm测试套件,运行涉及反序列化的断言。

要运行测试套件

  • 使用子模块检出(git submodule update --init --recursive
  • 运行 cargo test --release --workspace

解码器可以使用cargo-fuzzwasm-opt进行模糊测试

  • 确保您已安装构建binaryencargo-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]
casper-wasm = { version = "0.46", default-features = false }

许可证

casper-wasm 主要在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发,您可选择其中之一。

请参阅 LICENSE-APACHE 和 LICENSE-MIT 获取详细信息。

贡献

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

无运行时依赖