V8 (JavaScript mühərriki)

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç
V8
Loqonun şəkli
Tipi JavaScript mühərriki, Açıq mənbəli proqram təminatı, virtual maşın
Proqramlaşdırma dili C++[3], JavaScript
Əməliyyat sistemi Microsoft Windows, Linux, macOS, FreeBSD, Android, Google Chrome
Platforma İA-32, x86_64[d], ARM[d], PowerPC[d]
Sonuncu versiya
Sayt v8.dev
Vikianbarın loqosu Vikianbarda əlaqəli mediafayllar

V8ChromiumGoogle Chrome veb-brauzerləri üçün Chromium Project tərəfindən hazırlanmış pulsuz və açıq mənbəli JavaScriptWebAssembly 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, DenoNode.js-də istifadə edilmişdir.

Tarixi[redaktə | mənbəni redaktə et]

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.

Dizaynı[redaktə | mənbəni redaktə et]

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]

İstifadəsi[redaktə | mənbəni redaktə et]

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]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:

İstinadlar[redaktə | mənbəni redaktə et]

  1. Chrome Platform Status.
  2. Discontinuing release blog posts. 2022.
  3. The v8-js Open Source Project on Open Hub: Languages Page. 2006.
  4. Lenssen, Philipp. "Google on Google Chrome - comic book". Google Blogoscoped. 1 September 2008. 18 June 2015 tarixində arxivləşdirilib. İstifadə tarixi: 17 August 2010.
  5. "V8 JavaScript Engine: License". Google Code. July 22, 2010 tarixində orijinalından arxivləşdirilib. İstifadə tarixi: 17 August 2010.
  6. "A New Crankshaft for V8". Chromium Blog. 7 December 2010. 25 February 2019 tarixində arxivləşdirilib. İstifadə tarixi: 22 April 2011.
  7. "Revving up JavaScript performance with TurboFan". 7 July 2015. 9 February 2019 tarixində arxivləşdirilib. İstifadə tarixi: 5 March 2016.
  8. "BlinkOn 6 Day 1 Talk 2: Ignition - an interpreter for V8". YouTube. 26 June 2016. 2021-12-21 tarixində arxivləşdirilib. İstifadə tarixi: 2 September 2016.
  9. "Launching Ignition and TurboFan". 16 May 2017. 4 September 2018 tarixində arxivləşdirilib. İstifadə tarixi: 13 July 2017.
  10. Verwaest, Toon. "Blazingly fast parsing, part 1: optimizing the scanner · V8". v8.dev. 25 March 2019. 21 April 2021 tarixində arxivləşdirilib. İstifadə tarixi: 1 June 2021.
  11. Hinkelmann, Franziska. "Understanding V8's Bytecode". Medium (ingilis). 2017-12-19. 2019-10-17 tarixində arxivləşdirilib. İstifadə tarixi: 2019-10-17.
  12. "Firing up the Ignition interpreter · V8". v8.dev. 2020-09-24 tarixində arxivləşdirilib. İstifadə tarixi: 2020-09-30.
  13. "A game changer for interactive performance". blog.chromium.org. 2011-11-21. 2022-05-16 tarixində arxivləşdirilib. İstifadə tarixi: 2022-02-06.
  14. "GitHub - ibmruntimes/v8ppc: Port of Google V8 javascript engine to PowerPC®". April 21, 2019. December 7, 2022 tarixində arxivləşdirilib. İstifadə tarixi: December 13, 2023 – GitHub vasitəsilə.
  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. June 16, 2023 tarixində arxivləşdirilib. İstifadə tarixi: December 13, 2023 – GitHub vasitəsilə.
  16. "PPC support for Google V8 goes mainstream". June 30, 2015. September 4, 2018 tarixində arxivləşdirilib. İstifadə tarixi: December 13, 2023.
  17. "Introduction - Chrome V8". Google Inc. 2017-04-04 tarixində arxivləşdirilib. İstifadə tarixi: 2023-12-13.
  18. "V8 Changelog v3.8.2". 22 October 2012 tarixində orijinalından arxivləşdirilib. İstifadə tarixi: 23 October 2012.
  19. "A secure JavaScript/TypeScript runtime built with V8, Rust, and Tokio: denoland/deno". July 8, 2019. February 17, 2020 tarixində arxivləşdirilib. İstifadə tarixi: December 13, 2023 – GitHub vasitəsilə.
  20. "Overview - NativeScript Docs". docs.nativescript.org. 2020-07-28 tarixində arxivləşdirilib. İstifadə tarixi: 2023-12-13.
  21. Jolie O'Dell. "Why Everyone Is Talking About Node". Mashable. March 10, 2011. August 2, 2017 tarixində arxivləşdirilib. İstifadə tarixi: December 13, 2023.
  22. "Difference between qt qml and qt quick". Stack Overflow. İstifadə tarixi: 2020-09-26.

Xarici keçidlər[redaktə | mənbəni redaktə et]