今天,我们宣布了一个新的标准化流程——WASI,一个WebAssembly的系统接口。
Why: 开发者开始想要尝试在浏览器以外的地方使用WebAssembly,因为其提供了一个快速的、可伸缩的、安全的方式来在不同平台运行相同的代码。
但是我们对此却并没有一个坚实的基础。在浏览器外运行代码需要一种与操作系统交互的方式——系统接口。然而WebAssembly平台目前却没有这样的东西。
What: WebAssembly作为一种汇编语言,针对的是一种概念上的计算机(抽象),而不是某一特定物理机平台。这就是为什么其可以跨平台地运行在不同的架构与系统上。
正因为WebAssembly是一种针对概念计算机的汇编语言,WebAssembly需要一组针对概念操作系统的系统接口,而不是某种特定平台的。只有这样,其才可以实现跨平台运行。
这就是WASI——针对WebAssembly平台的系统接口。
我们的目标是构建一个能够真正与WebAssembly配套的系统接口,并且能经受住时间的考验。这就意味着必须支持WebAssembly的两个关键原则——可移植性与安全性。
Who: 我们正在组建一个WebAssembly小组,专注于WASI标准化。我们已经聚集了感兴趣的合作伙伴,并正在寻找更多的合作伙伴。 以下是我们和我们的合作伙伴以及支持者认为这很重要的一些原因:
Sean White, Chief R&D Officer of Mozilla
“WebAssembly已经在改变网络给人们带来新的引人注目的内容的方式,并赋予开发者和创造者在网络上做最好工作的能力。到目前为止,这都是通过浏览器实现的,但是有了WASI,我们可以将WebAssembly和网络的优势传递给更多的用户、更多的地方、更多的设备,并作为更多体验的一部分。”Tyler McMullen, CTO of Fastly
“我们正在将WebAssembly超越浏览器,作为在我们的edge cloud中快速、安全执行代码的平台。尽管我们的edge和浏览器在环境上有所不同,但WASI意味着WebAssembly的开发人员不必将他们的代码移植到每个不同的平台上。”Myles Borins, Node Technical Steering committee director
“WebAssembly可以解决Node 最大的问题之一:获得接近原生的速度,并像使用Native模块一样重用使用C和C++等其他语言编写的代码,同时仍然保持可移植性和安全性。标准化这个系统接口是实现这一目标的第一步。”Laurie Voss, co-founder of npm
“npm对此感到非常的兴奋,因为WebAssembly显示了其在扩展npm生态系统能力、以及极大地简化让原生代码在服务器端JavaScript程序中运行的过程的潜力。我们期待着这一进程的结果。”
So that’s the big news! 🎉
目前有三种WASI的实现:
- wasmtime, Mozilla 的 WebAssembly runtime
- Lucet, Fastly 的 WebAssembly runtime
- a browser polyfill
你可以观看这个视频来看看WASI的实战(需要科学上网):Youtube
如果你想更多地了解这个系统接口应该如何工作,请阅读原文。
------------- THE END -------------
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。