7个版本

0.3.1 2021年9月19日
0.3.0 2021年9月6日
0.2.0 2021年8月19日
0.1.3 2020年9月22日
0.1.1 2020年5月22日

#238 in WebAssembly

Download history 46/week @ 2024-04-22 27/week @ 2024-04-29 34/week @ 2024-05-06 44/week @ 2024-05-13 57/week @ 2024-05-20 61/week @ 2024-05-27 39/week @ 2024-06-03 36/week @ 2024-06-10 27/week @ 2024-06-17 56/week @ 2024-06-24 2/week @ 2024-07-01 47/week @ 2024-07-08 62/week @ 2024-07-15 19/week @ 2024-07-22 72/week @ 2024-07-29 35/week @ 2024-08-05

190 每月下载量
用于 9 个crate (5个直接使用)

MIT 许可证

320KB
7K SLoC

C 5.5K SLoC // 0.1% comments Rust 1.5K SLoC // 0.0% comments Python 12 SLoC

wasm3-rs

Build Crates.io Docs.rs Tokei

> wasm3-rs 正在寻找维护者 <

Rust对 WASM3 的包装。

目前这还是一个正在进行中的项目,可能不完全稳定。

示例

一个简单的 示例,它加载一个wasm模块并执行一个导出的函数来将两个 i64 相加。

use wasm3::Environment;
use wasm3::Module;

fn main() {
    let env = Environment::new().expect("Unable to create environment");
    let rt = env
        .create_runtime(1024)
        .expect("Unable to create runtime");
    let module = Module::parse(&env, &include_bytes!("wasm/wasm_add/wasm_add.wasm")[..])
        .expect("Unable to parse module");

    let module = rt.load_module(module).expect("Unable to load module");
    let func = module
        .find_function::<(i64, i64), i64>("add")
        .expect("Unable to find function");
    println!("Wasm says that 3 + 6 is {}", func.call(3, 6).unwrap())
}

构建

此crate目前不使用wasm3的cmake项目,这意味着目前不需要cmake来构建它。但是,如果未设置build-bindgen功能,则需要安装Clang 9以及Bindgen

通过子模块包含wasm3的C源代码,因此在构建之前必须初始化子模块,这可以通过以下方式完成:

git submodule update --init

然后,要构建项目,请运行

cargo install bindgen
cargo build --release

# or:
cargo build --release --features build-bindgen

# or, enable only specific features:
cargo build --release --no-default-features --features build-bindgen,std,use-32bit-slots,wasi

构建和运行示例

rustup target add wasm32-unknown-unknown

python wasm_bin_builder.py ./examples/wasm/wasm_add
cargo run --example call_wasm

python wasm_bin_builder.py ./examples/wasm/wasm_print
cargo run --example wasm_print

许可证

MIT许可证下授权(LICENSE-MIThttp://opensource.org/licenses/MIT

依赖项

~7–300KB