メインコンテンツまでスキップ

V8リリースv5.7

· 約4分
V8チーム

毎6週間ごとに、私たちはリリースプロセスの一環としてV8の新しいブランチを作成しています。各バージョンは、Chromeのベータマイルストーン直前にV8のGitマスターから分岐されます。本日、私たちは最新のブランチV8バージョン5.7を発表します。このブランチは数週間後にChrome 57 Stableと調整してリリースされるまでベータ版となります。V8 5.7には、開発者向けの多くの便利な機能が詰まっています。このリリースを前に、一部のハイライトをご紹介します。

パフォーマンスの改善

ネイティブasync関数の性能がPromiseと同等

Async関数は、Promiseを使用したコードとほぼ同じくらい高速になりました。当チームのmicrobenchmarksによると、Async関数の実行性能は4倍に向上しました。同期間中、Promise全体の性能も倍増しました。

Linux x64でのV8におけるAsync性能向上

ES2015の継続的な改善

V8は新しい言語機能を性能コストなしで使えるように、ES2015言語機能を高速化し続けています。スプレッド演算子、分割代入、ジェネレーターは現在ではその単純なES5相当とほぼ同等の速度です。

RegExpが15%高速化

RegExp関数を自己ホスト型のJavaScript実装からTurboFanのコード生成アーキテクチャに結び付けた実装に移行することで、RegExp全体のパフォーマンスが約15%向上しました。詳細はこちらのブログ記事をご覧ください。

JavaScript言語機能

ECMAScript標準ライブラリへの最近の追加機能のいくつかがこのリリースに含まれています。2つのStringメソッド、padStartpadEndは便利な文字列フォーマット機能を提供し、Intl.DateTimeFormat.prototype.formatToPartsはロケールに応じた日付/時刻のフォーマットをカスタマイズする能力を提供します。

WebAssembly有効化

Chrome 57(V8 v5.7を含む)は、デフォルトでWebAssemblyを有効化する最初のリリースとなります。詳細については、webassembly.orgの開始ガイドおよびMDNのAPIドキュメントをご覧ください。

V8 APIへの追加

私たちのAPI変更の概要をご覧ください。このドキュメントは主要リリースの数週間後に定期的に更新されます。アクティブなV8チェックアウトを持つ開発者は、git checkout -b 5.7 -t branch-heads/5.7を使用してV8 v5.7の新機能を試すことができます。または、Chromeのベータチャンネルを購読し、間もなく新機能をお試しください。

PromiseHook

このC++ APIにより、Promiseのライフサイクルを追跡するプロファイリングコードの実装が可能になります。これにより、Nodeの新しいAsyncHook APIが実現され、非同期コンテキスト伝播を構築できます。

PromiseHook APIは次の4つのライフサイクルフックを提供します:init、resolve、before、after。新しいPromiseが作成されるとinitフックが実行され、Promiseが解決されるとresolveフックが実行されます。pre & postフックはPromiseReactionJobの直前と直後に実行されます。詳細については、追跡問題および設計ドキュメントをご覧ください。