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

究極に高速な解析、第1部:スキャナーの最適化

· 約14分
トーン・ベルウェースト ([@tverwaes](https://twitter.com/tverwaes)), スキャンダラスな最適化者

JavaScriptプログラムを実行するには、まずソーステキストをV8が理解できる形式に処理する必要があります。V8は、ソースを抽象構文木(AST)というプログラム構造を表すオブジェクトのセットに解析することから始めます。このASTはIgnitionによってバイトコードにコンパイルされます。この解析+コンパイルフェーズの性能は重要です。V8はコンパイルが終わるまでコードを実行することができないからです。このブログ記事のシリーズでは、解析に焦点を当て、V8で超高速のパーサーを実現するための取り組みについて説明します。

V8リリース v7.4

· 約10分
Georg Neis

6週間ごとに、私たちは新しいV8のブランチをリリースプロセスの一環として作成します。リリースプロセスの詳細を参照してください。各バージョンは、Chromeのベータ段階に入る直前にV8のGitマスターから分岐されます。本日は最新のブランチV8バージョン7.4のお知らせです。このバージョンは数週間後にChrome 74 Stableと連携してリリースされるまでベータ版となります。V8 v7.4は開発者向けのさまざまな機能が満載です。この投稿では、リリース前にいくつかのハイライトを事前に紹介します。

JITなしのV8

· 約5分
Jakob Gruber ([@schuay](https://twitter.com/schuay))

V8 v7.4は、実行時に実行可能なメモリを割り当てずにJavaScriptを実行することをサポートします。

デフォルト設定では、V8は実行時に実行可能なメモリを割り当てたり変更したりする機能に大きく依存しています。例えば、TurboFan最適化コンパイラはホットなJavaScript(JS)関数に対してネイティブコードをリアルタイムに生成し、多くのJS正規表現はirregexpエンジンによってネイティブコードにコンパイルされます。実行時に実行可能なメモリを作成することは、V8を高速にする要因の一つです。

V8リリース v7.3

· 約4分
Clemens Backes, コンパイラ担当

6週間ごとに、私たちはV8リリースプロセスの一環としてV8の新しいブランチを作成します。各バージョンはV8のGitマスターから直接Chrome Betaのマイルストーン直前に派生しています。本日、最新のブランチV8バージョン7.3を発表します。このバージョンは数週間後にChrome 73 Stableと連携してリリースされるまでベータ段階です。V8 v7.3は、開発者向けの魅力的な機能が満載です。この投稿では、リリースを待ついくつかのハイライトを紹介します。

ゴミ話: オリノコガーベッジコレクター

· 約17分
ピーター「ゴミ」マーシャル ([@hooraybuffer](https://twitter.com/hooraybuffer))

ここ数年で、V8のガーベッジコレクター(GC)は大きく変化しました。オリノコプロジェクトは、逐次処理型の完全停止ガーベッジコレクターを、主に並列および同時並行のコレクターとして段階的フォールバックを持つ形に変革しました。

V8リリース v7.2

· 約6分
Andreas Haas、トラップの管理者

私たちは6週間ごとに、リリースプロセスの一環としてV8の新しいブランチを作成しています。各バージョンはChrome Betaのマイルストーン直前にV8のGitマスターからブランチされます。本日、新しいブランチV8 version 7.2を発表できることを嬉しく思います。このバージョンは数週間後にChrome 72 Stableと連携してリリースされるまでベータ段階にあります。V8 v7.2は開発者向けのさまざまな便利機能が満載です。この投稿ではリリースに先立っていくつかの主要な特徴を紹介します。

スプレッド要素の高速化

· 約12分
Hai Dang & Georg Neis

Hai DangはV8チームでの3か月間のインターンシップ中に、[...array], [...string], [...set], [...map.keys()], および [...map.values()](配列リテラルの最初にスプレッド要素がある場合)のパフォーマンスを改善しました。さらに、Array.from(iterable) の速度も大幅に向上させました。この記事では、彼の変更の詳細について説明します。これらの変更はv7.2以降のV8に含まれています。

非同期関数とプロミスの高速化

· 約23分
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)), 常に待機する予測者, と Benedikt Meurer ([@bmeurer](https://twitter.com/bmeurer)), プロのパフォーマンス保証者

JavaScriptにおける非同期処理は従来、特に速いとは言えないレピュテーションを持っていました。さらに悪いことに、ライブJavaScriptアプリケーション、特にNode.jsサーバーのデバッグは簡単ではありません。特に 非同期プログラミングに関してはそうです。しかし、時代は変わりつつあります。本記事では、V8で非同期関数とプロミスをどのように最適化したか(そしてある程度は他のJavaScriptエンジンでも)、および非同期コードのデバッグ体験をどのように改善したかを探ります。

V8リリース v7.1

· 約4分
Stephan Herhut ([@herhut](https://twitter.com/herhut)), クローン作成者のクローン

6週間ごとに、私たちはV8の新しいブランチをリリースプロセスの一環として作成します。各バージョンは、Chrome Betaのマイルストーン直前にV8のGitマスターからブランチされます。本日は、最新のブランチV8バージョン7.1を発表できることを嬉しく思います。これは数週間でChrome 71 Stableと連携してリリースされるまでベータ版です。V8 v7.1は、開発者向けの便利な機能で満たされています。この投稿では、リリースに向けたハイライトの一部をプレビューとして紹介します。

V8リリース v7.0

· 約4分
Michael Hablich

約6週間ごとに、私たちはV8のリリースプロセスの一環として、新しいV8のブランチを作成します。各バージョンはChromeのベータ版マイルストーン直前にV8のGit masterからブランチが切られます。本日、V8 version 7.0の最新ブランチを発表できることを嬉しく思います。これは今後数週間でChrome 70安定版と調整してリリースされるまでベータ版です。V8 v7.0は開発者向けのすばらしい機能が満載です。この投稿では、リリースに先立ちいくつかの注目ポイントを予告します。