首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bytecode Alliance宣布服务器端WebAssembly发展愿景

Bytecode Alliance成立一周年之际,WebAssembly 开发者 Lin Clark 和 Till Schneidereit 在博客中宣布,Fastly 已经从 Mozilla 手中收购了部分 WebAssembly 团队。在未来,Mozilla 将继续关注浏览器中的 WASM,尤其是 Firefox 浏览器。另一方面,Fastly 将管理服务器端的 WASM,包括 Fastly 自己的商业 WebAssembly 服务器产品 Compute@Edge。这也导致了 Mozilla 的 wasmtime 和 Fastly Lucet Wasm VM 项目的合并。Lucet 和 wasmtime 共享了很多代码,这次合并确保了它们未来的开发将继续沿着同样的方向进行。

在博文中,Clark 和 Schneidereit 描绘了他们对服务器端 WASM 未来的技术愿景。他们的核心观点是 nanoprocess 模型,它为 WASM 程序提供了一个安全且轻量级的容器,但仍然可以让沙箱内的 WASM 程序很容易与其他 WASM 程序及系统的其他部分通信。

从技术上讲,WASM 在通往nanoprocess的关键路径上有三个增强提议。

第一个增强是 WebAssembly Systems Interface(WASI),它为 WASM 程序提供了一种调用宿主系统标准库函数的方法。在服务器端,也就是指访问文件系统、环境变量、随机数和套接字。现在,多个领先的 WASM 实现都支持 WASI。

WASI 的实现在完整性和性能方面各不相同。例如,谷歌的 V8 使用主机环境的 JavaScript 运行时作为访问操作系统的代理,因此速度很慢。

WASI 方法并不仅限于访问操作系统标准库。这篇博文还讨论了 Bytecode Alliance 倡导的其他类似 WASI 的扩展,比如wasi-socketwasi-nn。除了 Bytecode Alliance 之外,还有很多项目可以让 WASM 访问更多的主机功能。例如,在区块链领域,以太坊 WebAssembly (Ewasm)也是 WASI 的一种形式,它可以让 WASM 访问主机以太坊区块链的用户帐户和交易服务。

第二个增强是接口类型,它可以让 WASM 程序与外部程序通信,无论是在主机操作系统中,还是内嵌了 WASM 的语言运行时(例如,Node.js)中。这个建议还处于早期阶段,还没有得到编译器工具链的支持。但是,wasmtimeSecond State VM已经支持它。目标是让 WASM 程序更强大和具备更强的嵌入能力。

综合起来,WASI 和接口类型让开发人员可以充分利用原生主机系统,同时保持 WASM 沙箱的安全性。早期的一个例子是 Second State VM 为其 WASM 程序提供原生 GPU 访问能力来进行 tensorflow 模型推断。

nanoprocess 的第三个元素是模块链接,除了让 WASM 程序可以调用主机函数外,还可以相互调用。声明模块依赖关系的能力可以支持类似 Node.js NPM 和 Rust Crate.io这样的公共包管理系统,为已经启动的WAPM工作提供补充。

这篇博文参引用了 Bytecode Alliance 为服务器端的 WASM 设计的愿景。与此同时,WASM 开源社区现在比 Bytecode Alliance 要大得多。现在有多种 WASM 虚拟机实现、编程语言的编译器工具链以及主机操作系统和环境(例如,Node.jsDeno区块链)。

原文链接

Bytecode Alliance Lays out Plans for WebAssembly on the Server-side

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/dy6WNQJCEWMwROdxszSc
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券