37 个版本 (稳定版)
新 1.20.0 | 2024 年 8 月 5 日 |
---|---|
1.19.1 | 2024 年 7 月 11 日 |
1.18.0 | 2024 年 5 月 30 日 |
1.16.0 | 2024 年 3 月 26 日 |
0.0.2 | 2020 年 10 月 27 日 |
#218 在 WebAssembly 中
每月 2,462 次下载
在 3 个 crate 中使用 (2 个直接使用)
39KB
816 行
Wasmtime 引擎提供者
这是 waPC RPC 交换协议的可插拔引擎提供者。此引擎实现了 Bytecode Alliance 的 wasmtime WebAssembly 运行时的 WebAssemblyEngineProvider
。
运行 ping 示例
$ cargo run -p wasmtime-provider --example wasmtime-demo ./wasm/crates/wasm-basic/build/wasm_basic.wasm ping "hi"
运行编解码器和模块热插拔示例
cargo run -p wasmtime-provider --example wasmtime-hash-mreplace AlexName
示例
use wasmtime_provider::WasmtimeEngineProviderBuilder;
use wapc::WapcHost;
use std::error::Error;
pub fn main() -> Result<(), Box<dyn Error>> {
// Sample host callback that prints the operation a WASM module requested.
let host_callback = |id: u64, bd: &str, ns: &str, op: &str, payload: &[u8]| {
println!("Guest {} invoked '{}->{}:{}' with a {} byte payload",
id, bd, ns, op, payload.len());
// Return success with zero-byte payload.
Ok(vec![])
};
let file = "../../wasm/crates/wasm-basic/build/wasm_basic.wasm";
let module_bytes = std::fs::read(file)?;
let engine = WasmtimeEngineProviderBuilder::new()
.module_bytes(&module_bytes)
.build()?;
let host = WapcHost::new(Box::new(engine), Some(Box::new(host_callback)))?;
let res = host.call("ping", b"payload bytes")?;
assert_eq!(res, b"payload bytes");
Ok(())
}
另请参阅
依赖项
~12–26MB
~402K SLoC