welefen

V8 JavaScript 引擎:V8 6.1 版本

原文链接: v8project.blogspot.jp

###V8 6.1 版本

每六周,作为发布进程的一部分,我们会为 V8 创建一个新的分支。每个版本都是在 Chrome beta 里程碑之前立即从 git 主干创建的。今天我们很高兴宣布新的分支,V8 version 6.1,它会一直处于测试阶段直到在几周内与 chrome 61 协调一致。V8 v6.1中充满了各种面向开发人员的好处。我们很乐意给你展现关于发布的一些亮点。

#性能改进

通过iteration或者Map.prototype.forEach/Set.prototype.forEach方法访问 Maps 和 Sets 中的所有元素会变得相当快速,相对与 V8 6.0 版本有 11 倍的提速。通过dedicated blog post可以获得更多的信息。

除此之外,会持续改进语言其他特性的性能。比如,相对于类和构造器函数,Object.prototype.isPrototypeOf方法,对于对象字面量和 Object.create 创建的无构造器代码是非常重要的,现在快到经常比instanceof操作符判断还要快。

函数调用和带有不定参数的构造器调用的速度也大大提升。相对于上一个版本,Reflect.applyReflect.construct调用有17倍的性能提升。

Array.prototype.forEach 方法在TurboFan优化编译器中会被内联,并且为所有的密集元素做了优化。

#二进制文件大小减少

V8团队已经完整的移除了废弃的Crankshaft编译器,减少了相当多的二进制文件大小。除了删除内置的生成器,这还减少了超过了 700KB 的 V8二进制文件大小,具体的取决于对应的平台。

#asm.js 已经可以验证并且会编译为WebAssembly

如果 V8 解析到 asm.js 代码,现在会试图去校验。校验成功后会转译为WebAssembly.根据 V8 的性能评估,这通常能够提升吞吐量性能。由于增加了校验的步骤,启动性能方面可能会出现退化。

请注意,这一特性在默认情况下只在Chromium上开启。如果你嵌入时想使用 asm.js 验证器,需要开启标志 --validate-asm

#WebAssembly

当调试WebAssembly时,现在可以在DevTools显示局部变量并且可以在WebAssembly代码里设置断点。

V8 API

请查看我们的summary of API changes。在每次主版本发布后的几周内,该文档都会定期更新。

开发者可以通过active V8 checkout然后使用 git checkout -b 6.1 -t branch-heads/6.1 来体验 V8 v6.1 里新的特性。或者你可以订阅Chrome’s Beta频道,并尽快尝试新功能。

V8 团队发布

Mathias Bynens发布

cc