6 个版本 (2 个稳定版)

1.1.0 2023 年 3 月 23 日
1.0.0 2022 年 2 月 10 日
1.0.0-alpha.02022 年 1 月 21 日
0.0.3 2021 年 10 月 12 日
0.0.1 2020 年 9 月 23 日

#737 in WebAssembly

Download history 21/week @ 2024-03-31 92/week @ 2024-04-21 5/week @ 2024-04-28 1/week @ 2024-05-26

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

Apache-2.0

17KB
349

Wasm3 引擎提供商

crates.io license

这是一个为 waPC RPC 交换协议的可插拔引擎提供商。此引擎实现了 WebAssemblyEngineProvider,用于基于 C、由 wasm3 实现的解析式 WebAssembly 运行时。

运行示例

$ cargo run -p wasm3-provider --example wasm3-demo ./wasm/crates/wasm-basic/build/wasm_basic.wasm ping "hi"

示例

use wasm3_provider::Wasm3EngineProvider;
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 = Wasm3EngineProvider::new(&module_bytes);
  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(())
}

另请参阅

依赖项

~1.2–10MB
~78K SLoC