All Articles

V8 Blog | V8 release v6.4 2017-12-19

1. 原文

V8 release v6.4

2. 摘要翻译

Speed

V8 v6.4提升instanceof操作符的性能达3.6倍。经V8’s Web Tooling Benchmark测试,uglify-js比之前快了15-20%。

这个版本也定位了一些Function.prototype.bind中的性能障碍。

WeakMapWeakSet现在使用CodeStubAssembler来进行实现,性能提升了5倍

经过努力,内置的array性能也得到了提升,通过CodeStubAssembler重新实现,Array.prototype.slice的性能提升了约4倍。此外,Array.prototype.mapArray.prototype.filter现在大部分情况下都会被内联,拥有了和手写版本差不多的性能。

We worked to make out-of-bounds loads in arrays, typed arrays, and strings no longer incur a ~10× performance hit after noticing this coding pattern being used in the wild.

Memory

V8内置的代码对象以及字节码处理器现在在快照中将会懒式反序列化,这会显著降低每个Isolate的内存消耗。Benchmarks显示在Chrome打开普通网页的时候,每个tab可以节约下几百KB的内存。

ECMAScript language features

添加了两个新的正则表达式功能:

/u标识打开的时候,Unicode property escapes将默认启用:

const regexGreekSymbol = /\p{Script_Extensions=Greek}/u;
regexGreekSymbol.test('π');
// → true

named capture groups的支持将默认启用:

const pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u;
const result = pattern.exec('2017-12-15');
// result.groups.year === '2017'
// result.groups.month === '12'
// result.groups.day === '15'

更多的细节可以在这篇博文中查看:Upcoming regular expression features

V8现已实现import.meta,使得嵌入者可以通过该方法暴露当前模块的host-specific metadata

新加入的API:Intl.NumberFormat.prototype.formatToParts()可以帮助开发者将数字国际化成需要的符号和类型。

V8 API

请使用git log branch-heads/6.3..branch-heads/6.4 include/v8.h来获得API改动的列表。

EOF

Published 2018/3/21

Some tech & personal blog posts