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 |
Platforma | IA-32, x86_64[d], ARM[d], MIPS[d], PowerPC[d] |
Sonuncu versiya | |
Sayt | v8.dev |
Vikianbarda əlaqəli mediafayllar |
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 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: