V8 (JavaScript engine)

V8 is an open-source JavaScript engine developed by The Chromium Project for Google Chrome and Chromium 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: September 2, 2008. It has also been used on the server side, for example in Couchbase, MongoDB and Node.js.

V8
Developer(s)The Chromium Project
Initial releaseSeptember 2, 2008 (2008-09-02)
Stable release
8.5[1] / July 21, 2020 (2020-07-21)
Repository
Written inC++[2]
PlatformIA-32, x86-64, ARM, AArch64, MIPS, MIPS64[3] PowerPC, IBM s390
TypeJavaScript engine
LicenseBSD[4]
Websitev8.dev

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] Since version 41 of Chrome in 2015, project TurboFan has been added to enable more speed, e.g. for asm.js.[9]

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]

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 and Crankshaft are no longer used in V8 for JavaScript execution, since the team believes they are no longer able to keep pace with new JavaScript language features and the optimizations those features require.[11]

Design

V8 first generates an abstract syntax tree with its own parser. Then, Ignition, the V8 interpreter, generates bytecode from this syntax tree using the internal V8 bytecode format.[12] TurboFan is the V8 optimizing compiler, it takes this bytecode and generates machine code from it. In other words, V8 compiles JavaScript 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.[13]

Usage

V8 can compile to x86, ARM or MIPS instruction set architectures in both their 32- and 64-bit editions; as well, it has been ported to PowerPC[14] and IBM s390[15][16] for use in servers.[3][17]

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

gollark: 011d3b0 ecda fe42 f33d d112 2b8c 7e1d 24d2 11e5011d3c0 2475 ae6a bb0f 0c59 592b 3e75 6074 5f61011d3d0 ff42 a907 c773 c81f 3095 97ba 7fe2 5270011d3e0 c021 d886 1dfc 01eb f22a 0174 38cb ab3e011d3f0 2476 6efa 2bb0 6dde cd92 0222 5467 7221011d400 bb13 2647 77f7 8c51 6206 e40d 3c85 117c011d410 86bb 928f 2234 bb31 298e dd89 7209 6a00011d420 49b1 182b 52fc 6659 f720 c14c 7064 213c011d430 be13 5b7f 36db 9228 232a be39 1c9e 4065011d440 3e92 3fa8 a538 8a60 c599 7c88 9f72 9748011d450 8a5d fc83 b21b e48d 666a 8670 3d61 0225
gollark: I have made many a useless side project.
gollark: I mean, there's a difference between programming and, say, sysadmin stuff, but yes.
gollark: Backdoor it with python 3.3, yes.
gollark: The top are i9s with 8 cores and SMT.

See also

References

  1. "V8 release v8.5". V8 ProjectBlog. 2020-07-21. Retrieved 2020-07-21.
  2. "V8 JavaScript Engine". Google Code.
  3. "Introduction - Chrome V8". Google Developers.
  4. "v8/LICENSE.v8 at master". Github.
  5. Lenssen, Philipp (1 September 2008). "Google on Google Chrome - comic book". Google Blogoscoped. Google. Retrieved 17 August 2010.
  6. Minto, Rob (27 March 2009). "The genius behind Google's web browser". Financial Times. Retrieved 17 August 2010.
  7. "V8 JavaScript Engine: License". Google Code. Google. Archived from the original on July 22, 2010. Retrieved 17 August 2010.
  8. "A New Crankshaft for V8". Chromium Blog. Google. 7 December 2010. Retrieved 22 April 2011.
  9. "Revving up JavaScript performance with TurboFan". 7 July 2015. Retrieved 5 March 2016.
  10. "BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8". 26 June 2016. Retrieved 2 September 2016.
  11. "Launching Ignition and TurboFan". 16 May 2017. Retrieved 13 July 2017.
  12. Hinkelmann, Franziska (2017-12-19). "Understanding V8's Bytecode". Medium. Retrieved 2019-10-17.
  13. "A game changer for interactive performance". Chromium Blog. Google. Retrieved 1 May 2012.
  14. "GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®". April 21, 2019 via GitHub.
  15. "Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z". April 2, 2019 via GitHub.
  16. "PPC support for Google V8 goes mainstream". June 30, 2015.
  17. "V8 Changelog v3.8.2". Google. Archived from the original on 22 October 2012. Retrieved 23 October 2012.
  18. "A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno". July 8, 2019 via GitHub.
  19. "Overview - NativeScript Docs". docs.nativescript.org.
  20. Jolie O'Dell (March 10, 2011). "Why Everyone Is Talking About Node". Mashable.
  21. "Difference between qt qml and qt quick". Stack Overflow. Retrieved 2019-08-26.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.