Firefox 浏览器正在告别 asm.js。
asm.js 的诞生与定位
asm.js 是 Mozilla 在 2013 年 Firefox 22 中推出的技术。它是一套严格、静态类型的 JavaScript 子集,浏览器引擎可在运行时识别并即时编译为本地代码,无需借助 NaCl/PNaCl 那样的独立沙箱。这让 Unity、Unreal 等商业引擎首次实现 C/C++ 代码直接面向网页发布,Epic 的虚幻引擎演示甚至在四天内完成移植。
Mozilla 指出,asm.js 证明了仅靠标准 Web 技术就能让代码达到接近原生的运行速度,从而为 WebAssembly 的出现奠定了基础——后者于 Firefox 52 正式上线。
停用原因
截至 Firefox 148,SpiderMonkey 已默认禁用 asm.js 优化,后续版本将彻底移除相关代码。官方解释是:WebAssembly 已完成迁移,维护两条路径徒增工程成本,也在虚拟机层面引入了额外攻击面。
asm.js 代码并不会因此「断裂」,仍可经由常规 JIT 编译器执行。不过 Mozilla 建议仍在使用 asm.js 的项目重新编译为 WebAssembly,以获得更快的执行效率与更小的产物。
尾声:OdinMonkey 的黄昏
asm.js 编译器内部代号为 OdinMonkey。其移除进度由代号「Ragnarök」的 bug 追踪。接替它的是 BaldrMonkey(WebAssembly 优化编译器)和 RabaldrMonkey(WebAssembly 基线编译器)。
原文附有 Norse 神话典故,在此不再展开。
编注:来源为 SpiderMonkey 官方博客,2026 年 5 月 20 日发布;属技术公告而非新闻报道,正文忠实转述了团队决策与技术沿革,无直接引语。