微信号:infoqchina

介绍:有内容的技术社区媒体

IE和Chrome都将支持asm.js

2015-03-04 11:50 InfoQ


根据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 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 【本周魔力计划】掌握编程中最基本的魔法:函数 代码性能——盘点数据结构设计方案 盘点Chatbot那些脑洞大开的产业创新应用 .NET Core 中的认证管理解析 邵震: Mobile Growth 的方法和实践