# V8 (JavaScript engine)

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/V8_(JavaScript_engine)
> Markdown URL: https://mediated.wiki/source/V8_(JavaScript_engine).md
> Source: https://en.wikipedia.org/wiki/V8_(JavaScript_engine)
> Source revision: 1356461887
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

JavaScript and WebAssembly engine

For the engine used in vehicles, see [V8 engine](/source/V8_engine).

V8 Developer Google[1] Release 2 September 2008; 17 years ago (2008-09-02) Stable release 11.4[2] / 24 May 2023; 3 years ago (24 May 2023) Written in C++[1] Platform IA-32, x86-64, 32-bit ARM, AArch64, 32-bit MIPS, MIPS64, PowerPC, IBM ESA/390, z/Architecture Type JavaScript and WebAssembly engine License BSD-3-Clause[3] Website v8.dev Repository chromium.googlesource.com/v8/v8

**V8** is a [JavaScript](/source/JavaScript_engine) and [WebAssembly](/source/WebAssembly) engine developed by [Google](/source/Google) for its [Chrome browser](/source/Google_Chrome).[1][4] V8 is [free and open-source software (FOSS)](/source/Free_and_open-source_software) and part of the [Chromium](/source/Chromium_(web_browser)) project. It's also used in non-browser contexts, notably including the [Node.js runtime system](/source/Node.js).[1] Other server-side JavaScript runtimes use alternative engines, such as [Bun](/source/Bun_(software)) (which uses [JavaScriptCore](/source/JavaScriptCore)) and Hermes (used by [React Native](/source/React_Native)).

## History

Google created V8 for its Chrome browser, so V8's first release coincided with Chrome's in 2008.[4] It was named after the [V8 car engine](/source/V8_engine), and its lead developer was [Lars Bak](/source/Lars_Bak_(computer_programmer)).[5] For several years, Chrome was faster than other browsers at executing JavaScript.[6][7][8]

The V8 [assembler](/source/Assembly_language#Assembler) is based on the [Strongtalk](/source/Strongtalk) assembler.[9] On 7 December 2010, a new compiling infrastructure named Crankshaft was released, with speed improvements.[10] In version 41 of Chrome in 2015, project TurboFan was added to provide more performance improvements with previously challenging workloads such as [asm.js](/source/Asm.js).[11] Much of V8's development is strongly inspired by the [Java HotSpot Virtual Machine](/source/HotSpot_(virtual_machine)) developed by [Sun Microsystems](/source/Sun_Microsystems), with the newer execution pipelines being very similar to those of HotSpot's.

Support for the WebAssembly language began in 2015.[12]

In 2016, the Ignition interpreter was added to V8 with the design goal of reducing the [memory](/source/Memory_cell_(computing)) usage on small memory [Android](/source/Android_(operating_system)) phones in comparison with TurboFan and Crankshaft.[13] Ignition is a [register based machine](/source/Register_machine) and shares a similar (albeit not the exact same) design to the templating interpreter utilized by HotSpot.

In 2017, V8 shipped a brand-new [compiler](/source/Compiler) pipeline, consisting of Ignition (the [interpreter](/source/Abstract_syntax_tree_interpreter)) and TurboFan (the [optimizing compiler](/source/Program_optimization)). Starting with V8 version 5.9, Full-codegen (the early baseline compiler) and Crankshaft are no longer used in V8 for JavaScript execution, since the team believed they were no longer able to keep pace with new JavaScript language features and the optimizations those features required.[14]

In 2021, a new tiered compilation pipeline was introduced with the release of the SparkPlug compiler, which supplements the existing TurboFan compiler within V8, in a direct parallel to the profiling C1 Compiler used by HotSpot.

In 2023, the Maglev [SSA](/source/Static_single-assignment_form)-based compiler was added, which is 10 times slower than Sparkplug but 10 times faster than TurboFan, bridging the gap between Sparkplug and TurboFan for less frequently run loops that do not get "hot" enough to be optimised by TurboFan, as is the case for most web applications that spend more time interacting with the browser than in JavaScript execution.[15]

## Design

V8 first generates an [abstract syntax tree](/source/Abstract_syntax_tree) with its own parser.[16] Then, Ignition generates [bytecode](/source/Bytecode) from this syntax tree using the internal V8 [bytecode](/source/Bytecode) format.[17] TurboFan compiles this bytecode into machine code. In other words, V8 compiles [ECMAScript](/source/ECMAScript) directly to native [machine code](/source/Machine_code) using [just-in-time compilation](/source/Just-in-time_compilation) before executing it.[18] The compiled code is additionally optimized (and re-optimized) dynamically at runtime, based on heuristics of the code's execution profile. Optimization techniques used include [inlining](/source/Inlining), [elision](/source/Copy_elision) of expensive runtime properties, and [inline caching](/source/Inline_caching). The [garbage collector](/source/Garbage_collection_(computer_science)) is a [generational](/source/Tracing_garbage_collection#Generational_GC_(ephemeral_GC)) [incremental](/source/Tracing_garbage_collection#Stop-the-world_vs._incremental_vs._concurrent) collector.[19]

## Usage

V8 can compile to [x86](/source/X86_architecture), [ARM](/source/ARM_architecture) or [MIPS](/source/MIPS_architecture) [instruction set architectures](/source/Instruction_set_architecture) in both their [32-bit](/source/32-bit_computing) and [64-bit](/source/64-bit_computing) editions; it has additionally been ported to [PowerPC](/source/PowerPC),[20][21] and to [IBM ESA/390](/source/IBM_ESA%2F390) and [z/Architecture](/source/Z%2FArchitecture),[22][20] for use in servers.[23]

V8 can be used in a browser or integrated into independent projects. V8 is used in the following software:

- [Chromium](/source/Chromium_(web_browser))-based [web browsers](/source/Web_browser) - [Google Chrome](/source/Google_Chrome), [Brave](/source/Brave_(web_browser)), [Opera](/source/Opera_(web_browser)), [Vivaldi](/source/Vivaldi_(web_browser)) and [Microsoft Edge](/source/Microsoft_Edge).

- Cloud-based environments, like [Google Apps Script](/source/Google_Apps_Script)[24]

- [Couchbase](/source/Couchbase_Server) database server

- [Deno](/source/Deno_(software)) runtime environment[25]

- [Electron](/source/Electron_(software_framework)) desktop application framework, used by apps such as the [Visual Studio Code](/source/Visual_Studio_Code) text editor and [Discord](/source/Discord)

- [MarkLogic](/source/MarkLogic_Server) database server

- [NativeScript](/source/NativeScript) mobile application framework[26]

- [Node.js](/source/Node.js) runtime environment[27]

## See also

- [Free and open-source software portal](https://en.wikipedia.org/wiki/Portal:Free_and_open-source_software)
- [Internet portal](https://en.wikipedia.org/wiki/Portal:Internet)

- [Blink](/source/Blink_(browser_engine)), the Chromium browser engine

- [List of JavaScript engines](/source/List_of_JavaScript_engines)

## References

1. ^ [***a***](#cite_ref-v8_doc_1-0) [***b***](#cite_ref-v8_doc_1-1) [***c***](#cite_ref-v8_doc_1-2) [***d***](#cite_ref-v8_doc_1-3) ["Documentation · V8"](https://v8.dev/docs). Google. Retrieved 3 March 2024.

1. **[^](#cite_ref-wikidata-e19b087eea73854757d86a770151693b4c5722e3-v20_2-0)** ["Chrome Platform Status"](https://chromestatus.com/roadmap). Retrieved 29 June 2023.

1. **[^](#cite_ref-3)** ["v8/LICENSE.v8 at master"](https://github.com/v8/v8/blob/master/LICENSE.v8). Github.

1. ^ [***a***](#cite_ref-comic_4-0) [***b***](#cite_ref-comic_4-1) Lenssen, Philipp (1 September 2008). ["Google on Google Chrome - comic book"](http://blogoscoped.com/google-chrome/). *Google Blogoscoped*. Retrieved 17 August 2010.

1. **[^](#cite_ref-5)** ["V8: an open source JavaScript engine"](https://www.youtube.com/watch?v=hWhMKalEicY). *YouTube*. Google. 15 September 2008. Retrieved 15 March 2024.

1. **[^](#cite_ref-6)** ["Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome"](https://web.archive.org/web/20120502043027/http://www.pcgameshardware.com/aid,687738/Big-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final/Practice/). *PC Games Hardware*. Computec Media AG. 3 July 2009. Archived from [the original](https://www.pcgameshardware.com/aid,687738/Big-browser-comparison-test-Internet-Explorer-vs-Firefox-Opera-Safari-and-Chrome-Update-Firefox-35-Final/Practice/) on 2 May 2012. Retrieved 28 June 2010.

1. **[^](#cite_ref-7)** Purdy, Kevin (11 June 2009). ["Lifehacker Speed Tests: Safari 4, Chrome 2"](https://lifehacker.com/lifehacker-speed-tests-safari-4-chrome-2-and-more-5286869). *[Lifehacker](/source/Lifehacker)*. [Archived](https://web.archive.org/web/20210414095403/https://lifehacker.com/lifehacker-speed-tests-safari-4-chrome-2-and-more-5286869) from the original on 14 April 2021. Retrieved 8 May 2021.

1. **[^](#cite_ref-8)** ["Mozilla asks, 'Are we fast yet?'"](https://www.wired.com/2010/09/mozilla-asks-are-we-fast-yet/). *Wired*. [Archived](https://web.archive.org/web/20180622213244/https://www.wired.com/2010/09/mozilla-asks-are-we-fast-yet/) from the original on 22 June 2018. Retrieved 18 January 2019.

1. **[^](#cite_ref-9)** ["V8 JavaScript Engine: License"](https://web.archive.org/web/20100722105022/http://code.google.com/p/v8/source/browse/trunk/LICENSE). *[Google Code](/source/Google_Code)*. Archived from [the original](https://code.google.com/p/v8/source/browse/trunk/LICENSE) on 22 July 2010. Retrieved 17 August 2010.

1. **[^](#cite_ref-10)** ["A New Crankshaft for V8"](https://blog.chromium.org/2010/12/new-crankshaft-for-v8.html). *Chromium Blog*. 7 December 2010. Retrieved 22 April 2011.

1. **[^](#cite_ref-11)** ["Revving up JavaScript performance with TurboFan"](https://blog.chromium.org/2015/07/revving-up-javascript-performance-with.html). 7 July 2015. Retrieved 5 March 2016.

1. **[^](#cite_ref-12)** ["Experimental support for WebAssembly in V8"](https://v8.dev/blog/webassembly-experimental). *v8.dev*. Retrieved 12 March 2024.

1. **[^](#cite_ref-13)** ["BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8"](https://www.youtube.com/watch?v=r5OWCtuKiAk). *[YouTube](/source/YouTube)*. 26 June 2016. [Archived](https://ghostarchive.org/varchive/youtube/20211221/r5OWCtuKiAk) from the original on 21 December 2021. Retrieved 2 September 2016.

1. **[^](#cite_ref-14)** ["Launching Ignition and TurboFan"](https://v8project.blogspot.com/2017/05/launching-ignition-and-turbofan.html). 16 May 2017. Retrieved 13 July 2017.

1. **[^](#cite_ref-15)** ["Maglev - V8's Fastest Optimizing JIT"](https://v8.dev/blog/maglev). 5 December 2023. Retrieved 26 January 2024.

1. **[^](#cite_ref-16)** Verwaest, Toon (25 March 2019). ["Blazingly fast parsing, part 1: optimizing the scanner · V8"](https://v8.dev/blog/scanner). *v8.dev*. [Archived](https://web.archive.org/web/20210421221018/https://v8.dev/blog/scanner) from the original on 21 April 2021. Retrieved 1 June 2021.

1. **[^](#cite_ref-17)** Hinkelmann, Franziska (19 December 2017). ["Understanding V8's Bytecode"](https://medium.com/dailyjs/understanding-v8s-bytecode-317d46c94775). *Medium*. Retrieved 17 October 2019.

1. **[^](#cite_ref-18)** ["Firing up the Ignition interpreter · V8"](https://v8.dev/blog/ignition-interpreter). *v8.dev*. Retrieved 30 September 2020.

1. **[^](#cite_ref-19)** ["A game changer for interactive performance"](https://blog.chromium.org/2011/11/game-changer-for-interactive.html). *blog.chromium.org*. 21 November 2011. Retrieved 6 February 2022.

1. ^ [***a***](#cite_ref-ppc-and-z-support_20-0) [***b***](#cite_ref-ppc-and-z-support_20-1) ["PPC support for Google V8 goes mainstream"](https://web.archive.org/web/20150912183958/https://developer.ibm.com/opentech/2015/06/30/ppc-support-for-google-v8-goes-mainstream/). 30 June 2015. Archived from [the original](https://developer.ibm.com/opentech/2015/06/30/ppc-support-for-google-v8-goes-mainstream/) on 12 September 2015.

1. **[^](#cite_ref-21)** ["GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®"](https://github.com/ibmruntimes/v8ppc). 21 April 2019 – via GitHub.

1. **[^](#cite_ref-22)** ["Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z"](https://github.com/ibmruntimes/v8z). 2 April 2019 – via GitHub.

1. **[^](#cite_ref-23)** ["V8 Changelog v3.8.2"](https://web.archive.org/web/20121022062411/http://v8.googlecode.com/svn/trunk/ChangeLog). Archived from [the original](http://v8.googlecode.com/svn/trunk/ChangeLog) on 22 October 2012. Retrieved 23 October 2012.

1. **[^](#cite_ref-24)** ["V8 Runtime Overview | Apps Script"](https://developers.google.com/apps-script/guides/v8-runtime). *Google for Developers*. Retrieved 26 January 2025.

1. **[^](#cite_ref-25)** ["A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno"](https://github.com/denoland/deno). 8 July 2019 – via GitHub.

1. **[^](#cite_ref-26)** ["Overview - NativeScript Docs"](https://web.archive.org/web/20200728141911/https://docs.nativescript.org/core-concepts/android-runtime/overview). *docs.nativescript.org*. Archived from [the original](https://docs.nativescript.org/core-concepts/android-runtime/overview) on 28 July 2020. Retrieved 8 July 2019.

1. **[^](#cite_ref-27)** Jolie O'Dell (10 March 2011). ["Why Everyone Is Talking About Node"](http://mashable.com/2011/03/10/node-js/). Mashable.

## External links

Wikimedia Commons has media related to [V8 (JavaScript engine)](https://commons.wikimedia.org/wiki/Category:V8_(JavaScript_engine)).

- [Official website](https://v8.dev/)

v t e ECMAScript Dialects ActionScript Haxe Bosque Caja JavaScript engines asm.js JS++ JScript JScript .NET QtScript Solidity TypeScript WMLScript Engines Carakan Futhark JavaScriptCore JScript KJS Linear B QtScript Rhino SpiderMonkey TraceMonkey JägerMonkey Tamarin V8 ChakraCore Chakra JScript .NET Nashorn Frameworks Client-side Dojo Echo Ext JS Google Web Toolkit jQuery Lively Kernel midori MochiKit MooTools Prototype qooxdoo SproutCore Spry Wakanda Framework Server-side Node.js Deno Bun GraalJS Jaxer AppJet WakandaDB Multiple Cappuccino Libraries Backbone.js SWFObject Underscore.js People Brendan Eich Douglas Crockford John Resig Scott Isaacs Other DHTML Ecma International JSDoc JSGI JSHint JSLint JSON JSSS Sputnik SunSpider Asynchronous module definition CommonJS Lists: JavaScript libraries • Ajax frameworks • Server-side JavaScript Comparison: JavaScript web frameworks

v t e Google free and open-source software Software Applications Chromium Gemma OpenRefine Tesseract Programming languages Carbon Dart Go Sawzall Frameworks and development tools AMP Angular AngularJS Beam Bazel Blockly Brotli Closure Tools Cpplint FlatBuffers Flutter Ganeti Gears Gerrit GLOP gRPC Gson Guava Guetzli Guice gVisor Kubernetes LevelDB libvpx Lighthouse NaCl Namebench Nomulus OR-Tools Polymer Protocol Buffers TensorFlow V8 Operating systems Android ChromiumOS Fuchsia gLinux Goobuntu Related Code-in Google LLC v. Oracle America, Inc. Open Source Security Foundation Summer of Code

v t e Node.js Platform Node.js V8 CommonJS Packaging npm yarn pnpm Frameworks MEAN MongoDB Express.js AngularJS/Angular MEEN (substituted with Ember.js) Backbone.js Fastify Meteor Sails.js (uses Express.js) NestJS Next.js Nuxt Libraries Lodash Underscore.js React Vue.js Languages JavaScript CoffeeScript ReScript TypeScript WebAssembly AssemblyScript C Rust

---
Adapted from the Wikipedia article [V8 (JavaScript engine)](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
