WebAssembly Runtime开源项目发布2.0版,浮点数运算性能增加56%

高性能WebAssembly Runtime开源项目Wasmer的开发团队,在1月的时候正式发布1.0版本,半年不到,该团队迅速地发布第2个主要更新版本,这个版本不只加入了新功能,同时也提升了稳定性、安全性和性能。

Wasmer 2.0新功能包括了SIMD(单指令流多资料流)和参照类型。SIMD让一条指令可以同时对多笔资料流进行操作,加入SIMD支持,将能够提高并行处理资料的性能,让Wasmer更适用于多样化的使用案例,像是机器学习、图片处理、3D物理运算和图形应用等,开发者能够在这些用例中,观察到明显的性能提升,而且官方还提到,SIMD减少电力使用的潜力不容低估。

Wasmer 2.0另一个亮点便是参照类型,参照类型能够让应用程序在主机环境,或是多个Wasm模块之间,共享特定类型的信息,这个方便的功能,使得程序代码和主机的Wasm模块,能够简单地进行沟通,并且将会是之后接口类型(Interface Types)的关键功能。

开发者从Wasmer 1.0切换使用Wasmer 2.0,可以明显的感觉到性能提升,Wasmer 2.0操作浮点数的时候,LLVM Runtime速度大概快了50%,函数调用也更快,在过程中会尽量避免与核心交互,而且因为采用新的后端架构,Cranelift执行速度提高约40%,反串行化的速度也大幅加速。官方提到,Wasmer的这些改进,使得Wasm程序和函数库,已经能够以接近原生的速度执行。

Wasmer 2.0所有公共API都没有改变,但是内部API有稍微调整,非常少数的用户才会受到影响,另外,Wasmer 1.0的串行化Wasm模块,无法用在Wasmer 2.0反串行化。

开发团队表示会持续改进Wasmer,继续奠基于参照类型之上的其他工作,并且增加对更多操作系统和硬件基础设施的支持,开发团队也计划要在GitHub上,实行更加开放透明的流程,以发布Wasmer Runtime之后的版本。