0

有一个很棒的名为 Wasmtime 的 webassembly 编译器和虚拟机,它提供对执行的支持而无需任何嵌入,它允许从命令行直接运行 WASM 应用程序https://docs.wasmtime.dev/lang-bash.html

不幸的是,没有通过 WASI 执行 HTTP/网络通信的官方方法,因为 WASI 预览快照中不存在 HTTP/套接字,因此通过 Wasmtime 开发任何有用的应用程序都是有问题的

纯理论上不可能运行一些代理网络服务器,它从主机发出真正的 TCP 连接并通过自定义协议通过文件系统与 Wasmtime 应用程序通信,但它似乎过于复杂并且可能会影响性能不佳

有像https://github.com/deislabs/wasi-experimental-http这样的解决方案,但它不适合,因为需要在 Rust 中编写自定义入口点,安装 Rust 工具链并为一堆目标平台编译它,而不是下载独立的 executalbe来自受信任网站的文件https://wasmtime.dev/

几周前我打开了问题https://github.com/bytecodealliance/wasmtime/issues/3483,但不幸的是没有进展或答案

因此,Wasmtime 团队的主要任务是:如果任何通信功能不可用,那么使用 Wasmtime 运行时开发读取世界应用程序意味着什么?同时,像神经网络这样的外来扩展也在积极开发中,但是 HTTP/原始套接字支持是 MVP 的主要部分

谢谢

4

1 回答 1

1

不幸的是,对此的主要答案是不,WASI 还没有为这种事情做好准备,但它正朝着那个方向前进。

就上下文而言,我是Suborbital的创始人/维护者

例如,我们在主要的 Wasm 运行时(Wasmtime、WasmEdge、Wasmer)之上创建了我们自己的自定义“云 API”集,并将它们公开为Go 库。至少您不需要任何自定义版本,我们将运行时与库捆绑在一起。

目前这是最好的选择,但希望 WASI 将在未来消除对像我们这样的自定义 SDK/API 的需求。

很高兴回答您可能遇到的任何问题!

于 2021-12-16T18:54:08.680 回答