标准化进程中的WASI:赋予WebAssembly在浏览器外运行能力的系统接口-个人文章-SegmentFault思否
今天,我们宣布了一个新的标准化流程——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 -------------