写点什么

Mozilla 发布 WASI 计划,可在所有设备上运行 WebAssembly

  • 2019-04-10
  • 本文字数:1963 字

    阅读完需:约 6 分钟

Mozilla发布WASI计划,可在所有设备上运行WebAssembly

Mozilla 最近推出了一个新的标准化工作,目标是在所有设备、机器和系统上运行相同的 WebAssembly 代码。新标准 WebAssembly 系统接口(WebAssembly System Interface,简称 WASI)定义了一个单一的概念性操作系统接口,该接口可以由多个实际的操作系统实现。Mozilla 和 Fastly 已经发布了原型 WASI 实现。


Mozilla 最近推出了一个新的标准化工作,目标是在所有设备、机器和系统上运行相同的 WebAssembly 代码。新标准 WebAssembly 系统接口(WebAssembly System Interface,简称WASI)定义了一个单一的概念性操作系统接口,该接口可以由多个实际的操作系统实现。与之前像 Java“随处运行”工作的不同在于,WASI 构建于 WebAssembly 之上,WebAssembly 是浏览器供应商和芯片、设备、计算机及操作系统的制造商之间的罕见合作,目的是制定一个无专利、开放的标准。WASI 标准将努力通过一组模块化的标准接口来提供 WebAssembly 的可移植性和安全性,并为生态系统提供坚实的基础。MozillaFastly已经发布了 WASI 原型实现。


WASI 旨在成为 WebAssembly 平台的系统接口(目前WebAssembly平台由四个主流浏览引擎实现)。WebAssembly(Wasm)将自身描述为“基于堆栈的虚拟机的二进制指令格式”,其设计目标是“利用广泛平台上可用的通用硬件能力,以本地速度执行”。Wasm 被用作像 C/C++/Rust等高级语言的编译目标。尽管 WebAssembly 主要设计用于在开放网络上运行,但是,现在,Mozilla 寻求把 WebAssembly 的应用范围扩展到非网络嵌入,“包括从用于测试的最小 shell 到成熟的应用程序环境的一切,例如,在数据中心的服务器上、IoT 设备上、移动/桌面应用程序”。正如Lin Clark所述


浏览器外部的代码需要一种与系统通信的方式,这就是系统接口。WebAssembly 平台还没有这样的接口。


WASI 声明的目标与 Java 最初的承诺“一次编写,随处运行(Write Once,Run Anywhere)”相呼应。Java 虚拟机(JVM)确实用于类似的目的,并且,语言的灵活性与通过 WebAssembly 平台所提供的类似,可以通过GraaIVM在 Java 中实现。然而,Java仍然是事实标准,其所有者 Oracle跟谷歌还有一场未打完的官司,原因是谷歌涉嫌非法使用 Java 的 API。相比之下,WebAssembly 是罕见合作的结果,该合作发生在浏览器供应商和主流公司之间,这些主流公司包括微软、谷歌、苹果、Mozilla、英特尔、三星等等。在 2018 年于旧金山举行的QCon大会上,Jay Phelps强调


这些公司,他们已经走到一起。这些主流公司已经创造了首个标准化的字节代码,并且还是免费的,而不是专有程序。毫无疑问,它是完全开放的,不受专利法和所有类似事务的阻碍。


此外,Wasm 具有内存安全性调优功能,也许比 Java 更具安全优势。Till Schneidereit提供了额外的论据,以在比较中突显 Wasm 的优势:


WebAssembly 被设计用来扩展的,从小型的设备一直扩展到大型服务器场或 CDN;与 Java 相比,语言无关性更强;并且具有更小的实现占用空间。


WASI 基于系统功能的抽象,通过给多个系统指定公共接口,来寻求实现可移植二进制代码。这些抽象被聚集到模块中,其中 wasi-core 占据核心位置。Lin Clark 给出了详细说明:


wasi-core 将包含所有程序所需的基础。它将覆盖与 POSIX 相同的基础,包括文件、网络连接、时钟和随机数等。


像多媒体、3D 图或智能合约这样的其他功能,可以通过特定模块来解决。现有的标准化工作旨在仔细指定系统功能抽象,以便解决大量操作系统和体系结构的同时,保持 WebAssembly 的性能目标。


Wasm 的安全方面,WASI 采用的是基于能力的安全模型。它为 WASI 应用程序提供了能力,而不是标识资源的可伪造引用(如文件路径),但没有指定哪种访问权限适合该资源。可伪造引用强制操作系统根据请求程序的外界权限进行验证。Lin Clark 解释了如果 WASI 应用程序之前被授予打开某个文件的能力,那么它只能打开那个文件:


我们无法让代码随机请求 open /etc/passwd。相反,该代码只能对传递给它的目录进行操作。(…)因此,运行时将应用程序可以使用的文件描述符传递到顶层代码,然后,根据需要,文件描述符在系统的其余部分得到传播。


支持 WASI 的应用程序目前可以使用polyfill在浏览器中运行,或者用Mozilla的Wasmtime或 Fastly 的Lucet在浏览器外部运行。


WASI 还在开发过程中。Lin Clark 提到:


但是,在完全标准化 wasi-core 后,还存在一些我们需要解决的问题。这些问题包括:

  • 异步 I/O

  • 文件观察

  • 文件锁定


风险很大。Docker的联合创始人Solomon Hikes


如果 2008 年就有 WASM+WASI,那么,我们就不需要创造 Docker 了。这就它的重要性所在。服务器上的 WebAssembly 是计算的未来。一个标准化的系统接口就是其缺失的环节。希望 WASI 能胜任这项任务!


查看英文原文:Mozilla Announces WASI Initiative to Run Web Assembly on All Devices, Computers, Operating Systems


2019-04-10 08:004332
用户头像

发布了 199 篇内容, 共 94.6 次阅读, 收获喜欢 295 次。

关注

评论

发布
暂无评论
发现更多内容

ClickPaaS:SaaS2.0下打造极致的PaaS能力

海比研究院

抢占风口,赢得先机——中国PaaS市场风口深度分析

海比研究院

实时音视频,是一门好的ToB生意吗?

ToB行业头条

无服务框架-OpenFaas

QiLab

开源应用中心 | 快来一键体验,这款仅有400KB的开源博客程序!

开源

如何查看github和gitee评论消息

Albert

GitHub

教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!

Python研究者

8月日更

Dubbo No provider问题排查思路

捉虫大师

dubbo no provider

Spring

ltc

spring

云太多了怎么管?你需要一个中立开放的云管平台

BeeWorks

linux服务器网络编程之线程模型

Linux服务器开发

reactor 线程模型 Linux服务器开发 Linux网络编程 服务器模型

投资ipfs挖矿有风险吗?投资ipfs挖矿要多少钱?

投资ipfs挖矿有风险吗 投资ipfs挖矿要多少钱

浅谈云上攻防——对象存储服务访问策略评估机制研究

腾讯安全云鼎实验室

云原生 对象存储 数据安全 云上安全攻防

基于 Web 端的屏幕共享实践

ZEGO即构

大前端 音视频 web端屏幕共享

极客星球|基于加权DBSCAN的工作地居住地计算方法

MobTech袤博科技

走出回归测试困境,爱奇艺精准测试体系建设

爱奇艺技术产品团队

测试 开发 精准测试 i技术会

在云中进行灾难恢复的5种有效方式

云计算

智能合约系统开发|智能合约DAPP搭建

Geek_23f0c3

DeFi去中心化系统开发 DAPP智能合约交易系统开发

更智能更高效,区块链打造更美服装行业

CECBC

JavaScript 正则表达式的 5 个方法

devpoint

regex match 8月日更

闭关修炼21天,“啃完”283页pdf,我终于4面拿下字节跳动offer

Java 程序员 面试 计算机

mPaaS 月度小报|为采购而生,全新资源包上架;前端 2D 游戏化互动入门指南

蚂蚁集团移动开发平台 mPaaS

mPaaS 小程序市场

夯实基础,踏步云升 | 云原生 DevOps 入门必读

CODING DevOps

DevOps 云原生 CODING

决定论:区块链的哲学

CECBC

JVM运行时数据区域

W🌥

Java JVM 8月日更

中国如何应对中美科技博弈?

石云升

科技革命 8月日更 启发 中美博弈

HarmonyOS学习路之开发篇—— Java UI框架(组件与布局说明)

爱吃土豆丝的打工人

HarmonyOS 布局与组件 java UI

为什么VR视频的清晰度不高?

爱奇艺技术产品团队

编码 vr 编解码 8k 解码

Drools 基础语法

LeifChen

drools 规则引擎 8月日更

云原生的数据云,下一个十年的数字化转型趋势

星环科技

数字化转型 云数据库

信息过载,加班无度的时代,我们需要「洞穴空间」

非著名程序员

个人成长 提升认知 思维 8月日更

Mozilla发布WASI计划,可在所有设备上运行WebAssembly_大前端_Bruno Couriol_InfoQ精选文章