Bytecode Alliance宣布服务器端WebAssembly发展愿景

2020 年 11 月 14 日

Bytecode Alliance宣布服务器端WebAssembly发展愿景

Bytecode Alliance成立一周年之际,WebAssembly 开发者 Lin Clark 和 Till Schneidereit 在博客中宣布,Fastly 已经从 Mozilla 手中收购了部分 WebAssembly 团队。在未来,Mozilla 将继续关注浏览器中的 WASM,尤其是 Firefox 浏览器。另一方面,Fastly 将管理服务器端的 WASM,包括 Fastly 自己的商业 WebAssembly 服务器产品 Compute@Edge。这也导致了 Mozilla 的 wasmtime 和 Fastly Lucet Wasm VM 项目的合并。Lucet 和 wasmtime 共享了很多代码,这次合并确保了它们未来的开发将继续沿着同样的方向进行。


在博文中,Clark 和 Schneidereit 描绘了他们对服务器端 WASM 未来的技术愿景。他们的核心观点是 nanoprocess 模型,它为 WASM 程序提供了一个安全且轻量级的容器,但仍然可以让沙箱内的 WASM 程序很容易与其他 WASM 程序及系统的其他部分通信。


从技术上讲,WASM 在通往nanoprocess的关键路径上有三个增强提议。


第一个增强是 WebAssembly Systems Interface(WASI),它为 WASM 程序提供了一种调用宿主系统标准库函数的方法。在服务器端,也就是指访问文件系统、环境变量、随机数和套接字。现在,多个领先的 WASM 实现都支持 WASI。


WASI 的实现在完整性和性能方面各不相同。例如,谷歌的 V8 使用主机环境的 JavaScript 运行时作为访问操作系统的代理,因此速度很慢。


WASI 方法并不仅限于访问操作系统标准库。这篇博文还讨论了 Bytecode Alliance 倡导的其他类似 WASI 的扩展,比如wasi-socketwasi-nn。除了 Bytecode Alliance 之外,还有很多项目可以让 WASM 访问更多的主机功能。例如,在区块链领域,以太坊 WebAssembly (Ewasm)也是 WASI 的一种形式,它可以让 WASM 访问主机以太坊区块链的用户帐户和交易服务。


第二个增强是接口类型,它可以让 WASM 程序与外部程序通信,无论是在主机操作系统中,还是内嵌了 WASM 的语言运行时(例如,Node.js)中。这个建议还处于早期阶段,还没有得到编译器工具链的支持。但是,wasmtimeSecond State VM已经支持它。目标是让 WASM 程序更强大和具备更强的嵌入能力。


综合起来,WASI 和接口类型让开发人员可以充分利用原生主机系统,同时保持 WASM 沙箱的安全性。早期的一个例子是 Second State VM 为其 WASM 程序提供原生 GPU 访问能力来进行 tensorflow 模型推断。


nanoprocess 的第三个元素是模块链接,除了让 WASM 程序可以调用主机函数外,还可以相互调用。声明模块依赖关系的能力可以支持类似 Node.js NPM 和 Rust Crate.io这样的公共包管理系统,为已经启动的WAPM工作提供补充。


这篇博文参引用了 Bytecode Alliance 为服务器端的 WASM 设计的愿景。与此同时,WASM 开源社区现在比 Bytecode Alliance 要大得多。现在有多种 WASM 虚拟机实现、编程语言的编译器工具链以及主机操作系统和环境(例如,Node.jsDeno区块链)。


原文链接

Bytecode Alliance Lays out Plans for WebAssembly on the Server-side


2020 年 11 月 14 日 11:002648

评论

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

DevOps生命周期,你想知道的全都在这里了!

DevOps 测试 持续集成

微服务为什么要有服务发现与注册?

攀岩飞鱼

微服务 微服务冶理 微服务发现

Kotlin协程实践之进程、线程、协程

陈吉米

Java kotlin 协程 Coroutine

Docker 镜像制作教程:针对不同语言的精简策略

米开朗基杨

Docker Dockerfile

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

江南一点雨

spring Spring Boot spring security

写作对我的意义

Neco.W

总结 思考 写作 感悟

比AtomicLong更优秀的LongAdder确定不来了解一下吗?

一枝花算不算浪漫

并发编程 jdk源码

计算机中的递归对普通人有什么启示?

BitSea

算法

一种练好英语口语的方法

七镜花园-董一凡

学习

EasyExcel最权威教程

知春秋

Java Excel EasyExcel

键入网址后,其间发生了什么?

小林coding

TCP 计算机网络 网络协议 IP HTTP

浅谈Cloud Native技术对云上产品的影响

韩超

Docker Kubernetes 云原生 IaaS PaaS

机会,是不会让你准备好的

Winann

学习 生活 知识管理 机会

发布Maven包的正确姿势

廖雪峰

maven 开源

有问必答(2020-05-09):如何督促自己做好一件事情?

冯夷

生活

《零基础学 Java》 FAQ 之 8-Java方法调用是传值还是传引用

臧萌

Java

2020第一篇技术博客

java劝退师首席大弟子

生活

回“疫”录(19):都什么时候了,还在搞“填表抗疫”

小天同学

疫情 回忆录 现实纪录 纪实 形式主义

Java如何处理异常情况

Rayjun

Java 异常

从连续两届图灵奖(2018-2019)看GPU发展史

GPU

人工智能 gpu 计算机基础 计算机图形学 计算机体系结构

码农理财(一)

北漂码农有话说

理财

游戏夜读 | Scikit-learn迎来0.21版本

game1night

如何搞定Kafka重复消费?

奈学教育

kafka kafka配置

笔记:《如何系统思考》之如何应用系统思考

wiflish

思维方式

程序员的晚餐 | 5 月 17 日 当西红柿遇上鱼

清远

美食

Collaboration on SaaS

zhenglei

SaaS Collaboration Cisco Webex

11 万字的字节码编程系列合集放送(ASM、Javassist、Byte-buddy、Javaagent)

小傅哥

Java asm bytebuddy 《字节码编程》

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(一)

图雀社区

node.js vue.js Vue

少说废话,先干起来

白鸽

学习 个人成长 自律

【高级进阶】写给大忙人看的JDK14新特性

知春秋

Java java 14 java 14 新特性

2020年比以往任何时候更想做成的使命感

乐少

Bytecode Alliance宣布服务器端WebAssembly发展愿景-InfoQ