Mozilla 宣布了一项新的标准化工作,旨在为WebAssembly应用程序提供一致的方式来与其运行的任何操作系统进行交互。
被称为WASI或WebAssembly系统接口的当前实验项目为WebAssembly应用程序提供了一组抽象,用于执行诸如读写文件和网络I / O之类的任务。 每个WebAssembly主机都为其运行的平台实现WASI。
根据Mozilla的说法,WASI的一个关键部分是它独立于平台。 例如,诸如C之类的语言提供了一个标准库来与文件系统和内存接口。 同样,WASI可以被视为文件或网络套接字等跨平台抽象的标准库。
WASI的另一个关键元素是这些行为是沙盒化的。 Mozilla给出的一个示例是文件访问。 由WASI管理的打开文件的调用仅适用于应用程序具有读取或写入权限的目录。 这些权限也可以按模块进行限制。
使用WASI将需要重新编译现有的WebAssembly才能正常工作,但是WebAssembly尚处于开发的早期阶段,因此这样的更改不太可能造成破坏。 目前,用于编写WebAssembly应用程序的两个主要工具链( Rust和C / C ++)都支持WASI。 两者都利用LLVM生成WebAssembly代码的能力来实现这一目标。
要运行支持WASI的应用程序,当前您需要的不仅仅是浏览器中的WebAssembly支持。 一种方法是使用基于浏览器的polyfill ,与可以使用JavaScript的实验功能几乎相同。 另一个是通过wasmtime ,一种不使用浏览器的独立WebAssembly运行时。 第三个是另一个独立的运行时, Lucet ,由Fastly使用Mozilla的Cranelift代码生成系统构建。 Mozilla希望及时浏览器能够本地支持WASI。
翻译自: https://www.infoworld.com/article/3384920/mozillas-wasi-takes-webassembly-beyond-the-browser.html