BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Google、V8 JavaScriptエンジンのバージョン7.2と7.3をリリース

Google、V8 JavaScriptエンジンのバージョン7.2と7.3をリリース

原文(投稿日:2019/02/27)へのリンク

GoogleのV8 JavaScriptエンジンのバージョン7.2と7.3には、JavaScriptパース性能の向上、新しいJavaScript言語機能のサポート、WebAssemblyパフォーマンス改善が含まれている。

binary-astプロポーザルの導入により、JavaScriptパース時間の性能向上に目が向けられている。

V8 7.2のリリース発表によると、典型的なWebページにおいて、V8実行時間の約10%が、起動時のJavaScriptリソースのパースに費やされているという。バージョン7.0から7.2で、V8のデスクトップパース性能は約30%向上し、その結果、典型的なJavaScriptのパースは実行時間の約7.5%に下がった。

V8 7.2リリースには、最近発表されたasync機能とpromisesを最適化する改善が含まれている。7.3リリースではasyncスタックトレースが可能になり、非同期コードをデバッグする際の開発者体験が向上している。

7.2リリースでは、スプレッド要素が配列リテラルの最初の項目である場合(例えば[...foo, 42, 75])の性能も改善されている。V8チームは次のように説明した。

この改善は、配列、プリミティブ文字列、セット、マップキー、マップバリューのスプレッディング、さらにはArray.from(x)まで、いくつかのユースケースで恩恵があります。

V8 7.2では、JavaScript言語プロポーザルのサポートが複数追加されている。public class fieldsのTC39 Stage 3プロポーザルがサポートされ、private class fieldsは今後のV8リリースで計画されている。Intl.ListFormatのサポートによりローカライズしたリストフォーマットが可能になる。そして、module namespace exportsのStage 1プロポーザル(export * as utils from './utils.mjs';)も今回のリリースに含まれている。

7.3リリースは、ES2019仕様に含まれるObject.fromEntriesのStage 4プロポーザルをサポートする。また、キャプチャグループでの正規表現マッチのイテレートを簡単にするStage 3 String.prototype.matchAllプロポーザルのサポートも含まれている。

これらのリリースでは、WebAssemblyにも目が向けられている。V8チームの説明によると、バージョン7.2には多くの改善が含まれているという。

私たちは様々なWebAssemblyベンチマークを分析することで、最上位実行層におけるコード生成を改善してきました。特にV8 v7.2では、最適化コンパイラのスケジューラにおけるノード分割とバックエンドにおけるループローテーションが可能になりました。また、ラッパーキャッシングを改善し、インポートされたJavaScript math関数の呼び出しオーバーヘッドを削減するカスタムラッパーを導入しました。さらに、レジスタアロケータに変更を加えて、今後のバージョンで使われる多くのコードパターンの性能が改善されるように設計しています。

バージョン7.3では、生成されるコードの品質を低下させることなく、WebAssemblyコンパイル時間を15–25%削減している。

トラップハンドラによってWebAssemblyコードのスループットを改善する重要な作業も進んでいる。V8 v7.2では、Windows、macOS、Linuxをサポートしている。

Chromeのリリースに合わせて6週ごとに、GoogleはV8 JavaScriptエンジンのブランチリリースを作成している。V8のバージョン7.2はChrome 72に、7.3はChrome 73に搭載されている。V8はNode.js JavaScriptランタイムにも組み込まれている。

V8はオープンソースソフトウェアであり、外部依存によりコードベースのサブセットに対して適用される複数のライセンスがある。彼らはV8 Gitプロジェクト経由でのコントリビューションを歓迎しており、V8のコントリビューションガイドラインGoogleのオープンソース行動ガイドラインに従う必要がある。

この記事に星をつける

おすすめ度
スタイル

BT