To install click the Add extension button. That's it.

The source code for the WIKI 2 extension is being checked by specialists of the Mozilla Foundation, Google, and Apple. You could also do it yourself at any point in time.

4,5
Kelly Slayton
Congratulations on this excellent venture… what a great idea!
Alexander Grigorievskiy
I use WIKI 2 every day and almost forgot how the original Wikipedia looks like.
What we do. Every page goes through several hundred of perfecting techniques; in live mode. Quite the same Wikipedia. Just better.
.
Leo
Newton
Brights
Milds

V8 (JavaScript engine)

From Wikipedia, the free encyclopedia

V8
Developer(s)Google[1]
Initial release2 September 2008; 15 years ago (2008-09-02)
Stable release
11.4[2] Edit this on Wikidata / 24 May 2023; 10 months ago (24 May 2023)
Repository
Written inC++[1]
PlatformIA-32, x86-64, ARM, AArch64, MIPS, MIPS64, PowerPC, IBM ESA/390
TypeJavaScript and WebAssembly engine
LicenseBSD[3]
Websitev8.dev Edit this on Wikidata

V8 is a JavaScript and WebAssembly engine developed by Google for its Chrome browser.[1][4] V8 is free and open-source software that is part of the Chromium project and also used separately in non-browser contexts, notably the Node.js runtime system.[1]

YouTube Encyclopedic

  • 1/5
    Views:
    276 664
    33 079
    54 942
    347 473
    26 588
  • V8: an open source JavaScript engine
  • Google I/O 2009 - V8: ..High Performance JavaScript Engine
  • Why is Google Chrome Fast? Spotlight on V8 JavaScript Engine
  • JS Engine EXPOSED 🔥 Google's V8 Architecture 🚀 | Namaste JavaScript Ep. 16
  • How the JavaScript engine works!! Source to byte code JS V8 engine explained | Advanced JavaScript

Transcription

>> Hi. I'm Lars, and I'm the tech lead for the V8 project, and the V8 project is a new, exciting, high-performance JavaScript engine we built here at Google. The V8 team is located in Aarhus, Denmark, but we also have a few people working on the project here from JavaScript was written and designed to be a way of customizing conversation inside the browser, so if you press the button, you could do different things. So it allowed the programmer to change the behavior of the browser. In the beginning, it was only meant to be a small piece of code you added to your Web application. One of the interesting properties of JavaScript and the reason why it's being used today is that it's platform-independent. So you can run on Mac OS or Windows and use the same application inside the browser. Let me talk about the three key design decisions we did in V8. The first one is hidden classes. The second one is a generated code. And the third one is the efficient memory management system we have. So first I want to show you how we have introduced hidden classes in our system. As you all know, JavaScript is prototype-based, and if you have a function here called Point, where we create a new optic and assign X and Y to the parameters, and here, the last two lines, we'll create two different Points, where X and Y is zero and one, and two and three. In most JavaScript implementation, you will have two independent optics that will not share any common structure. That's different in V8. So here's a drawing of what we do in V8. You have the two different optics, A and B, and instead of having them being completely independent, like in most JavaScript implementation, we actually make them share a hidden class. So instead of creating two optics, we create three: A and B, and then the hidden class for these two Optics. The hidden class will actually explain that both these two optics have the same number of properties-- namely, two, and then X and Y. Now, how are we going to use this? Well, let me show some generated machine code we do in V8. So another idea in V8 is that we translate JavaScript code into machine code, instead of just using interpreter to obtain speed. And let's take an example. If you actually have some application that uses a Point-- here, we symbolize with point.x-- it reads the X property out of a point. And here you have the code we actually generate for it. So this is X86 code, and instead of having a complicated look-up of a property, we can actually do much better if we have a hidden class structure. So, as you see in this case, reading an X property of an optic will translate into three machine instructions. The first instruction will actually check that the optic has a certain hidden class. If it has that, it will continue to the third instruction, and then just read the X property out of the optic. Otherwise, we call a run-time routine. Now, when you're dealing with the code, we do not know about the hidden classes, so this code here is classical, and we capitalize on the hidden classes to make it run fast. In essence, instead of having a generic look-up for a property, we can actually generate efficient machine code to fetch the property out of the optic, like any other class-based system. The third thing we wanted to solve in V8 was, we wanted to eliminate garbage collection process. And so, we designed this efficient memory management system that allowed fast allocation and also minimal process when running JavaScript. And that actually means when you, as a user, use JavaScript inside the browser, you will not get any hiccups with your having tagged your applications. In particular, if your application is big, then you tend to have lots of process. We eliminated that by implementing a two-generation-based garbage collector, so that when we reclaim storage for updates, we do it in small pieces. It sounds like a simple problem, but in JavaScript, you are always reading in JavaScript, compiling code, creating hidden classes, and so on. In V8, all these kinds of optics that are created at one time, they reside inside the optic key, and they are reclaimed incrementally as you execute. So V8 is an open source project, and Chrome underdog is also including it as part of the Google Chrome browser. You can also take it as a separate stand-alone project and embed a new application. So the main purpose of V8 is to raise the performance bar of JavaScript out there in the marketplace.

History

Google created V8 for its Chrome browser, and both were first released in 2008.[4] The lead developer of V8 was Lars Bak, and it was named for the powerful car engine.[5] For several years, Chrome was faster than other browsers at executing JavaScript.[6][7][8]

The V8 assembler is based on the 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.[11] 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.

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

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.[13] 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.[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-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 with its own parser.[16] Then, Ignition generates bytecode from this syntax tree using the internal V8 bytecode format.[17] 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.[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, elision of expensive runtime properties, and inline caching. The garbage collector is a generational incremental collector.[19]

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[20] and IBM ESA/390[21][22] for use in servers.[23]

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

See also

  • Blink, the Chromium browser engine

References

  1. ^ a b c d "Documentation · V8". Google. Retrieved 3 March 2024.
  2. ^ "Chrome Platform Status". Retrieved 29 June 2023.
  3. ^ "v8/LICENSE.v8 at master". Github.
  4. ^ a b Lenssen, Philipp (1 September 2008). "Google on Google Chrome - comic book". Google Blogoscoped. Retrieved 17 August 2010.
  5. ^ "V8: an open source JavaScript engine". YouTube. Google. Retrieved 15 March 2024.
  6. ^ "Big browser comparison test: Internet Explorer vs. Firefox, Opera, Safari and Chrome". PC Games Hardware. Computec Media AG. 3 July 2009. Archived from the original on 2 May 2012. Retrieved 28 June 2010.
  7. ^ Purdy, Kevin (11 June 2009). "Lifehacker Speed Tests: Safari 4, Chrome 2". Lifehacker. Archived from the original on 14 April 2021. Retrieved 8 May 2021.
  8. ^ "Mozilla asks, 'Are we fast yet?'". Wired. Archived from the original on 22 June 2018. Retrieved 18 January 2019.
  9. ^ "V8 JavaScript Engine: License". Google Code. Archived from the original on 22 July 2010. Retrieved 17 August 2010.
  10. ^ "A New Crankshaft for V8". Chromium Blog. 7 December 2010. Retrieved 22 April 2011.
  11. ^ "Revving up JavaScript performance with TurboFan". 7 July 2015. Retrieved 5 March 2016.
  12. ^ "Experimental support for WebAssembly in V8". v8.dev. Retrieved 12 March 2024.
  13. ^ "BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8". YouTube. 26 June 2016. Archived from the original on 21 December 2021. Retrieved 2 September 2016.
  14. ^ "Launching Ignition and TurboFan". 16 May 2017. Retrieved 13 July 2017.
  15. ^ "Maglev - V8's Fastest Optimizing JIT". 5 December 2023. Retrieved 26 January 2024.
  16. ^ 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.
  17. ^ Hinkelmann, Franziska (19 December 2017). "Understanding V8's Bytecode". Medium. Retrieved 17 October 2019.
  18. ^ "Firing up the Ignition interpreter · V8". v8.dev. Retrieved 30 September 2020.
  19. ^ "A game changer for interactive performance". blog.chromium.org. 21 November 2011. Retrieved 6 February 2022.
  20. ^ "GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®". 21 April 2019 – via GitHub.
  21. ^ "Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z". 2 April 2019 – via GitHub.
  22. ^ "PPC support for Google V8 goes mainstream". 30 June 2015.
  23. ^ "V8 Changelog v3.8.2". Archived from the original on 22 October 2012. Retrieved 23 October 2012.
  24. ^ "A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno". 8 July 2019 – via GitHub.
  25. ^ "Overview - NativeScript Docs". docs.nativescript.org.
  26. ^ Jolie O'Dell (10 March 2011). "Why Everyone Is Talking About Node". Mashable.
  27. ^ "Difference between qt qml and qt quick". Stack Overflow. Retrieved 26 September 2020.

External links

This page was last edited on 26 March 2024, at 04:06
Basis of this page is in Wikipedia. Text is available under the CC BY-SA 3.0 Unported License. Non-text media are available under their specified licenses. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. WIKI 2 is an independent company and has no affiliation with Wikimedia Foundation.