| 開発者 | グーグル[1] |
|---|---|
| 初回リリース | 2008年9月2日 |
| 安定版リリース | 11.4 [2]
/ 2023年5月24日 |
| リポジトリ |
|
| 書かれた | C++ [1] |
| プラットフォーム | IA-32、x86-64、32ビットARM、AArch64、32ビットMIPS、MIPS64、PowerPC、IBM ESA/390、z/Architecture |
| タイプ | JavaScriptとWebAssemblyエンジン |
| ライセンス | BSDS [3] |
| Webサイト | v8.dev |
V8は、GoogleがChromeブラウザ用に開発したJavaScriptおよびWebAssemblyエンジンです。[1] [4] V8は、 Chromiumプロジェクトの一部である無料のオープンソースソフトウェアであり、ブラウザ以外のコンテキスト、特にNode.jsランタイムシステムでも個別に使用されています。[1]
歴史
GoogleはChromeブラウザ用にV8を開発し、どちらも2008年に初めてリリースされました。[4] V8の主任開発者はLars Bakで、強力な自動車エンジンにちなんで名付けられました。[5]数年間、ChromeはJavaScriptの実行において他のブラウザよりも高速でした。[6] [7] [8]
V8アセンブラはStrongtalkアセンブラをベースにしている。[9] 2010年12月7日には、速度が向上したCrankshaftという新しいコンパイル基盤がリリースされた。[10] 2015年のChromeバージョン41では、 asm.jsなどの以前は困難だったワークロードでさらなるパフォーマンス向上を実現するプロジェクトTurboFanが追加されている。[11] V8の開発の多くは、Sun Microsystemsが開発したJava HotSpot仮想マシンに強く影響を受けており、新しい実行パイプラインはHotSpotのものと非常によく似ている。
新しいWebAssembly言語のサポートは2015年に開始されました。[12]
2016年に、TurboFanやCrankshaftと比較して、メモリの少ないAndroidスマートフォンのメモリ使用量を削減するという設計目標を掲げて、IgnitionインタープリタがV8に追加されました。 [13] Ignitionはレジスタベースのマシンであり、HotSpotで使用されているテンプレートインタープリタと似た(まったく同じではないものの)設計になっています。
2017年、V8はIgnition(インタープリタ)とTurboFan(最適化コンパイラ)で構成されるまったく新しいコンパイラパイプラインをリリースしました。V8バージョン5.9以降、V8ではJavaScript実行にFull-codegen(初期のベースラインコンパイラ)とCrankshaftが使用されなくなりました。これは、新しいJavaScript言語機能とそれらの機能に必要な最適化に追いつけなくなったとチームが考えたためです。[14]
2021 年には、HotSpot で使用されるプロファイリング C1 コンパイラと直接並行して、V8 内の既存の TurboFan コンパイラを補完する SparkPlug コンパイラのリリースにより、新しい階層型コンパイル パイプラインが導入されました。
2023年には、Maglev SSAベースのコンパイラが追加されました。これはSparkplugよりも10倍遅いですが、TurboFanよりも10倍高速で、JavaScriptの実行よりもブラウザとのやり取りに多くの時間を費やすほとんどのWebアプリケーションの場合のように、TurboFanによって最適化されるほど「熱く」ならない、実行頻度の低いループについて、SparkplugとTurboFanの間のギャップを埋めます。[15]
デザイン
V8はまず、独自のパーサーを使用して抽象構文木を生成します。 [16]次に、Ignitionは、内部のV8バイトコード形式を使用して、この構文木からバイトコードを生成します。 [17] TurboFanはこのバイトコードをマシンコードにコンパイルします。言い換えると、V8は、実行前にジャストインタイムコンパイルを使用して、ECMAScriptをネイティブマシンコードに直接コンパイルします。 [18]コンパイルされたコードは、コードの実行プロファイルのヒューリスティックに基づいて、実行時に動的にさらに最適化(および再最適化)されます。使用される最適化手法には、インライン化、高価なランタイムプロパティの省略、およびインラインキャッシュが含まれます。ガベージコレクターは世代別増分コレクターです。[19]
使用法
V8は、32ビット版と64ビット版の両方でx86、ARM、MIPS 命令セットアーキテクチャにコンパイルできます。さらに、 PowerPC [20] [ 21]やIBM ESA/390、z/Architecture [22] [20]にも移植され、サーバーでの使用が可能になりました。[23]
V8 はブラウザで使用したり、独立したプロジェクトに統合したりできます。V8 は次のソフトウェアで使用されます。
- ChromiumベースのWeb ブラウザ- Google Chrome、Brave、Opera、Vivaldi、Microsoft Edge。
- Couchbaseデータベース サーバー
- Denoランタイム環境[24]
- AtomおよびVisual Studio Codeテキスト エディターで使用されるElectronデスクトップ アプリケーション フレームワーク
- MarkLogicデータベースサーバー
- NativeScriptモバイルアプリケーションフレームワーク[25]
- Node.jsランタイム環境[26]
参照
- Blink、Chromiumブラウザエンジン
参考文献
- ^ abcd "Documentation · V8". Google . 2024年3月3日閲覧。
- ^ 「Chrome プラットフォームのステータス」 。2023年6 月 29 日閲覧。
- ^ 「v8/LICENSE.v8 at master」。Github。
- ^ ab Lenssen, Philipp (2008 年 9 月 1 日)。「Google on Google Chrome - コミックブック」。Google Blogoscoped。2010年8 月 17 日閲覧。
- ^ 「V8: オープンソースの JavaScriptエンジン」。YouTube。Google。2024年3月 15 日閲覧。
- ^ 「大規模ブラウザ比較テスト: Internet Explorer vs. Firefox、Opera、Safari、Chrome」。PCゲーム ハードウェア。Computec Media AG。2009 年 7 月 3 日。2012 年 5 月 2 日時点のオリジナルよりアーカイブ。2010年6 月 28 日閲覧。
- ^ Purdy, Kevin (2009年6月11日). 「Lifehacker Speed Tests: Safari 4, Chrome 2」. Lifehacker . 2021年4月14日時点のオリジナルよりアーカイブ。 2021年5月8日閲覧。
- ^ 「Mozilla が『我々はもう速いのか?』と問う」Wired。2018年6月22日時点のオリジナルよりアーカイブ。2019年1月18日閲覧。
- ^ 「V8 JavaScript エンジン: ライセンス」。Google Code。2010年 7 月 22 日時点のオリジナルよりアーカイブ。2010年8 月 17 日閲覧。
- ^ 「V8用の新しいクランクシャフト」。Chromium Blog。2010年12月7日。 2011年4月22日閲覧。
- ^ 「TurboFan で JavaScript のパフォーマンスを向上」。2015 年 7 月 7 日。2016 年3 月 5 日閲覧。
- ^ 「V8 での WebAssembly の実験的サポート」v8.dev 。2024年3 月 12 日閲覧。
- ^ “BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8”. YouTube . 2016年6月26日. 2021年12月21日時点のオリジナルよりアーカイブ。 2016年9月2日閲覧。
- ^ 「IgnitionとTurboFanの起動」2017年5月16日。 2017年7月13日閲覧。
- ^ 「Maglev - V8の最速の最適化JIT」。2023年12月5日。 2024年1月26日閲覧。
- ^ Verwaest, Toon (2019年3月25日). 「Blazingly fast parsing, part 1: optimizing the scanner · V8」. v8.dev . 2021年4月21日時点のオリジナルよりアーカイブ。2021年6月1日閲覧。
- ^ Hinkelmann, Franziska (2017 年 12 月 19 日). 「V8 のバイトコードを理解する」. Medium . 2019 年10 月 17 日閲覧。
- ^ 「Ignition インタープリターの起動 · V8」v8.dev . 2020 年9 月 30 日閲覧。
- ^ 「インタラクティブパフォーマンスのゲームチェンジャー」。blog.chromium.org。2011年11月21日。 2022年2月6日閲覧。
- ^ ab 「Google V8 の PPC サポートが主流に」2015 年 6 月 30 日。2015 年 9 月 12 日時点のオリジナルよりアーカイブ。
- ^ 「GitHub - ibmruntimes/v8ppc: Google V8 JavaScript エンジンの PowerPC® への移植」。2019 年 4 月 21 日 – GitHub 経由。
- ^ 「Google V8 JavaScript エンジンの z/OS への移植。Linux on Z の移植はコミュニティで管理されています: ibmruntimes/v8z」。2019 年 4 月 2 日 – GitHub 経由。
- ^ 「V8 Changelog v3.8.2」。2012年10月22日時点のオリジナルよりアーカイブ。2012年10月23日閲覧。
- ^ 「V8、Rust、Tokio で構築された安全な JavaScript/TypeScript ランタイム: denoland/deno」。2019 年 7 月 8 日 – GitHub 経由。
- ^ 「概要 - NativeScript ドキュメント」。docs.nativescript.org。
- ^ Jolie O'Dell (2011 年 3 月 10 日)。「なぜ誰もが Node について話しているのか」。Mashable。
外部リンク
- 公式サイト
