75 个版本 (重大变更)

新版本 0.216.0 2024 年 8 月 22 日
0.215.0 2024 年 7 月 31 日
0.214.0 2024 年 7 月 16 日
0.202.0 2024 年 3 月 26 日
0.1.0 2020 年 11 月 23 日

#47WebAssembly 中排名

Download history 210517/week @ 2024-05-02 226345/week @ 2024-05-09 232061/week @ 2024-05-16 228340/week @ 2024-05-23 242054/week @ 2024-05-30 215395/week @ 2024-06-06 243281/week @ 2024-06-13 251905/week @ 2024-06-20 248397/week @ 2024-06-27 230966/week @ 2024-07-04 270994/week @ 2024-07-11 276950/week @ 2024-07-18 273919/week @ 2024-07-25 267119/week @ 2024-08-01 265991/week @ 2024-08-08 261857/week @ 2024-08-15

1,117,183 每月下载量
用于 662 个软件包 (60 个直接使用)

Apache-2.0…

725KB
17K SLoC

wasm-encoder

Bytecode Alliance 项目

Rust 的 WebAssembly 编码器。

Crates.io version Download docs.rs docs

使用方法

wasm-encoder 添加到您的 Cargo.toml

$ cargo add wasm-encoder

然后您可以通过以下方式编码 WebAssembly 二进制文件:

use wasm_encoder::{
    CodeSection, ExportKind, ExportSection, Function, FunctionSection, Instruction,
    Module, TypeSection, ValType,
};

let mut module = Module::new();

// Encode the type section.
let mut types = TypeSection::new();
let params = vec![ValType::I32, ValType::I32];
let results = vec![ValType::I32];
types.function(params, results);
module.section(&types);

// Encode the function section.
let mut functions = FunctionSection::new();
let type_index = 0;
functions.function(type_index);
module.section(&functions);

// Encode the export section.
let mut exports = ExportSection::new();
exports.export("f", ExportKind::Func, 0);
module.section(&exports);

// Encode the code section.
let mut codes = CodeSection::new();
let locals = vec![];
let mut f = Function::new(locals);
f.instruction(&Instruction::LocalGet(0));
f.instruction(&Instruction::LocalGet(1));
f.instruction(&Instruction::I32Add);
f.instruction(&Instruction::End);
codes.function(&f);
module.section(&codes);

// Extract the encoded Wasm bytes for this module.
let wasm_bytes = module.finish();

// We generated a valid Wasm module!
assert!(wasmparser::validate(&wasm_bytes).is_ok());

许可证

本项目采用 Apache 2.0 许可证及 LLVM 异常。有关详细信息,请参阅 LICENSE

贡献

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

依赖项