|Original author(s)||Lars Bak of Google|
|Developer(s)||The Chromium Project|
|Initial release||2 September 2008|
9.9 / 31 January 2022
|Platform||IA-32, x86-64, ARM, AArch64, MIPS, MIPS64 PowerPC, IBM s390|
The V8 assembler is based on the Strongtalk assembler. On 7 December 2010, a new compiling infrastructure named Crankshaft was released, with speed improvements. In version 41 of Chrome in 2015, project TurboFan was added to provide more performance improvements with previously challenging workloads such as asm.js. Much of V8's development is strongly inspired by the Java HotSpot Virtual Machine developed by Sun Microsystems, with the newer execution pipelines being very similar to those of HotSpot's.
In 2016, the Ignition interpreter was added to V8 with the design goal of reducing the memory usage on small memory Android phones in comparison with TurboFan and Crankshaft. Ignition is a register based machine and shares a similar (albeit not the exact same) design to the templating interpreter utilized by HotSpot.
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.
V8 first generates an abstract syntax tree with its own parser. Then, Ignition generates bytecode from this syntax tree using the internal V8 bytecode format. TurboFan compiles this bytecode into machine code. In other words, V8 compiles ECMAScript directly to native machine code using just-in-time compilation before executing it. 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, elision of expensive runtime properties, and inline caching. The garbage collector is a generational incremental collector.
V8 can compile to x86, ARM or MIPS instruction set architectures in both their 32-bit and 64-bit editions; it has additionally been ported to PowerPC and IBM s390 for use in servers.
V8 can be used in a browser or integrated into independent projects. V8 is used in the following software:
- Chromium-based web browsers - Google Chrome, Brave, Opera, Vivaldi and Microsoft Edge.
- Couchbase database server
- Deno runtime environment
- Electron desktop application framework, used by the Atom and Visual Studio Code text editors
- MarkLogic database server
- NativeScript mobile application framework
- Node.js runtime environment
- Qt Quick runtime environment
- "V8 release v9.9". 31 January 2022. Retrieved 3 February 2022.
- "Introduction - Chrome V8". Google Inc.
- "v8/LICENSE.v8 at master". Github.
- Lenssen, Philipp (1 September 2008). "Google on Google Chrome - comic book". Google Blogoscoped. Retrieved 17 August 2010.
- Minto, Rob (27 March 2009). "The genius behind Google's web browser". Financial Times. Archived from the original on 1 December 2011. Retrieved 1 June 2021.(subscription required)
- "A New Crankshaft for V8". Chromium Blog. 7 December 2010. Retrieved 22 April 2011.
- "BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8". 26 June 2016. Archived from the original on 2021-12-21. Retrieved 2 September 2016.
- "Launching Ignition and TurboFan". 16 May 2017. Retrieved 13 July 2017.
- Verwaest, Toon (25 March 2019). "Blazingly fast parsing, part 1: optimizing the scanner · V8". v8.dev. Archived from the original on 21 April 2021. Retrieved 1 June 2021.
- Hinkelmann, Franziska (2017-12-19). "Understanding V8's Bytecode". Medium. Retrieved 2019-10-17.
- "Firing up the Ignition interpreter · V8". v8.dev. Retrieved 2020-09-30.
- "A game changer for interactive performance". blog.chromium.org. 2011-11-21. Retrieved 2022-02-06.
- "PPC support for Google V8 goes mainstream". June 30, 2015.
- "V8 Changelog v3.8.2". Archived from the original on 22 October 2012. Retrieved 23 October 2012.
- "Overview - NativeScript Docs". docs.nativescript.org.
- Jolie O'Dell (March 10, 2011). "Why Everyone Is Talking About Node". Mashable.
- "Difference between qt qml and qt quick". Stack Overflow. Retrieved 2020-09-26.