#wasm-bytecode #serde #bytecode #interpreter

不依赖 std tetsy-wasm

WebAssembly 低级格式库

显示包…

3 个版本 (破坏性)

0.42.1 2021 年 2 月 11 日
0.41.0 2021 年 3 月 4 日
0.31.1 2021 年 2 月 21 日

#30 in #wasm-bytecode

Download history 573/week @ 2024-03-31 211/week @ 2024-04-07 397/week @ 2024-04-14 388/week @ 2024-04-21 303/week @ 2024-04-28 276/week @ 2024-05-05 280/week @ 2024-05-12 284/week @ 2024-05-19 281/week @ 2024-05-26 249/week @ 2024-06-02 171/week @ 2024-06-09 287/week @ 2024-06-16 320/week @ 2024-06-23 68/week @ 2024-06-30 163/week @ 2024-07-07 308/week @ 2024-07-14

927 每月下载量
182 个包中使用(直接使用 11

MIT/Apache

305KB
8K SLoC

tetsy-wasm

WebAssembly 低级格式库。

Build Status crates.io link

文档

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-fuzzwasm-opthttps://github.com/WebAssembly/binaryen)进行模糊测试

  • 确保您已具备构建 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]
tetsy-wasm = { version = "0.41", default-features = false }

许可证

tetsy-wasm主要根据MIT许可证和Apache许可证(版本2.0)的条款进行分发,您可选择其中之一。

有关详细信息,请参阅LICENSE-APACHE和LICENSE-MIT。

贡献

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

无运行时依赖