V8リリースv6.3
6週間ごとに、私たちのリリースプロセスの一環として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+の性能向上に向けた道を引き続き進んでいます。他の項目に加え、シンボルの多型アクセスの速度、コンストラクタ呼び出しの多型インライン化、およびタグ付きテンプレートリテラルの速度を向上させました。
弱最適化関数リストは廃止されました。詳しい情報は専用ブログ記事で確認できます。
上述の項目は、速度改善の完全なリストではありません。他にも多くのパフォーマンス関連の作業が行われています。
メモリ消費
Write barriersがCodeStubAssemblerを使用するように切り替えられました。これにより、各アイソレートで約100KBのメモリを節約できます。
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 Betaチャネルに登録し、新機能をすぐに自分で試してみることができます。