2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

如何在云中构建数字核心

云计算

计算机原理学习笔记 Day10

穿过生命散发芬芳

计算机原理 4月日更

如何提高Linux水平

cdhqyj

架构实战营作业2

冷酷小绵羊

浅谈JVM和垃圾回收

leonsh

Java JVM JVM虚拟机原理 垃圾回收算法

翻译:《实用的Python编程》09_03_Distribution

codists

Python

使用Agora SDK开发React Native视频通话App

声网

RTC React Native 声网 RTE

为什么我愿意持续做这样一件看似没有价值的事情

帅安技术

坚持 持续写作 长期价值

Linux free 命令

一个大红包

linux命令 4月日更

知乎万赞回答:程序员面试为什么被要求造航母,而工作拧螺丝?

Java架构师迁哥

方寸之间,书写天地

石云升

4月日更 1 周年盛典 我和写作平台的故事 InfoQ 写作平台 1 周年

百度大脑3月新品推荐:EasyDL视频目标追踪全新发布

百度大脑

百度大脑 EasyDL

斗智亦斗棋,零售云市场的“楚河汉界”突围赛

脑极体

趣题与算法(1)

阳龙生

最新分享:如何避免线程安全的坑?看这一篇就够了

学Java关注我

Java 编程 程序员 架构 计算机

欢迎参与 KubeVela 官方文档翻译活动

阿里巴巴云原生

容器 云原生 开发工具 OAM 资源调度

推进智慧城市建设 博睿数据亮相长三角城市数字化转型高峰论坛

博睿数据

数字化转型高峰论坛

深入理解Java虚拟机-HotSpot

华章IT

Java JVM 虚拟机

融合趋势下基于 Flink Kylin Hudi 湖仓一体的大数据生态体系

Apache Flink

flink

奇绩创坛2021秋季创业营开始报名

奇绩创坛

架构实战营 模块2 课后作业

༺NPE༻

GitHub面试题库+阿里巴巴2021年Java岗面试26大核心专题,成功助我砍下7家大厂Offer

Java架构追梦

Java 阿里巴巴 架构 面试

Excelize 2.4.0 正式版发布, 新支持 152 项公式函数

xuri

GitHub 开源 Excel Go 语言 Excelize

【AI全栈二】视频流多目标多类别无延迟高精度高召回目标追踪

cv君

音视频 目标检测 视频跟踪 引航计划

开源 1 年半 star 破 1.2 万的 Dapr 是如何在阿里落地的?

阿里巴巴云原生

Java 微服务 云原生 中间件 API

【全球年青人召集令】Hello World,Hello 2050

阿里巴巴云原生

容器 开发者 云原生 活动

简单了解InnoDB底层原理

leonsh

MySQL 数据库 innodb

未来已来,HarmonyOS 开发者日全记录

清秋

华为 开发 物联网 新闻 HarmonyOS

面试4轮字节Java研发岗,最终拿下Offer(原题复盘)

码农之家

编程 程序员 互联网 面试 字节

Python 爬虫实战(一) 爬取自如网租房信息

U2647

python 爬虫 4月日更

浅谈在探索数分之路上的“数据思维”论述

小飞象@木木自由

数据分析 数据分析体系 数据思维 数据分析方法论

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