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
190 每月下载量
用于 9 个crate (5个直接使用)
320KB
7K 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–300KB