V8 (движок JavaScript) - V8 (JavaScript engine)

V8
Логотип движка JavaScript V8 2.svg
Оригинальный автор (ы)Ларс Бак
Разработчики)Проект Chromium
изначальный выпуск2 сентября 2008 г.; 12 лет назад (2008-09-02)
Стабильный выпуск
8.7[1] / 23 октября 2020 г.; 34 дней назад (2020-10-23)
Репозиторий Отредактируйте это в Викиданных
Написано вC ++[2]
ПлатформаIA-32, x86-64, РУКА, AArch64, MIPS, MIPS64[3] PowerPC, IBM s390
ТипДвижок JavaScript
ЛицензияBSD[4]
Интернет сайтv8.dev

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

История

V8 ассемблер основан на Strongtalk ассемблер.[7] 7 декабря 2010 года была выпущена новая компилирующая инфраструктура под названием Crankshaft с улучшенной скоростью.[8] Начиная с версии 41 Chrome в 2015 году, был добавлен проект TurboFan для увеличения скорости, например за 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, РУКА или же MIPS архитектуры наборов команд как в 32-, так и в 64-битной редакции; также он был перенесен на PowerPC[15] и IBM s390[16][17] для использования на серверах.[3][18]

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

Смотрите также

Рекомендации

  1. ^ "Выпуск V8 v8.7". V8 ProjectБлог. 2020-10-23. Получено 2020-10-23.
  2. ^ "V8 JavaScript Engine". Google LLC.
  3. ^ а б «Введение - Chrome V8». Разработчики Google.
  4. ^ "v8 / LICENSE.v8 на главном сервере". Github.
  5. ^ Ленссен, Филипп (1 сентября 2008 г.). «Google в Google Chrome - комикс». Google Blogoscoped. Google. Получено 17 августа 2010.
  6. ^ Минто, Роб (27 марта 2009 г.). "Гений веб-браузера Google". Financial Times. Получено 17 августа 2010.
  7. ^ "V8 JavaScript Engine: Лицензия". Код Google. Google. Архивировано из оригинал 22 июля 2010 г.. Получено 17 августа 2010.
  8. ^ «Новый коленчатый вал для V8». Блог Chromium. Google. 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. ^ «Запуск зажигания и турбовентилятора». 16 мая 2017. Получено 13 июля 2017.
  12. ^ Хинкельманн, Франциска (19 декабря 2017 г.). «Понимание байт-кода V8». Середина. Получено 2019-10-17.
  13. ^ "Запуск интерпретатора зажигания · V8". v8.dev. Получено 2020-09-30.
  14. ^ «Измените правила игры в интерактивном представлении». Блог Chromium. Google. Получено 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". Google. Архивировано из оригинал 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». Переполнение стека. Получено 2020-09-26.

внешняя ссылка