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 日

#218WebAssembly

Download history 497/week @ 2024-04-15 1012/week @ 2024-04-22 227/week @ 2024-04-29 504/week @ 2024-05-06 207/week @ 2024-05-13 370/week @ 2024-05-20 403/week @ 2024-05-27 198/week @ 2024-06-03 255/week @ 2024-06-10 724/week @ 2024-06-17 443/week @ 2024-06-24 238/week @ 2024-07-01 465/week @ 2024-07-08 431/week @ 2024-07-15 672/week @ 2024-07-22 894/week @ 2024-07-29

每月 2,462 次下载
3 个 crate 中使用 (2 个直接使用)

Apache-2.0

39KB
816

Wasmtime 引擎提供者

crates.io license

这是 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