#bindings #wasm3

sys wasm3-sys

Wasm3 的原始 ffi 绑定

4 个版本

0.3.0 2021 年 9 月 19 日
0.1.2 2020 年 9 月 22 日
0.1.1 2020 年 5 月 22 日
0.1.0 2020 年 5 月 22 日

#643WebAssembly

Download history 39/week @ 2024-03-11 47/week @ 2024-03-18 45/week @ 2024-03-25 74/week @ 2024-04-01 26/week @ 2024-04-08 23/week @ 2024-04-15 60/week @ 2024-04-22 42/week @ 2024-04-29 42/week @ 2024-05-06 37/week @ 2024-05-13 34/week @ 2024-05-20 45/week @ 2024-05-27 32/week @ 2024-06-03 25/week @ 2024-06-10 35/week @ 2024-06-17 51/week @ 2024-06-24

每月 145 次下载
10 个 Crates 中使用 (通过 wasm3)

MIT 许可证

265KB
6K SLoC

C 5.5K SLoC // 0.1% comments Rust 156 SLoC // 0.0% comments

SWUbanner

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–310KB