11 个版本 (2 个稳定版)

1.1.0 2022年3月6日
1.0.0 2022年2月1日
0.5.0 2022年1月8日
0.4.1 2022年1月8日
0.1.1 2021年11月27日

#1198WebAssembly

Download history 46/week @ 2024-03-11 51/week @ 2024-03-18 56/week @ 2024-03-25 70/week @ 2024-04-01 43/week @ 2024-04-08 41/week @ 2024-04-15 50/week @ 2024-04-22 55/week @ 2024-04-29 32/week @ 2024-05-06 56/week @ 2024-05-13 33/week @ 2024-05-20 42/week @ 2024-05-27 39/week @ 2024-06-03 39/week @ 2024-06-10 27/week @ 2024-06-17 59/week @ 2024-06-24

164 每月下载量
用于 12 个Crate(直接使用10个)

MIT/Apache

95KB
2.5K SLoC

WASM通用总线

WASM通用总线实现了WebAssembly库和可执行文件用于调用和接收WASM模块与/或操作系统函数的标准syscall接口。

目前WASM总线由以下运行时支持

此总线支持的功能包括

  • WebSocket连接
  • HTTP和HTTPS调用
  • 启动子进程
  • 线程休眠和超时
  • 异步运行时引擎
  • 客户端调用WASM模块

待办事项

  • 启动线程
  • 多线程运行时引擎
  • 通用日志
  • 服务器端调用WASM模块

后端实现

为了在您的运行时实现此总线,您需要链接到库中公开的ABI并实现这些函数。

参考实现请见以下

https://github.com/tokera-com/ate/tree/master/tokterm/src/bus

示例API

以下是如何为特定API生成辅助类和序列化对象的简单示例

use wasm_bus::macros::*;

#[wasm_bus(format = "json")]
pub trait Time {
    async fn sleep(&self, duration_ms: u128);
}

相对对象

还可以生成一系列子API,它们携带一些特定的上下文

use serde::*;
use std::sync::Arc;
use wasm_bus::macros::*;

#[wasm_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>;
}

#[wasm_bus(format = "bincode")]
pub trait WebSocket {
    async fn send(&self, data: Vec<u8>) -> SendResult;
}

测试

您可以通过上传到wapm.io并转到Tokera Shell来测试您的WASI程序

https://tokera.sh

依赖项

~3.5–5.5MB
~97K SLoC