Bytecode Alliance公布发展近况,Fastly接走整批Wasmtime开发团队

在去年Mozilla、Fastly、英特尔和红帽共同组成Bytecode Alliance,要推动WebAssembly在浏览器之外的发展。现在联盟约成立一周年,但由于2020年受新冠肺炎疫情影响,Mozilla又进行了大裁员,因此Bytecode Alliance整体发展放慢。

而现在他们已经适应了新的常态,工作开始上轨道,因此官方也说明了目前各项目的进度。另外,Fastly则收编了整个开发JIT Runtime的Wasmtime团队,预计将促进了开源原生WebAssembly编译器项目Lucet和Wasmtime的发展。

Bytecode Alliance的重点项目WebAssembly纳米程序(Nanoprocesses)解决方案,目前仍持续积极发展中。纳米程序能够将目前WebAssembly单体式应用程序,转变成可由模块组合而成的应用程序,而这能从程序底层架构,改进WebAssembly应用程序的安全性,让开发者可以更安全地使用他人编写的相依项目。

WebAssembly纳米程序有三个核心部分,WASI(WebAssembly System Interface)、模块连接(Module Linking)以及接口类型(Interface Type),WASI还有模块连接两种方式,都可以让使用不同程序语言编写的程序互通,而不同语言代表着不同数值表示法,以及不同的资源处理方式,因此就像是不同语言需要外语字典翻译,而接口类型便是用来帮助沟通的翻译角色。

在WASI的部分,官方推进了在低端系统接口层级跨平台实例的工作,像是发布wasi-socket API,提供安全处理Socket的方式,另外,也为关键安全操作发布专用跨平台函数库cap-std,其以性能导向提供许多Rust标准函数库的功能,可让不同平台的应用程序创建在安全的基础上。

而为了支持机器学习工作负载,开发团队也正在发展神经网络标准接口wasi-nn,官方提到,由于机器学习模型通常部署在不同基础架构和操作系统的设备上,只要使用wasi-nn,.wasm文件就可以简单地,以无关架构与操作系统的方式移植模型。

模块连接是可让程序代码重用的方式,现在开发者可以使用主机API,将不同的模块连接在一起,但官方提到,这种方式太笨拙不够快速,因此他们提出了新的模块连接提案,将连接改成声明式的方法,使得模块更易使用,且在编译时,引擎就能掌握模块连接的所有信息。

接口类型目前能够支持许多数值的互通,但是还不能处理资源的控制程序代码(Handle)缓和冲区,但这对WASI和其他API来说是重要的功能,因此除了目前已经支持的类型,包括字符串、数字、参照、枚举、布尔和对象等,接下来还要支持控制程序代码(Handle)与缓冲区,并在明年让语言工具链支持接口类型。

Bytecode Alliance不只说明了项目进度,也提到了相关的人员异动,Wasmtime团队从Mozilla移动到了Fastly中。Fastly是Bytecode Alliance中的重要成员,并且在去年开源了Lucet项目,官方提到,他们本来的计划就是要将Lucet与Wasmtime整合,而人员的整合则会加速这个进展。

Mozilla将继续有一个开发团队,发展Firefox中的WebAssembly应用,而这部分会针对网页开发者的需求,并且同时继续开发被用在Firefox、Lucet和Wasmtime等许多项目中的程序代码产生器Cranelift。