V8 (JavaScript mexanizmi) - V8 (JavaScript engine)

V8
V8 JavaScript dvigatel logotipi 2.svg
Asl muallif (lar)Lars Bak
Tuzuvchi (lar)Xrom loyihasi
Dastlabki chiqarilish2 sentyabr 2008 yil; 12 yil oldin (2008-09-02)
Barqaror chiqish
8.7[1] / 2020 yil 23 oktyabr; 34 kun oldin (2020-10-23)
Ombor Buni Vikidatada tahrirlash
YozilganC ++[2]
PlatformaIA-32, x86-64, ARM, AArch64, MIPS, MIPS64[3] PowerPC, IBM s390
TuriJavaScript mexanizmi
LitsenziyaBSD[4]
Veb-saytv8.dev

V8 bu ochiq manbali JavaScript mexanizmi uchun Chromium Project tomonidan ishlab chiqilgan Gugl xrom va Xrom veb-brauzerlar.[5] Loyiha yaratuvchisi Lars Bak.[6] V8 dvigatelining birinchi versiyasi Chrome-ning birinchi versiyasi bilan bir vaqtda chiqarildi: 2008 yil 2 sentyabr. Bundan tashqari u server tomonida ishlatilgan, masalan Couchbase, MongoDB va Node.js.

Tarix

V8 montajchi ga asoslangan Strongtalk montajchi.[7] 2010 yil 7-dekabrda tezligi yaxshilangan Crankshaft nomli yangi kompilyator infratuzilmasi chiqarildi.[8] 2015 yilda Chrome-ning 41-versiyasidan boshlab, tezlikni oshirish uchun TurboFan loyihasi qo'shildi, masalan. uchun asm.js.[9]

2016 yilda TurboFan va Crankshaft bilan taqqoslaganda kichik xotira Android telefonlaridagi xotiradan foydalanishni qisqartirish maqsadida V8-ga Ignition tarjimoni qo'shildi.[10]

2017 yilda V8 Ignition (tarjimon) va TurboFan (optimallashtiruvchi kompilyator) dan iborat yangi kompilyator quvur liniyasini yubordi. V8 versiyasi 5.9 dan boshlab, to'liq kodlangan va Crankshaft endi V8-da JavaScript-ni bajarish uchun ishlatilmaydi, chunki jamoa endi ular JavaScript-ning yangi til xususiyatlari va talab qilinadigan ushbu optimallashtirishlar bilan hamqadam bo'la olmasligiga ishongan.[11]

Dizayn

V8 birinchi navbatda o'z tahlilchisi bilan mavhum sintaksis daraxtini hosil qiladi. Keyinchalik, V8 tarjimoni Ignition, ichki sintaksis formatidan foydalanib, ushbu sintaksis daraxtidan bayt kodini yaratadi.[12] TurboFan V8 optimallashtiruvchi kompilyatori bo'lib, u ushbu bayt kodni oladi va undan mashina kodini yaratadi. Boshqacha qilib aytganda, V8 kompilyatsiya qiladi JavaScript to'g'ridan-to'g'ri mahalliy uchun mashina kodi foydalanish vaqtida tuzilgan kompilyatsiya uni bajarishdan oldin.[13] Tuzilgan kod qo'shimcha ravishda optimallashtirilgan (va qayta optimallashtirilgan) ish vaqtida, kodning bajarilish profilining evristikasiga asoslanib. Amaldagi optimallashtirish usullari ichkariga kiritish, elision ish vaqtining qimmat xususiyatlaridan va ichki keshlash. The axlat yig'uvchi a avlodlar ortib boruvchi kollektor.[14]

Foydalanish

V8 kompilyatsiya qilishi mumkin x86, ARM yoki MIPS ko'rsatmalar to'plami arxitekturalari ikkala 32 va 64 bitli nashrlarida; shuningdek, u ko'chirildi PowerPC[15] va IBM s390[16][17] serverlarda foydalanish uchun.[3][18]

V8 brauzerda ishlatilishi yoki mustaqil loyihalarga qo'shilishi mumkin. V8 quyidagi dasturlarda qo'llaniladi:

Shuningdek qarang

Adabiyotlar

  1. ^ "V8 versiyasi v8.7". V8 ProjectBlog. 2020-10-23. Olingan 2020-10-23.
  2. ^ "V8 JavaScript Engine". Google MChJ.
  3. ^ a b "Kirish - Chrome V8". Google Developers.
  4. ^ "v8 / LICENSE.v8 master-da". Github.
  5. ^ Lenssen, Filipp (2008 yil 1 sentyabr). "Google Chrome-da Google - chiziq roman". Google Blogoscoped. Google. Olingan 17 avgust 2010.
  6. ^ Minto, Rob (2009 yil 27 mart). "Google veb-brauzeri ortidagi daho". Financial Times. Olingan 17 avgust 2010.
  7. ^ "V8 JavaScript Engine: Litsenziya". Google kodi. Google. Arxivlandi asl nusxasi 2010 yil 22 iyulda. Olingan 17 avgust 2010.
  8. ^ "V8 uchun yangi krank mili". Chromium blogi. Google. 2010 yil 7-dekabr. Olingan 22 aprel 2011.
  9. ^ "TurboFan bilan JavaScript-ni takomillashtirish". 2015 yil 7-iyul. Olingan 5 mart 2016.
  10. ^ "BlinkOn 6-kun 1-suhbat 2: Ignition - V8 uchun tarjimon". 2016 yil 26-iyun. Olingan 2 sentyabr 2016.
  11. ^ "Ignition va TurboFan-ni ishga tushirish". 2017 yil 16-may. Olingan 13 iyul 2017.
  12. ^ Hinkelmann, Franziska (2017-12-19). "V8 ning bayt kodini tushunish". O'rta. Olingan 2019-10-17.
  13. ^ "Ignition tarjimonini yoqish · V8". v8.dev. Olingan 2020-09-30.
  14. ^ "Interaktiv ishlash uchun o'yin almashtiruvchi". Chromium blogi. Google. Olingan 1 may 2012.
  15. ^ "GitHub - ibmruntimes / v8ppc: Google V8 javascript dvigatelining porti PowerPC® ga". 2019 yil 21 aprel - GitHub orqali.
  16. ^ "Google V8 JavaScript dvigatelining z / OS porti. Z portidagi Linux hamjamiyatda saqlanadi: ibmruntimes / v8z". 2019 yil 2 aprel - GitHub orqali.
  17. ^ "Google V8 uchun PPC ko'magi asosiy oqimga aylanadi". 2015 yil 30-iyun.
  18. ^ "V8 Changelog v3.8.2". Google. Arxivlandi asl nusxasi 2012 yil 22 oktyabrda. Olingan 23 oktyabr 2012.
  19. ^ "V8, Rust va Tokio bilan yaratilgan xavfsiz JavaScript / TypeScript ish vaqti: denoland / deno". 2019 yil 8-iyul - GitHub orqali.
  20. ^ "Umumiy ma'lumot - NativeScript hujjatlari". docs.nativescript.org.
  21. ^ Joli O'Dell (2011 yil 10 mart). "Nima uchun hamma tugun haqida gaplashmoqda". Mashable.
  22. ^ "Qt qml va qt tez o'rtasidagi farq". Stack overflow. Olingan 2020-09-26.

Tashqi havolalar