1 个稳定版本
1.1.0 | 2022年8月8日 |
---|
1579 在 WebAssembly 中
52 每月下载
在 12 个Crate中(直接使用6个) 使用
94KB
2.5K SLoC
WASM通用总线
WASM通用总线实现了WebAssembly库和可执行文件用于在WASM模块和/或操作系统函数之间调用和接收调用的标准syscall接口。
目前WASM总线支持以下运行时
- Wasmer终端 (https://wasmer.sh/)
此总线支持的功能包括
- WebSocket连接
- HTTP和HTTPS调用
- 启动子进程
- 线程休眠和超时
- 异步运行时引擎
- 客户端调用WASM模块
待办事项
- 启动线程
- 多线程运行时引擎
- 通用日志记录
- 服务器端调用WASM模块
后端实现
为了在您的运行时实现此总线,您需要链接到在此库中公开的ABI并实现函数。
参考实现请见下文
https://github.com/wasmerio/ate/tree/master/wasmer_term/src/bus
示例API
以下是发出特定API的辅助类和序列化对象的简单示例
use wasmer_bus::macros::*;
#[wasmer_bus(format = "json")]
pub trait Time {
async fn sleep(&self, duration_ms: u128);
}
相对对象
还可以发出一系列携带特定上下文的子API
use serde::*;
use std::sync::Arc;
use wasmer_bus::macros::*;
#[wasmer_bus(format = "bincode")]
pub trait SocketBuilder {
async fn connect(
&self,
url: String,
state_change: impl Fn(SocketState),
receive: impl Fn(Vec<u8>),
) -> Arc<dyn WebSocket>;
}
#[wasmer_bus(format = "bincode")]
pub trait WebSocket {
async fn send(&self, data: Vec<u8>) -> SendResult;
}
测试
您可以通过上传到wapm.io并前往Wasmer Shell来测试您的WASI程序
依赖项
~4–10MB
~99K SLoC