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 日 |
#643 在 WebAssembly
每月 145 次下载
在 10 个 Crates 中使用 (通过 wasm3)
265KB
6K SLoC
wasm3-rs
> 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-MIT 或 http://opensource.org/licenses/MIT)
依赖项
~7–310KB