0% found this document useful (0 votes)
12 views

V8 (1JavaScript Engine) - Wikipedia

V8 is a JavaScript and WebAssembly engine developed by Google for Chrome and other browsers. It compiles JavaScript directly to machine code for fast execution. It supports multiple platforms and is used in Node.js, Deno, and other projects beyond browsers.

Uploaded by

41 elofizu4
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

V8 (1JavaScript Engine) - Wikipedia

V8 is a JavaScript and WebAssembly engine developed by Google for Chrome and other browsers. It compiles JavaScript directly to machine code for fast execution. It supports multiple platforms and is used in Node.js, Deno, and other projects beyond browsers.

Uploaded by

41 elofizu4
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

V8 (JavaScript

engine)

V8 is a free and open-source JavaScript


and WebAssembly engine developed by
the Chromium Project for Chromium and
Google Chrome web browsers.[5] The
project's creator is Lars Bak.[6] The first
version of the V8 engine was released at
the same time as the first version of
Chrome: 2 September 2008. It has also
been used on the server side, for
example in Couchbase, Deno and
Node.js.
V8

Original author(s) Lars Bak of Google

Developer(s) The Chromium


Project

Initial release 2 September 2008

Stable release 11.4[1]  / 24 May


2023

Repository chromium
.googlesource.com
/v8/v8 (https://chro
mium.googlesource.
com/v8/v8)

Written in C++[2]
Platform IA-32, x86-64, ARM,
AArch64, MIPS,
MIPS64[3] PowerPC,
IBM ESA/390

Type JavaScript and


WebAssembly engine

License BSD[4]

Website v8.dev (https://v8.de


v/)  

History
The V8 assembler is based on the
Strongtalk assembler.[7] On 7 December
2010, a new compiling infrastructure
named Crankshaft was released, with
speed improvements.[8] In version 41 of
Chrome in 2015, project TurboFan was
added to provide more performance
improvements with previously
challenging workloads such as asm.js.[9]
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.[10]
Ignition is a register based 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 pipeline, consisting of Ignition
(the interpreter) and TurboFan (the
optimizing compiler). 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.[11]
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.

Design
V8 first generates an abstract syntax tree
with its own parser.[12] Then, Ignition
generates bytecode from this syntax tree
using the internal V8 bytecode format.[13]
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.[14] 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.[15]

Usage
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[16]
and IBM ESA/390[17][18] for use in
servers.[3][19]
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.
Firefox - parts of V8 ported to the
browser for regular expressions
parsing
Couchbase database server
Deno runtime environment[20]
Electron desktop application
framework, used by the Atom and
Visual Studio Code text editors
MarkLogic database server
NativeScript mobile application
framework[21]
Node.js runtime environment[22]
Qt Quick runtime environment[23]

See also
Free and
open-
source
software
portal
Internet
portal

Blink, the Chromium browser engine

References
1. "Chrome Platform Status" (https://chrome
status.com/roadmap) . Retrieved 29 June
2023.
2. "V8 JavaScript Engine" (https://v8.dev/) .
Google LLC.

3. "Introduction - Chrome V8" (https://develo


pers.google.com/v8/intro) . Google Inc.

4. "v8/LICENSE.v8 at master" (https://githu


b.com/v8/v8/blob/master/LICENSE.v8) .
Github.

5. Lenssen, Philipp (1 September 2008).


"Google on Google Chrome - comic book"
(http://blogoscoped.com/google-chrom
e/) . Google Blogoscoped. Retrieved
17 August 2010.
6. Minto, Rob (27 March 2009). "The genius
behind Google's web browser" (https://ww
w.ft.com/cms/s/2/03775904-177c-11de-
8c9d-0000779fd2ac.html) . Financial
Times. Archived (https://web.archive.org/
web/20111201001419/http://www.ft.co
m:80/cms/s/2/03775904-177c-11de-8c9
d-0000779fd2ac.html) from the original
on 1 December 2011. Retrieved 1 June
2021.(subscription required)

7. "V8 JavaScript Engine: License" (https://w


eb.archive.org/web/20100722105022/htt
p://code.google.com/p/v8/source/brows
e/trunk/LICENSE) . Google Code.
Archived from the original (https://code.g
oogle.com/p/v8/source/browse/trunk/LI
CENSE) on July 22, 2010. Retrieved
17 August 2010.
8. "A New Crankshaft for V8" (https://blog.ch
romium.org/2010/12/new-crankshaft-for-
v8.html) . Chromium Blog. 7 December
2010. Retrieved 22 April 2011.

9. "Revving up JavaScript performance with


TurboFan" (https://blog.chromium.org/20
15/07/revving-up-javascript-performance-
with.html) . 7 July 2015. Retrieved
5 March 2016.

10. "BlinkOn 6 Day 1 Talk 2: Ignition - an


interpreter for V8" (https://www.youtube.c
om/watch?v=r5OWCtuKiAk) . YouTube.
26 June 2016. Archived (https://ghostarc
hive.org/varchive/youtube/20211221/r5O
WCtuKiAk) from the original on 2021-12-
21. Retrieved 2 September 2016.
11. "Launching Ignition and TurboFan" (http
s://v8project.blogspot.com/2017/05/laun
ching-ignition-and-turbofan.html) . 16
May 2017. Retrieved 13 July 2017.

12. Verwaest, Toon (25 March 2019).


"Blazingly fast parsing, part 1: optimizing
the scanner · V8" (https://v8.dev/blog/sca
nner) . v8.dev. Archived (https://web.archi
ve.org/web/20210421221018/https://v8.
dev/blog/scanner) from the original on
21 April 2021. Retrieved 1 June 2021.

13. Hinkelmann, Franziska (2017-12-19).


"Understanding V8's Bytecode" (https://m
edium.com/dailyjs/understanding-v8s-byt
ecode-317d46c94775) . Medium.
Retrieved 2019-10-17.
14. "Firing up the Ignition interpreter · V8" (htt
ps://v8.dev/blog/ignition-interpreter) .
v8.dev. Retrieved 2020-09-30.

15. "A game changer for interactive


performance" (https://blog.chromium.or
g/2011/11/game-changer-for-interactive.
html) . blog.chromium.org. 2011-11-21.
Retrieved 2022-02-06.

16. "GitHub - ibmruntimes/v8ppc: Port of


Google V8 javascript engine to
PowerPC®" (https://github.com/ibmrunti
mes/v8ppc) . April 21, 2019 – via GitHub.

17. "Port of Google V8 JavaScript engine to


z/OS. The Linux on Z port is maintained in
the community: ibmruntimes/v8z" (http
s://github.com/ibmruntimes/v8z) . April
2, 2019 – via GitHub.
18. "PPC support for Google V8 goes
mainstream" (https://developer.ibm.com/
opentech/2015/06/30/ppc-support-for-go
ogle-v8-goes-mainstream/) . June 30,
2015.

19. "V8 Changelog v3.8.2" (https://web.archiv


e.org/web/20121022062411/http://v8.go
oglecode.com/svn/trunk/ChangeLog) .
Archived from the original (http://v8.googl
ecode.com/svn/trunk/ChangeLog) on 22
October 2012. Retrieved 23 October 2012.

20. "A secure JavaScript/TypeScript runtime


built with V8, Rust, and Tokio:
denoland/deno" (https://github.com/deno
land/deno) . July 8, 2019 – via GitHub.
21. "Overview - NativeScript Docs" (https://do
cs.nativescript.org/core-concepts/androi
d-runtime/overview) .
docs.nativescript.org.

22. Jolie O'Dell (March 10, 2011). "Why


Everyone Is Talking About Node" (http://m
ashable.com/2011/03/10/node-js/) .
Mashable.

23. "Difference between qt qml and qt quick"


(https://stackoverflow.com/a/19837895/
7910299) . Stack Overflow. Retrieved
2020-09-26.

External links
Wikimedia Commons has media
related to V8 (JavaScript engine).
Official website (https://v8.dev/)
Retrieved from
"https://en.wikipedia.org/w/index.php?
title=V8_(JavaScript_engine)&oldid=1168903050"

This page was last edited on 5 August 2023, at


20:16 (UTC). •
Content is available under CC BY-SA 4.0 unless
otherwise noted.

You might also like