V8发布流程中的第一步就是在Chromium为新的Chrome Beta里程碑创建新分支之前从master分支创建新的分支,频率为每6周。我们最新的发布分支是V8 5.0,它仍然处于beta状态,直到我们随Chrome 50稳定版发布稳定版本。该版本中有一些开发者关注的新特性。
注:5.0这个版本号并不是凸显语义重要,或作为一个主要的版本(也不是次要版本)。
改进对ECMAScript 2015 (ES6)的支持
V8 5.0包含一些与正则表达式匹配相关的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)上的字符。
var string = 'the 🅛 train';
/the\s.\strain/.test(string);
// false
/the\s.\strain/u.test(string);
// true
RegExp自定义钩子
ES2015包括RegExp子类改变匹配的语义的钩子。子类可以通过重载Symbol.match、Symbol.replace、Symbol.search和Symbol.split命名的方法,来改变RegExp子类与String.prototype.match
和类似方法之间的表现。
性能提升
5.0版本也给已经实现的ES2015和ES5特性带来一些显著的性能提升。
rest parameters的实现比前一个版本快8-10倍,使之更有效地在函数调用后收集大量参数到函数中。Object.keys()
,用于遍历对象的可枚举属性非常有用,跟for .. in
的返回顺序相同,现在大约2倍快。
V8 API
请检查我们汇总的API改动。这个文档通常在每次主要发布几周后更新。
活跃开发者可以使用git checkout -b 5.0 -t branch-heads/5.0
来体验V8 5.0中的新特性。另外也可以订阅Chrome的Beta频道和自己尝试新特性。