开发者生态
morning
告别 Asm.js
2026-05-20
1 阅读
eqrion
斧头时间,剑时间,盾牌被击碎,风时间,狼时间,世界崩溃之前。 – Völuspá,Poetic Edda 从 Firefox 148 开始,SpiderMonkey 的 asm.js 优化默认被禁用,我们计划在未来的版本中完全删除代码。如果您维护一个使用 asm.js 的站点,则不会出现任何问题。 asm.js 只是纯 JavaScript 的子集,因此代码像任何其他脚本一样通过我们的常规 JIT 持续运行。也就是说,重新编译为 WebAssembly 将使您获得更快的执行速度和更小的二进制文件。历史 asm.js 是 Mozilla 对 NaCl 和 PNaCl 提出的问题的回应:网络如何以本机速度运行代码?这个想法很聪明:选择一个严格的、静态类型的 JavaScript 子集,引擎可以动态识别它并编译为本机代码。我们可以获得与 NaCl/PNaCl 类似的性能,并且仍然在 Web 内容中保留代码并使用 Web API(没有单独的沙箱、IPC 或替代 API)。 asm.js 早在 2013 年就在 Firefox 22 中发布并取得了成功。它让 Unity 和 Unreal 等项目首次仅使用标准 Web 技术将 C/C++ 代码库发布到 Web。 Epic Citadel 演示仅用了四天时间就移植到了网络上。这是一个里程碑式的成就,对于最初的 asm.js 团队来说也是一个美好的回忆。 asm.js 证明我们可以仅使用 Web 技术在 Web 上以接近本机的速度运行代码。这为 WebAssembly 打开了大门,几年后它在 Firefox 52 中发布。没有 asm.js,我们可能就不会有 WebAssembly。为什么是现在?那么为什么要关闭它呢? WebAssembly 已经成功,asm.js 的使用大部分已经迁移。将 asm.js 路径与 WebAssembly 一起保留会花费我们的维护时间,并在虚拟机中给我们带来额外的攻击面。如果您要传送 asm.js 内容,请考虑重新编译为 WebAssembly!我们的 WebAssembly 管道比以往的 asm.js 管道先进得多。您应该会看到更快的执行速度和更小的二进制文件。 Ragnarök asm.js 编译器称为 OdinMonkey。正如很久以前所预言的那样,奥丁猴子必须迎接他命中注定的厄运。 Ragnarök 虫子追踪“奥丁猴子的黄昏”。然而一切并没有丢失,因为 OdinMonkey 的诞生是 BaldrMonkey,我们的 WebAssembly 优化编译器。 OdinMonkey 可能会被狼 Fenrir 整个吞掉,但 BaldrMonkey 将与我们的 WebAssembly 基线编译器 RabaldrMonkey(“骚乱”)一起统治重生的世界。在这个奥丁日(星期三),我们感谢 OdinMonkey 十三年来的服务。嘘!然后,未播种的田地结出了成熟的果实,所有的疾病都变得更好,巴尔德尔回来了;巴尔德尔和霍斯住在赫罗普特的战斗大厅里。 – Völuspá,诗意的埃达