【导语:近日,Mozilla宣布Firefox 148将默认禁用SpiderMonkey的asm.js优化,并计划未来移除该代码,标志着Web性能史上一项开创性技术实验即将结束。】
asm.js诞生于2013年Firefox 22发布时,是JavaScript的严格静态类型子集,能在运行时预先编译为原生代码。其核心思路是以JavaScript语法表达静态类型承诺,让浏览器进行高度优化的Ahead-of-Time编译,无需依赖运行时推测优化。
该技术一经推出便引起行业震动,Unity和Unreal Engine先后通过asm.js将C/C++游戏移植到Web平台,让开发者意识到浏览器可成为真正的应用平台。
2017年WebAssembly发布,起初很多人认为它是asm.js的正式标准化版本,二者会长期共存。但实际上,WebAssembly带来了更高效的二进制格式、更快的解析速度和更广泛的工具链支持。
开发者社区迅速转向WebAssembly,asm.js的使用量逐年萎缩。Mozilla工程师表示“WebAssembly已经成功了,asm.js的使用已基本完成迁移”。
在SpiderMonkey的技术架构中,asm.js优化编译器名为OdinMonkey,WebAssembly优化编译器名为BaldrMonkey,负责生成WebAssembly字节码的基础编译器名为RabaldrMonkey。这种命名方式既体现技术浪漫主义,也暗喻了WebAssembly最终取代asm.js的命运。
对于仍在使用asm.js的开发者,Mozilla建议重新编译为WebAssembly。WebAssembly能提供更快的执行速度、更小的二进制文件,且获得所有主流浏览器的原生支持。
asm.js的落幕是Web平台走向成熟的里程碑,从NaCl到asm.js再到WebAssembly,浏览器历经漫长探索,最终找到了清晰道路。
编辑观点:asm.js的退场是技术发展的必然,WebAssembly的全面胜出推动Web平台迈向新高度,开发者应顺应趋势,拥抱新技术。