Firefox正式告别asm.js:WebAssembly时代全面到来,站长需要知道什么

Mozilla宣布,从Firefox 148开始,SpiderMonkey引擎的asm.js优化默认关闭,未来版本将完全移除相关代码。这标志着一个时代的结束——asm.js,这个曾经让Web应用达到原生速度的技术,正式退出历史舞台。

asm.js是什么?

asm.js是Mozilla在2013年提出的一个技术方案,目标是让Web应用达到接近原生的速度。它的思路很巧妙:选择JavaScript的一个严格子集,这个子集是静态类型的,引擎可以在运行时识别并编译成原生代码。

asm.js的关键特性:

1. 静态类型:所有变量都有明确的类型(整数、浮点数),不需要运行时类型检查。

2. 严格子集:asm.js是JavaScript的子集,任何asm.js代码都是合法的JavaScript代码。

3. AOT编译:引擎可以在运行前将asm.js代码编译成原生代码,避免了解释执行的开销。

asm.js的历史贡献

asm.js在Web技术史上有重要的地位:

1. 证明了Web可以跑原生代码:asm.js让C/C++代码可以在浏览器中以接近原生的速度运行,这在当时是一个突破。

2. 催生了WebAssembly:asm.js的成功直接催生了WebAssembly。没有asm.js,可能就没有WebAssembly。

3. 推动了游戏引擎上Web:Unity和Unreal Engine最初就是通过asm.js将C++游戏代码移植到Web的。Epic Citadel demo只用了四天就完成了Web移植。

4. 启发了NaCl/PNaCl的替代方案:Google的NaCl/PNaCl方案需要浏览器插件,而asm.js只需要标准的Web技术,这推动了Web标准的发展。

为什么现在淘汰asm.js?

原因很简单:WebAssembly已经完全取代了asm.js。

1. 性能:WebAssembly的性能比asm.js更好,因为它是一种专门设计的二进制格式,不需要JavaScript解析。

2. 文件大小:WebAssembly的二进制格式比asm.js的文本格式更小,加载更快。

3. 工具链支持:Emscripten等工具链已经完全转向WebAssembly输出,asm.js的支持逐渐被移除。

4. 浏览器支持:所有主流浏览器都支持WebASM,asm.js的优化只在Firefox中有特殊支持。

5. 维护成本:维护asm.js优化路径需要额外的开发时间,而且还增加了VM的攻击面。既然WebAssembly已经成功,继续维护asm.js没有意义。

对站长的影响

1. 如果你的网站使用asm.js:不需要做任何改变。asm.js是合法的JavaScript,会通过普通的JIT执行,只是没有AOT优化了。但建议重新编译成WebAssembly,以获得更好的性能和更小的文件。

2. 如果你的网站使用WebAssembly:不受影响,继续正常使用。

3. 如果你在开发新的Web应用:直接使用WebAssembly,不要考虑asm.js。

4. 如果你使用Unity/Unreal等游戏引擎:这些引擎已经完全转向WebAssembly输出,不需要担心。

如何迁移到WebAssembly

如果你有asm.js代码需要迁移到WebAssembly,步骤很简单:

1. 更新Emscripten:确保你使用的是最新版本的Emscripten。

2. 重新编译:使用-s WASM=1标志编译,Emscripten会自动输出WebAssembly。

3. 更新加载代码:WebAssembly的加载方式与asm.js不同,需要更新JavaScript加载代码。

4. 测试:在目标浏览器中测试,确保功能正常。

WebAssembly的未来

WebAssembly正在扩展到更多领域:

1. 服务端:WASI(WebAssembly System Interface)让WebAssembly可以在服务端运行,Node.js和Deno都支持。

2. 边缘计算:Cloudflare Workers、Fastly Compute等边缘计算平台使用WebAssembly作为运行时。

3. 插件系统:很多应用(如Figma、AutoCAD)使用WebAssembly作为插件运行时。

4. 区块链:以太坊2.0使用WebAssembly作为智能合约的执行环境。

总结

asm.js的退役是Web技术演进的自然结果。它完成了自己的历史使命——证明Web可以跑原生代码,并催生了WebAssembly。现在,WebAssembly已经完全取代了asm.js,成为Web高性能计算的标准方案。

对于站长来说,如果你还在使用asm.js,现在是迁移的好时机。如果你已经在使用WebASM,继续前进就好。

来源:SpiderMonkey官方博客 | HN讨论

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容