V8 — Chromium və Google Chrome veb-brauzerləri üçün Chromium Project tərəfindən hazırlanmış azad və açıq mənbəli JavaScript və WebAssembly mühərriki. Layihənin yaradıcısı Lars Bakdır.[4] V8 mühərrikinin ilk versiyası Chrome-un ilk versiyası ilə eyni vaxtda, 2 sentyabr 2008-ci ildə buraxıldı. O, həmçinin server tərəfdə, məsələn, Couchbase, Deno və Node.js-də istifadə edilmişdir.
| V8 | |
|---|---|
| | |
| Tipi | JavaScript mühərriki, Açıq mənbəli proqram təminatı, virtual maşın |
| Repozitoriya | chromium.googlesource.com/… |
| Proqramlaşdırma dili | C++[3], JavaScript |
| Əməliyyat sistemi | Microsoft Windows, Linux, macOS, FreeBSD, Android, Google Chrome OS |
| Platforma | IA-32, x86_64[d], ARM[d], MIPS[d], PowerPC[d] |
| Sonuncu versiya | |
| Sayt | v8.dev |
V8 assembleri Strongtalk Assembler-ə əsaslanır.[5] 7 dekabr 2010-cu ildə, sürətində təkmilləşdirmələr edilmiş "Crankshaft" adlı yeni kompilyasiya infrastrukturu buraxıldı.[6] 2015-ci ildə Chrome-un 41-ci versiyasında asm.js kimi əvvəllər tələb olunan iş yüklərində daha çox performans təkmilləşdirmələri təmin etmək üçün TurboFan layihəsi əlavə edildi.[7] V8-in tərtibatının çox hissəsi Sun Microsystems tərəfindən hazırlanmış Java HotSpot Virtual Machine-dən təsirlənib, yeni icra konveyerləri HotSpot-la çox oxşardır.
2016-cı ildə TurboFan və Crankshaft ilə müqayisədə kiçik yaddaşlı Android telefonlarında yaddaş istifadəsini azaltmaq məqsədi ilə V8-ə Ignition interpretatoru əlavə edildi.[8] Ignition registr əsaslı maşındır və HotSpot tərəfindən istifadə edilən şablon interpretatoruna oxşar (tam eyni olmasa da) dizaynı paylaşır.
2017-ci ildə V8 Ignition (interpretator) və TurboFan-dan (optimallaşdırıcı kompilyator) ibarət yeni kompilyator konveyeri buraxdı. V8 versiyası 5.9-dan başlayaraq, Full-codegen (ilkin baza kompilyatoru) və Crankshaft artıq V8-də JavaScript-in icrası üçün istifadə edilmir, çünki komanda onların artıq yeni JavaScript dili xüsusiyyətləri və bu xüsusiyyətlərin tələb olunan optimallaşdırılması ilə ayaqlaşa bilməyəcəyinə inanırdı.[9]
2021-ci ildə HotSpot tərəfindən istifadə edilən profilləşdirən C1 Compilator-a birbaşa paralel olaraq V8 daxilində mövcud TurboFan kompilyatorunu tamamlayan SparkPlug kompilyatorunun buraxılışı ilə yeni səviyyəli kompilyasiya konveyeri təqdim edildi.
V8 əvvəlcə öz analizatoru ilə abstrakt sintaksis ağacı yaradır.[10] Sonra Ignition daxili V8 bayt kodu formatından istifadə edərək bu sintaksis ağacından bayt-kod yaradır.[11] TurboFan bu bayt-kodu maşın koduna çevirir. Başqa sözlə, V8, ECMAScript-i yerinə yetirməzdən əvvəl JIT kompilyasiyası istifadə edərək birbaşa yerli maşın kodunu kompilyasiya edir.[12] Kompilyasiya edilmiş kod, kodun icra profilinin evristikası əsasında işləmə mühitində əlavə olaraq dinamik olaraq optimallaşdırılır (və yenidən optimallaşdırılır). İstifadə olunan optimallaşdırma üsullarına sətiriçi kod, böyük iş mühiti xüsusiyyətlərinin silinməsi və daxili keşləmə daxildir. Tullantı toplayıcı generativ artımlı kollektordur.[13]
V8 həm 32-bit, həm də 64-bit nəşrlərində x86, ARM və ya MIPS təlimat dəsti arxitekturalarını kompilyasiya edə bilər. O, əlavə olaraq serverlərdə istifadə üçün PowerPC[14] və IBM ESA/390-a[15][16] keçirilib.[17][18]
V8 brauzerdə istifadə edilə bilər və ya müstəqil layihələrə inteqrasiya oluna bilər. V8 aşağıdakı proqram təminatında istifadə olunur:
- Chromium əsaslı veb-brauzerlər - Google Chrome, Brave, Opera, Vivaldi və Microsoft Edge
- Firefox - requlyar ifadələrin təhlili üçün brauzerə keçirilən V8 hissələri
- Couchbase verilənlər bazası serveri
- Deno iş mühiti[19]
- Atom və Visual Studio Code mətn redaktorları tərəfindən istifadə olunan Electron iş masası proqram freymvorku
- MarkLogic verilənlər bazası serveri
- NativeScript mobil tətbiq freymvorku[20]
- Node.js iş mühiti[21]
- Qt Quick iş mühiti.[22]
- ↑ Chrome Platform Status.
- ↑ Discontinuing release blog posts. 2022.
- ↑ The v8-js Open Source Project on Open Hub: Languages Page. 2006.
- ↑ Lenssen, Philipp. "Google on Google Chrome - comic book". Google Blogoscoped. 1 sentyabr 2008. 18 iyun 2015 tarixində arxivləşdirilib. İstifadə tarixi: 17 avqust 2010.
- ↑ "V8 JavaScript Engine: License". Google Code. 22 iyul 2010 tarixində orijinalından arxivləşdirilib. İstifadə tarixi: 17 avqust 2010.
- ↑ "A New Crankshaft for V8". Chromium Blog. 7 dekabr 2010. 25 fevral 2019 tarixində arxivləşdirilib. İstifadə tarixi: 22 aprel 2011.
- ↑ "Revving up JavaScript performance with TurboFan". 7 iyul 2015. 9 fevral 2019 tarixində arxivləşdirilib. İstifadə tarixi: 5 mart 2016.
- ↑ "BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8". YouTube. 26 iyun 2016. 21 dekabr 2021 tarixində arxivləşdirilib. İstifadə tarixi: 2 sentyabr 2016.
- ↑ "Launching Ignition and TurboFan". 16 may 2017. 4 sentyabr 2018 tarixində arxivləşdirilib. İstifadə tarixi: 13 iyul 2017.
- ↑ Verwaest, Toon. "Blazingly fast parsing, part 1: optimizing the scanner · V8". v8.dev. 25 mart 2019. 21 aprel 2021 tarixində arxivləşdirilib. İstifadə tarixi: 1 iyun 2021.
- ↑ Hinkelmann, Franziska. "Understanding V8's Bytecode". Medium (ingilis). 19 dekabr 2017. 17 oktyabr 2019 tarixində arxivləşdirilib. İstifadə tarixi: 17 oktyabr 2019.
- ↑ "Firing up the Ignition interpreter · V8". v8.dev. 24 sentyabr 2020 tarixində arxivləşdirilib. İstifadə tarixi: 30 sentyabr 2020.
- ↑ "A game changer for interactive performance". blog.chromium.org. 21 noyabr 2011. 16 may 2022 tarixində arxivləşdirilib. İstifadə tarixi: 6 fevral 2022.
- ↑ "GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®". 21 aprel 2019. 7 dekabr 2022 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023 – GitHub vasitəsilə.
- ↑ "Port of Google V8 JavaScript engine to z/OS. The Linux on Z port is maintained in the community: ibmruntimes/v8z". 2 aprel 2019. 16 iyun 2023 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023 – GitHub vasitəsilə.
- ↑ "PPC support for Google V8 goes mainstream". 30 iyun 2015. 4 sentyabr 2018 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023.
- ↑ "Introduction - Chrome V8". Google Inc. 4 aprel 2017 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023.
- ↑ "V8 Changelog v3.8.2". 22 oktyabr 2012 tarixində orijinalından arxivləşdirilib. İstifadə tarixi: 23 oktyabr 2012.
- ↑ "A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno". 8 iyul 2019. 17 fevral 2020 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023 – GitHub vasitəsilə.
- ↑ "Overview - NativeScript Docs". docs.nativescript.org. 28 iyul 2020 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023.
- ↑ Jolie O'Dell. "Why Everyone Is Talking About Node". Mashable. 10 mart 2011. 2 avqust 2017 tarixində arxivləşdirilib. İstifadə tarixi: 13 dekabr 2023.
- ↑ "Difference between qt qml and qt quick". Stack Overflow. İstifadə tarixi: 26 sentyabr 2020.
- v8.dev — rəsmi saytı