跳到主要内容

V8发布v6.3

· 阅读需 3 分钟
V8团队

每隔六周,我们都会创建一个新的V8分支,作为我们发布流程的一部分。每个版本都在Chrome Beta里程碑之前从V8的Git主分支分离出来。今天,我们很高兴地宣布我们最新的分支,V8版本6.3,它将在未来几周与Chrome 63稳定版协调发布前处于测试阶段。V8 v6.3充满了各种面向开发者的亮点。此帖子提供了一些亮点的预览,以期待发布。

速度

Jank Busters III作为Orinoco项目的一部分已经发布。并行标记(标记工作的70%-80%在非阻塞线程上完成)已推出。

解析器现在不再需要第二次预解析函数。这在我们的内部启动Top25基准上转换为解析时间中值提升14%

string.js已完全移植到CodeStubAssembler。感谢@peterwmwong出色贡献! 对于开发者来说,这意味着从V8 v6.3开始,内建字符串函数如String#trim会快得多。

Object.is()的性能现在大致与替代方案相当。总体来讲,V8 v6.3继续走向改善ES2015+性能的道路。此外,我们提高了符号的多态访问速度构造函数调用的多态内联以及(标记的)模板字符串

V8过去六个版本的性能变化

弱优化功能列表已移除。详细信息可在专用博客文章中找到。

上述内容是速度改进的非详尽列表。还有很多其他与性能相关的工作已经完成。

内存消耗

写屏障已改用CodeStubAssembler。每个隔离环境节省约100 KB的内存。

JavaScript语言特性

V8现在支持以下第3阶段特性:通过import()动态模块导入Promise.prototype.finally()异步迭代器/生成器

使用动态模块导入,根据运行时条件导入模块变得非常简单。这在应用程序需要延迟加载某些代码模块时非常方便。

Promise.prototype.finally提供了一种在Promise解决后轻松清理的方法。

通过引入异步迭代器/生成器,使用异步函数进行迭代变得更为便捷。

Intl方面,Intl.PluralRules现在已支持。此API支持高性能的国际化复数处理。

观察器/调试

在Chrome 63中,代码块覆盖率也在DevTools UI中获得支持。请注意,从V8 v6.2开始,观察器协议已经支持代码块覆盖率。

V8 API

请查看我们的API更改摘要。该文档在每次主要版本发布后几周定期更新。

拥有活动的V8检出的开发者可以使用git checkout -b 6.3 -t branch-heads/6.3来试验V8 v6.3中的新功能。或者,您可以订阅Chrome测试版频道,并很快自己尝试这些新功能。