显示包…
3 个版本 (破坏性)
0.42.1 | 2021 年 2 月 11 日 |
---|---|
0.41.0 | 2021 年 3 月 4 日 |
0.31.1 | 2021 年 2 月 21 日 |
#30 in #wasm-bytecode
927 每月下载量
在 182 个包中使用(直接使用 11)
305KB
8K SLoC
tetsy-wasm
WebAssembly 低级格式库。
Rust WebAssembly 格式序列化/反序列化
添加到 Cargo.toml
[dependencies]
tetsy-wasm = "0.42"
然后
let module = tetsy_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 测试套件
tetsy-wasm
支持 Wabt 测试套件(https://github.com/WebAssembly/testsuite),运行涉及反序列化的断言。
要运行测试套件
- 确保您已具备构建
wabt
的所有先决条件(因为 tetsy-wasm 内部使用wabt-rs
构建,请参阅 https://github.com/WebAssembly/wabt) - 使用子模块检出(
git submodule update --init --recursive
) - 运行
cargo test --release --manifest-path=spec/Cargo.toml
解码器可以使用 cargo-fuzz
和 wasm-opt
(https://github.com/WebAssembly/binaryen)进行模糊测试
- 确保您已具备构建
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]
tetsy-wasm = { version = "0.41", default-features = false }
许可证
tetsy-wasm
主要根据MIT许可证和Apache许可证(版本2.0)的条款进行分发,您可选择其中之一。
有关详细信息,请参阅LICENSE-APACHE和LICENSE-MIT。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在tetsy-wasm中的任何贡献,将如上所述双重许可,不附加任何额外条款或条件。