写点什么

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:004224
用户头像

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

关注

评论

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

YOLOv5全面解析教程①:网络结构逐行代码解读

OneFlow

人工智能 深度学习 代码

Chaos 测试下的若干 NebulaGraph Raft 问题分析

NebulaGraph

分布式 分布式系统 raft 分布式图数据库

多线程安全问题原理和4种解决办法

华为云开发者联盟

开发 华为云 12 月 PK 榜

您有一封来神州云科冬季发布会的邀请函,请查收!

通明湖

阿里巴巴技术官墙裂推荐,鸟哥的Linux私房菜,你是否吃过?

钟奕礼

Java 程序员 java面试 java编程

详解视频中动作识别模型与代码实践

华为云开发者联盟

人工智能 图像识别 华为云 12 月 PK 榜

ubuntu18.04编译webrtc_android库

Geek_pwdeic

android WebRTC

不愧是阿里资深架构师,这本“分布式架构笔记”写得如此透彻明了

钟奕礼

程序员 java面试 java编程 #java

裸辞美团花两月吃透这Java岗798道真题解析,定级阿里P7

钟奕礼

Java 程序员 java面试 java编程

直播 | 新一代极速云原生湖仓的技术内核,StarRocks PMC 今天下午为你揭秘!

StarRocks

#数据库

[1.2.0新功能系列:二] Apache Doris 1.2.0 JDBC外表 及 Mutil Catalog

张家锋

面对复杂中国式报表,哪款BI商业智能工具适合你?

小偏执o

Zebec正在以流支付的方式,推动加密资产支付走上正轨

西柚子

网站等保三级怎么做?手续是怎样的?

行云管家

等保 等级保护 过等保 等保三级

可以保存ins照片的软件~距离实现ins图片下载自由只差这一个步骤!

frank

ins图片下载

能让Java开发者提高效率的10个工具

千锋IT教育

产品负责人 VS 产品经理

ShineScrum

产品经理 产品负责人

精彩纷呈!亚信科技深度参与2022中国移动全球合作伙伴大会

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

降本增效: 蚂蚁在 Sidecarless 的探索和实践

SOFAStack

[1.2.0新功能系列:一] Apache Doris 1.2.0 版本 Light Schema Change

张家锋

软件测试丨只需学会Docker,环境问题再也不是测开路上的「坑」

测试人

Docker 容器 软件测试 自动化测试 测试开发

星河璀璨 | 2022大数据“星河”案例入选公示

亚信AntDB数据库

AntDB 国产数据库 AntDB数据库

2023年上海等保测评机构名单看这里!

行云管家

等保 等级保护 等保测评 上海

超赞!阿里大牛熬夜纯手写的微服务架构笔记,肝完面试犹如开挂

钟奕礼

Java 程序员 java面试 java编程

[1.2.0新功能系列:三]Apache doris 1.2.0 Java UDF 函数开发及使用

张家锋

如何快速构建企业级数据湖仓?

字节跳动数据平台

大数据 湖仓一体 12 月 PK 榜

一个随手就能画出小程序的工具

Towify

微信小程序 编辑器 无代码

kali linux忘记密码如何重置|在kali上重置密码

Sher10ck

kali Linux

有奖征文 | “用 TDengine,写 TDengine”,万元大奖等你来瓜分!

TDengine

tdengine TDengine征文

如何配置悬浮层滑动进入动画?

Towify

微信小程序 编辑器 无代码

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