#wasm-bytecode #wasm-binary #wasm-interpreter #interpreter #bytecode #binary-format

无 std susy-wasm

WebAssembly 二进制格式序列化/反序列化/解释器

1 个不稳定版本

使用旧的 Rust 2015

0.31.3 2019 年 3 月 16 日

#1230 in WebAssembly


4 crates 中使用

MIT/Apache

230KB
6.5K SLoC

susy-wasm

低级 WebAssembly 格式库。

Build Status crates.io link

文档

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

添加到 Cargo.toml

[dependencies]
susy-wasm = "0.31"

然后


extern crate susy_wasm;

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

susy-wasm 支持 Wabt 测试套件 (https://github.com/WebAssembly/testsuite),它涉及反序列化。

要运行测试套件

  • 请确保您已安装所有构建 wabt 的先决条件(由于 susy-wasm 在内部使用 wabt 构建,它需要 wabt 来运行测试套件)
  • 运行以下命令来构建 wabt
  • 对于 Windows 系统:

请确保您已安装 Pythonpip,然后运行以下命令:

  • pip install wabt
  • 运行以下命令来构建 wabt
  • 对于 Linux 和 macOS 系统:
  • 请确保您已安装 Pythonpip,然后运行以下命令:
  • pip install wabt

构建完成后,您可以使用以下命令运行测试套件:

此包具有一个默认启用的功能,即 std。要在 no_std 环境中使用此包,请在您的 Cargo.toml 中添加以下内容:

[dependencies]
susy-wasm = { version = "0.31", default-features = false }

在分配器 API 稳定之前,此类用法仅限于 nightly Rust。

许可证

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

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

贡献

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

依赖项