V8 (JavaScript -motor) - V8 (JavaScript engine)
| Originale forfattere | Lars Bak fra Google |
|---|---|
| Udvikler (er) | Chromium -projektet |
| Første udgivelse | 2. september 2008 |
| Stabil udgivelse | |
| Depot | |
| Skrevet i | C ++ |
| Platform | IA-32 , x86-64 , ARM , AArch64 , MIPS , MIPS64 PowerPC , IBM s390 |
| Type | JavaScript -motor |
| Licens | BSD |
| Internet side |
v8 |
V8 er en open-source JavaScript-motor udviklet af Chromium Project til Google Chrome og Chromium webbrowsere. Projektets skaber er Lars Bak . Den første version af den V8-motor blev frigivet på samme tid som den første version af Chrome 2. september 2008. Det er også blevet brugt på serveren side, for eksempel i Couchbase og node.js .
Historie
V8 assembler er baseret på det Strongtalk assembler. Den 7. december 2010 blev en ny kompilerende infrastruktur ved navn Crankshaft frigivet med hastighedsforbedringer. I version 41 af Chrome i 2015, blev projektet turbofan tilføjet for at give flere forbedringer af ydeevnen med tidligere udfordrende arbejdsbyrder såsom asm.js .
I 2016 blev tændtolken tilføjet til V8 med det mål at reducere hukommelsesforbruget på små hukommelses Android -telefoner i sammenligning med TurboFan og krumtapaksel.
I 2017 sendte V8 en helt ny kompilerrørledning, der består af Ignition ( tolken ) og TurboFan (den optimerende kompilator ). Fra og med V8 version 5.9 bruges Full-codegen (den tidlige baseline-kompilator) og krumtapaksel ikke længere i V8 til JavaScript-udførelse, da teamet mente, at de ikke længere var i stand til at følge med nye JavaScript-sprogfunktioner og de optimeringer, som disse funktioner krævede .
Design
V8 genererer først et abstrakt syntakstræ med sin egen parser. Derefter genererer Ignition bytecode fra dette syntakstræ ved hjælp af det interne V8 bytecode -format. TurboFan kompilerer denne bytecode til maskinkode. Med andre ord kompilerer V8 ECMAScript direkte til native maskinkode ved hjælp af just-in-time kompilering, før den udføres. Den kompilerede kode er yderligere optimeret (og reoptimeret) dynamisk ved runtime, baseret på heuristik af kodeens udførelsesprofil. Optimeringsteknikker, der anvendes, omfatter inlining , fjernelse af dyre runtime -egenskaber og inline caching . Den affaldsindsamling er en generationsskifte trinvis samler.
Anvendelse
V8 kan kompilere til x86 , ARM eller MIPS instruktionssætarkitekturer i både deres 32-bit og 64-bit udgaver; den er også blevet portet til PowerPC og IBM s390 til brug på servere.
V8 kan bruges i en browser eller integreres i uafhængige projekter. V8 bruges i følgende software:
- Google Chrome og andre Chrom -baserede webbrowsere , herunder Brave , Opera , Vivaldi og Microsoft Edge .
- Couchbase databaseserver
- Deno runtime miljø
- Elektronisk desktop -applikationsramme, der bruges af tekstredaktørerne Atom og Visual Studio Code
- MarkLogic databaseserver
- NativeScript mobilapplikationsramme
- Node.js runtime -miljø
- Qt Hurtigt runtime -miljø
Se også
- Blink , Chromium -browsermotoren
- Sammenligning af JavaScript -motorer