根据 modern.IE 平台上的状态显示, asm.js 正处于_ 开发_ 阶段。按照微软的说法,在Windows 10 中所使用的Chakra 引擎将支持asm.js,并且微软正与Mozilla 进行合作,以争取尽快实现它。Chrome 刚将通过TurboFan 这一在V8 上经过优化的编译器提供对asm.js 的支持。
微软表示,用户通过 IE 平台建议箱表达了他们的渴望,这正是微软最终决定支持 asm.js 的主要原因之一。这一原本来自于 Mozilla 的技术目前在用户对 IE 的新特性请求列表中排在第五位,但讽刺的是,建议使用 Blink 引擎取代 Trident 引擎的请求却排名期望新特性列表中的第三位,而建议使用 Dart VM 的建议排名第八。不过用户的这些期望是不可能全部得到满足的,至少现在是不可能的,因为微软最近已经宣布了 Spartan 项目的成立,而不打算使用 Blink 引擎。
在 2013 年,Mozilla 和 Epic Games 决定通过 asm.js 的方式让虚幻引擎(Unreal Engine)得以在浏览器中运行。当时,有一位 Chromium 团队的成员为 V8 引擎提交了一个 issue #2599 ,它是一个让 Chrome 能够支持 asm.js 的特性请求。这个 issue 很长一段时间以来一直处于休眠状态,但最近它的状态突然改变为已分派,将通过 TurboFan 这个新的 V8 引擎优化编译器得以实现。V8 团队在去年的晚些时候开始实现这一功能,但它在最近的Chrome 41 中已经成为Beta 版本,根据V8 团队的技术领导 Ben Titzer 所说:
我们已经对 Chrome 41 中的 TurboFan 进行了 Beta 测试,这一版本极大地提高了各种数值运算代码的性能,例如 asm.js。由于我们还将进行更多的探索性尝试和优化,因此我们犹豫着是否要将该 issue[#2599] 关闭为“已修复”状态,但大家可以认为这个 issue 的状态属于“基本已修复”了。
我们正在积极地尝试启动 TurboFan 的各种策略,其中一个信号是“use asm”指令。作为对#73 w.r.t. AOT 的回应:目前在 V8 中使用 TurboFan 时并不会一次性编译整个完整的 asm.js 模块。
asm.js 提供了一种让由 C、C++ 或其它语言编写的原生代码在浏览器端运行的途径。asm.js 中包含了 JavaScript 的一个严格子集 —— 包括严格类型的整数、浮点数、数值计算、函数调用和堆访问,这将对速度起到优化作用。asm.js 也在密切关注着 PNaCI 的发展情况,后者是 Google 对于在浏览器中运行原生代码的一个解决方案。起初,PNaCI 的性能表现比 asm.js 更为出色,但最近一段时间以来,我们都没有听说它的任何进展情况。
在这篇 InfoQ 新闻中,可以找到更多与 asm.js 和 PNaCI 相关的内容。
评论