跳到主要内容

V8 发布 v5.0

· 阅读需 3 分钟
V8 团队

V8 发布流程 的第一步是在 Chrome Beta 里程碑分支之前从 Git 主分支创建一个新分支(大约每六周一次)。我们最新的发布分支是 V8 v5.0,它将在我们与 Chrome 50 Stable 一起发布稳定版本之前保持测试版状态。以下是这个版本中面向开发者的新功能亮点。

备注

注意: 版本号 5.0 不具有语义上的重要意义,也不标志着一个主要版本(与次要版本相对)。

改进的 ECMAScript 2015 (ES6) 支持

V8 v5.0 包含一些与正则表达式(regex)匹配相关的 ES2015 特性。

RegExp Unicode 标志

RegExp Unicode 标志u,开启正则表达式匹配的新 Unicode 模式。Unicode 标志将模式和正则表达式字符串视为 Unicode 码点序列,并引入了新的 Unicode 码点转义语法。

/😊{2}/.test('😊😊');
// false

/😊{2}/u.test('😊😊');
// true

/\u{76}\u{38}/u.test('v8');
// true

/\u{1F60A}/u.test('😊');
// true

u 标志还使得 . 原子(也称为单字符匹配器)匹配任何 Unicode 符号,而不仅仅是基本多语言平面(BMP)中的字符。

const string = 'the 🅛 train';

/the\s.\strain/.test(string);
// false

/the\s.\strain/u.test(string);
// true

RegExp 自定义钩子

ES2015 提供了 RegExp 子类可以更改匹配语义的钩子。子类可以重写名为 Symbol.matchSymbol.replaceSymbol.searchSymbol.split 的方法,以改变 RegExp 子类在 String.prototype.match 等方法中的行为。

ES2015 和 ES5 功能的性能改进

版本 5.0 还为已经实现的 ES2015 和 ES5 特性带来了一些显著的性能改进。

剩余参数的实现比前一个版本快 8-10 倍,使得在函数调用之后将大量参数收集到一个数组中更加高效。Object.keys 用于按 for-in 返回的顺序迭代对象的可枚举属性,现在快了大约 2 倍。

V8 API

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

开发者可以使用 活跃的 V8 checkout 执行 git checkout -b 5.0 -t branch-heads/5.0 来体验 V8 5.0 中的新特性。或者可以 订阅 Chrome 的 Beta 频道,自己尽快试用这些新功能。