介绍:EmscriptenC/C++toJavaScript项目使用LLVM的后端来构建具有更快速度和针对性优势的编译解决方案。当它首次宣布时,Emsripten听起来像是一个尖锐的技术笑话:一个可以将C/C++代码转换为Asm的编译器。作为JavaScript的子集运行。然而,事实证明,这一切都不是闹着玩的。Emscripten和Asm.js(后者原本是Mozilla公司发起的研究项目)从诞生之日起逐步发展,最终取得了令人瞩目的进步。***公布的技术成果是新版Emscripten使用了来自LLVM的编译器核心来替代原来的机制——这个编译器技术框架原本主要用于C/C++环境,但也可以支持其他多种语言。根据Emscripten项目的开发人员的说法,切换到LLVM为Emscripten带来了几个新的优势。首先,整个编译过程更快——“通常会导致转换效率提高四倍或更多,”他们指出——而且转换所需的内存量也减少了。这一变化还“避免了遗留编译器偶尔会遇到的不可预测和恶性的减速。”更重要的是,LLVM后端允许Emscripten与LLVM本身更紧密地连接。使用LLVM的唯一缺点是它必须有目的地重新编译才能与Emscripten一起很好地工作。LLVM的处理结果只能为我们提供上述部分优势,除非有其他选择,否则很难充分利用它们。Asm.js仍然被普遍认为是一种实验性技术,直接支持它的浏览器只有MozillaFirefox。尽管如此,它的实际表现仍然令人印象深刻。就在最近,Asm.js成功地将Unreal游戏引擎移植到JavaScript环境中,使得该平台可以直接在浏览器中运行,无需任何插件或非原生代码。谷歌尚未就是否全面支持Asm.js做出最终决定,但Chrome浏览器已经确认将向其生成的JavaScript应用程序张开双臂——尽管速度提升水平远不能与Firefox相提并论。Google的计划似乎是使用Dart语言作为浏览器平台,以提高近乎原生代码的执行速度。然而,JavaScript的流行性和灵活性仍然具有显着的优势,至少目前如此。Dart可能很难在短时间内获得。竞争优势。英文原文:http://www.infoworld.com/t/javascript/new-compiler-cranks-javascript-native-code-240923
