Mozilla将在所有设备,计算机和操作系统上使用WASI

大家好! 连接TestMace ,我们将继续为您提供JavaScript世界中最热门的新闻。 下一步是翻译有关WASI的文章,WASI是一种允许WebAssembly在浏览器之外使用的技术


一种统治一切的格式



Mozilla本周宣布了一个名为WASIWeb组件系统接口)的项目,以标准化WebAssembly代码与操作系统的交互方式。 如果项目成功,它将执行与Oracle Java虚拟机相同的功能,但效率更高且具有高级功能。


WebAssembly (WASM)是虚拟机的二进制指令格式,可以在各种硬件体系结构上运行。 可以将用C / C ++,Go,Rust等多种语言编写的代码编译成WASM代码。


许多Web浏览器都引入了对WebAssembly的支持,但到目前为止,尚无在浏览器之外使用它的标准。 现在有了WASI。
Mozilla开发人员Lin Clark在 Mozilla Hacks博客文章中说:“需要一种代码与浏览器外部的系统(即系统界面)进行交互。” “ WebAssembly平台还没有这种方法。”


WASM + WASI


使用WASI,WASM代码可以在浏览器或任何其他兼容环境中运行,从而提供与跨平台语言无关的开发。 便携式操作系统接口(POSIX)旨在确保程序源代码在类UNIX操作系统之间的可移植性,而WASI旨在支持已编译的二进制文件在不同设备和操作系统上的兼容性。 该标准提供了通用的运行时,其运行速度接近本地运行时。


Java虚拟机(JVM)的作用相同,但是需要一个插件才能在浏览器中运行Java代码。 尽管可以使用GraalVM在Java中实现该语言的灵活性(例如,建议的WebAssembly平台),但由于与Oracle声称侵犯其知识产权有关的事件,Java生态系统仍处于后台。


WASM格式提供对内存的安全访问和方便的验证 ,在安全性方面优于Java applet,尽管它可以通过更改程序的初始控制流来进行攻击。 它还与C / C ++和Rust相处得很好。


Mozilla的WebAssembly团队负责人Till Schneider 在Twitter上解释了WebAssembly和Java之间的区别:实施的资源消耗要少得多。”


如果WASI的潜在优势尚不为您所知,那么这就是Docker所罗门·海克斯(Docker Solomon Hykes)的一位创建者对他说的话:“如果WASM + WASI存在于2008年,那么我们就不会创建Docker。服务器端WebAssembly是该领域的未来计算。我们缺乏标准化的系统接口。我希望WASI解决此问题!”


在这一乐观浪潮中,Fastly在星期四发布了Lucet ,它是在云环境中执行WebAssembly WASM代码的本地编译器和环境。 它补充了Mozilla Wasmtime(浏览器外部的WASM代码运行时环境)。


当然,WASI 仍然远非理想。 WebAssembly还可以很好地进行进一步的优化,例如,增加访问浏览器DOM的功能 。 尽管开发人员已经通过提供一种独立于平台的二进制格式完成了出色的工作。 同时,祝您有Java方面的成功经验。

Source: https://habr.com/ru/post/zh-CN449554/


All Articles