22 releases (14 stable)
new 1.6.0 | May 25, 2023 |
---|---|
1.5.0 | Mar 23, 2023 |
1.3.2 | Nov 22, 2022 |
1.0.1 | Jun 25, 2022 |
0.0.2 | Oct 27, 2020 |
#71 in WebAssembly
649 downloads per month
Used in 3 crates
(2 directly)
38KB
820 lines
Wasmtime Engine Provider
This is a pluggable engine provider for the waPC RPC exchange protocol. This engine implements WebAssemblyEngineProvider
for the the Bytecode Alliance's wasmtime WebAssembly runtime.
Running ping demo
$ cargo run -p wasmtime-provider --example wasmtime-demo ./wasm/crates/wasm-basic/build/wasm_basic.wasm ping "hi"
Running codec and module hotswapping demo
cargo run -p wasmtime-provider --example wasmtime-hash-mreplace AlexName
Example
use wasmtime_provider::WasmtimeEngineProvider;
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 = WasmtimeEngineProvider::new(&module_bytes, None)?;
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(())
}
See also
Dependencies
~14–22MB
~446K SLoC