Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

V8 - это движок JavaScript с открытым исходным кодом, разработанный The Chromium Project для веб-браузеров Google Chrome и Chromium . [5] Создатель проекта - Ларс Бак . [6] Первая версия двигателя V8 был выпущен в то же самое время, что и первую версию Chrome: 2 сентября 2008 г. Он также был использован на стороне сервера, например , в Couchbase и Node.js .

История [ править ]

Ассемблер V8 основан на ассемблере Strongtalk . [7] 7 декабря 2010 года была выпущена новая компилирующая инфраструктура под названием Crankshaft с улучшенной скоростью. [8] Начиная с версии Chrome 41 в 2015 году, проект турбовентиляторном был добавлен , чтобы обеспечить более высокую скорость, например , для asm.js . [9]

В 2016 году в V8 был добавлен интерпретатор Ignition с целью уменьшить использование памяти на телефонах Android с малым объемом памяти по сравнению с TurboFan и Crankshaft. [10]

В 2017 году V8 представила совершенно новый конвейер компилятора, состоящий из Ignition (интерпретатор) и TurboFan (оптимизирующий компилятор). Начиная с V8 версии 5.9, Full-codegen и Crankshaft больше не используются в V8 для выполнения JavaScript, поскольку команда полагала, что они больше не могут идти в ногу с новыми функциями языка JavaScript и оптимизацией этих функций. [11]

Дизайн [ править ]

V8 сначала генерирует абстрактное синтаксическое дерево со своим собственным анализатором. Затем Ignition, интерпретатор V8, генерирует байт-код из этого синтаксического дерева, используя внутренний формат байт-кода V8. [12] TurboFan - это оптимизирующий компилятор V8, он берет этот байт-код и генерирует из него машинный код. Другими словами, V8 компилирует JavaScript непосредственно в машинный код, используя своевременную компиляцию перед его выполнением. [13] Скомпилированный код дополнительно оптимизируется (и повторно оптимизируется) динамически во время выполнения на основе эвристики профиля выполнения кода. Используемые методы оптимизации включают в себя встраивание , исключение дорогостоящих свойств времени выполнения ивстроенное кеширование . Сборщик мусор является поколениями инкрементного коллектора. [14]

Использование [ править ]

V8 может компилироваться в архитектуры набора инструкций x86 , ARM или MIPS как в 32-, так и в 64-битных версиях; кроме того, он был перенесен на PowerPC [15] и IBM s390 [16] [17] для использования в серверах. [3] [18]

V8 можно использовать в браузере или интегрировать в независимые проекты. V8 используется в следующем программном обеспечении:

  • Google Chrome и другие веб-браузеры на основе Chromium , включая Brave , Opera , Vivaldi и Microsoft Edge .
  • Сервер базы данных Couchbase
  • Среда выполнения Deno [19]
  • Платформа настольных приложений Electron , используемая текстовыми редакторами Atom и Visual Studio Code
  • Сервер базы данных MarkLogic
  • Платформа мобильных приложений NativeScript [20]
  • Среда выполнения Node.js [21]
  • Среда выполнения Qt Quick [22]

См. Также [ править ]

  • Blink , движок браузера Chromium
  • Сравнение движков JavaScript

Ссылки [ править ]

  1. ^ "Выпуск V8 v8.9" . Проверено 4 февраля 2021 года .
  2. ^ "V8 JavaScript Engine" . Google LLC .
  3. ^ a b «Введение - Chrome V8» . Google Inc.
  4. ^ "v8 / LICENSE.v8 у мастера" . Github.
  5. ^ Lenssen, Philipp (1 сентября 2008). «Google в Google Chrome - комикс» . Google Blogoscoped . Проверено 17 августа 2010 года .
  6. Минто, Роб (27 марта 2009 г.). «Гений веб-браузера Google» . Financial Times . Проверено 17 августа 2010 года .
  7. ^ "V8 JavaScript Engine: Лицензия" . Код Google . Архивировано из оригинала 22 июля 2010 года . Проверено 17 августа 2010 года .
  8. ^ "Новый коленчатый вал для V8" . Блог Chromium . 7 декабря 2010 . Проверено 22 апреля 2011 года .
  9. ^ «Повышение производительности JavaScript с помощью TurboFan» . 7 июля 2015 . Проверено 5 марта +2016 .
  10. ^ «BlinkOn 6 Day 1 Talk 2: Ignition - переводчик для V8» . 26 июня 2016 . Проверено 2 сентября 2016 года .
  11. ^ «Запуск зажигания и TurboFan» . 16 мая 2017 . Проверено 13 июля 2017 года .
  12. ^ Хинкельманн, Франциска (2017-12-19). «Понимание байт-кода V8» . Средний . Проверено 17 октября 2019 .
  13. ^ "Запуск интерпретатора зажигания · V8" . v8.dev . Проверено 30 сентября 2020 .
  14. ^ «Смена правил игры для интерактивного представления» . Блог Chromium . Проверено 1 мая 2012 года .
  15. ^ «GitHub - ibmruntimes / v8ppc: перенос движка JavaScript Google V8 на PowerPC®» . 21 апреля 2019 г. - через GitHub.
  16. ^ «Перенос движка JavaScript Google V8 на z / OS. Порт Linux на Z поддерживается в сообществе: ibmruntimes / v8z» . 2 апреля 2019 г. - через GitHub.
  17. ^ «Поддержка PPC для Google V8 становится мейнстримом» . 30 июня 2015 г.
  18. ^ "Журнал изменений V8 v3.8.2" . Архивировано из оригинального 22 октября 2012 года . Проверено 23 октября 2012 года .
  19. ^ «Безопасная среда выполнения JavaScript / TypeScript, созданная с использованием V8, Rust и Tokio: denoland / identify» . 8 июля 2019 г. - через GitHub.
  20. ^ «Обзор - Документы NativeScript» . docs.nativescript.org .
  21. Джоли О'Делл (10 марта 2011 г.). «Почему все говорят об узле» . Mashable.
  22. ^ «Разница между qt qml и qt quick» . Переполнение стека . Проверено 26 сентября 2020 .

Внешние ссылки [ править ]

  • Официальный веб-сайт