Jump to content

V8 (движок JavaScript)

(Перенаправлено из Chrome V8 )

V8
Разработчик(и) Google [1]
Первоначальный выпуск 2 сентября 2008 г .; 15 лет назад ( 2008-09-02 )
Стабильная версия
11.4 [2]  Отредактируйте это в Викиданных / 24 мая 2023 г .; 14 месяцев назад ( 24 мая 2023 г. )
Репозиторий
Написано в С++ [1]
Платформа IA-32 , x86-64 , 32-битный ARM , AArch64 , 32-битный MIPS , MIPS64 , PowerPC , IBM ESA/390 , z/Architecture
Тип JavaScript и WebAssembly Движок
Лицензия БСД [3]
Веб-сайт v8 .dev  Edit this on Wikidata

V8 — это движок JavaScript и WebAssembly, разработанный Google для Chrome браузера . [1] [4] V8 — это бесплатное программное обеспечение с открытым исходным кодом , которое является частью проекта Chromium , а также используется отдельно в контекстах, не связанных с браузером, в частности в Node.js. времени выполнения системе [1]

Google создал V8 для своего браузера Chrome , и оба они были впервые выпущены в 2008 году. [4] Ведущим разработчиком V8 был Ларс Бак , и он был назван в честь мощного автомобильного двигателя . [5] В течение нескольких лет Chrome быстрее других браузеров выполнял JavaScript . [6] [7] [8]

V8 Ассемблер основан на ассемблере Strongtalk . [9] 7 декабря 2010 года была выпущена новая инфраструктура компиляции под названием Crankshaft с повышенной скоростью. [10] В версии 41 Chrome в 2015 году был добавлен проект TurboFan, чтобы обеспечить большее повышение производительности при работе с ранее сложными рабочими нагрузками, такими asm.js. как [11] Большая часть разработки V8 во многом вдохновлена ​​виртуальной машиной Java HotSpot, разработанной Sun Microsystems , причем новые конвейеры выполнения очень похожи на конвейеры HotSpot.

Поддержка нового языка WebAssembly началась в 2015 году. [12]

В 2016 году интерпретатор Ignition был добавлен в V8 с целью сокращения использования памяти с небольшой памятью на телефонах Android по сравнению с TurboFan и Crankshaft. [13] Ignition — это машина на основе регистров , имеющая схожий (хотя и не совсем такой же) дизайн с интерпретатором шаблонов, используемым HotSpot.

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

В 2021 году с выпуском компилятора SparkPlug был представлен новый многоуровневый конвейер компиляции, который дополняет существующий компилятор TurboFan в V8 и является прямой параллелью компилятору профилирования C1, используемому HotSpot.

В 2023 году был добавлен компилятор на основе Maglev SSA , который в 10 раз медленнее, чем Sparkplug, но в 10 раз быстрее, чем TurboFan, устраняя разрыв между Sparkplug и TurboFan для менее часто выполняемых циклов, которые не становятся достаточно «горячими», чтобы их можно было оптимизировать с помощью TurboFan, как и большинство веб-приложений, которые тратят больше времени на взаимодействие с браузером, чем на выполнение JavaScript. [15]

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

Использование

[ редактировать ]

V8 может компилироваться в x86 , ARM или MIPS архитектуры набора команд как в 32-битной , так и в 64-битной версиях; он дополнительно портирован на PowerPC , [20] [21] и IBM ESA/390 и z/Architecture , [22] [20] для использования на серверах. [23]

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

См. также

[ редактировать ]
  • Blink , движок браузера Chromium.
  1. ^ Jump up to: а б с д «Документация · V8» . Google . Проверено 3 марта 2024 г.
  2. ^ «Состояние платформы Chrome» . Проверено 29 июня 2023 г.
  3. ^ «v8/LICENSE.v8 у мастера» . Гитхаб.
  4. ^ Jump up to: а б Ленссен, Филипп (1 сентября 2008 г.). «Google в Google Chrome — комикс» . Google провел блогоскопию . Проверено 17 августа 2010 г.
  5. ^ «V8: движок JavaScript с открытым исходным кодом» . Ютуб . Google . Проверено 15 марта 2024 г.
  6. ^ «Большой сравнительный тест браузеров: Internet Explorer против Firefox, Opera, Safari и Chrome» . Аппаратное обеспечение для компьютерных игр . Компьтек Медиа АГ. 3 июля 2009 г. Архивировано из оригинала 2 мая 2012 г. Проверено 28 июня 2010 г.
  7. ^ Парди, Кевин (11 июня 2009 г.). «Тесты скорости Lifehacker: Safari 4, Chrome 2» . Лайфхакер . Архивировано из оригинала 14 апреля 2021 года . Проверено 8 мая 2021 г.
  8. ^ «Mozilla спрашивает: «Мы уже быстры?» " . Проводной . Архивировано из оригинала 22 июня 2018 года . Проверено 18 января 2019 г.
  9. ^ «JavaScript Engine V8: Лицензия» . Гугл-код . Архивировано из оригинала 22 июля 2010 года . Проверено 17 августа 2010 г.
  10. ^ «Новый коленвал для V8» . Блог Хрома . 7 декабря 2010 года . Проверено 22 апреля 2011 г.
  11. ^ «Повышение производительности JavaScript с помощью TurboFan» . 7 июля 2015 года . Проверено 5 марта 2016 г.
  12. ^ «Экспериментальная поддержка WebAssembly в V8» . v8.dev . Проверено 12 марта 2024 г.
  13. ^ «BlinkOn 6 Day 1 Talk 2: Ignition — интерпретатор для V8» . Ютуб . 26 июня 2016 г. Архивировано из оригинала 21 декабря 2021 г. Проверено 2 сентября 2016 г.
  14. ^ «Запуск зажигания и TurboFan» . 16 мая 2017 года . Проверено 13 июля 2017 г. .
  15. ^ «Маглев — самая быстрая оптимизация V8» . 5 декабря 2023 г. Проверено 26 января 2024 г.
  16. ^ Верваэст, Мульт (25 марта 2019 г.). «Невероятно быстрый парсинг, часть 1: оптимизация сканера · V8» . v8.dev . Архивировано из оригинала 21 апреля 2021 года . Проверено 1 июня 2021 г.
  17. ^ Хинкельманн, Франциска (19 декабря 2017 г.). «Понимание байт-кода V8» . Середина . Проверено 17 октября 2019 г.
  18. ^ «Запуск интерпретатора зажигания · V8» . v8.dev . Проверено 30 сентября 2020 г.
  19. ^ «Изменение правил игры в интерактивном представлении» . blog.chromium.org . 21 ноября 2011 года . Проверено 6 февраля 2022 г.
  20. ^ Jump up to: а б «Поддержка PPC для Google V8 становится массовой» . 30 июня 2015 г. Архивировано из оригинала 12 сентября 2015 г.
  21. ^ «GitHub — ibmruntimes/v8ppc: порт JavaScript-движка Google V8 на PowerPC®» . 21 апреля 2019 г. – через GitHub.
  22. ^ «Перенос JavaScript-движка Google V8 на z/OS. Порт Linux on Z поддерживается сообществом: ibmruntimes/v8z» . 2 апреля 2019 г. – через GitHub.
  23. ^ «Журнал изменений V8 v3.8.2» . Архивировано из оригинала 22 октября 2012 года . Проверено 23 октября 2012 г.
  24. ^ «Безопасная среда выполнения JavaScript/TypeScript, созданная с использованием V8, Rust и Tokio: denoland/deno» . 8 июля 2019 г. – через GitHub.
  25. ^ «Обзор — Документация NativeScript» . docs.nativescript.org .
  26. ^ Джоли О'Делл (10 марта 2011 г.). «Почему все говорят об Node» . Машаемый.
  27. ^ «Разница между qt qml и qt fast» . Переполнение стека . Проверено 26 сентября 2020 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a31d490226188898e8944336babc975a__1717153200
URL1:https://arc.ask3.ru/arc/aa/a3/5a/a31d490226188898e8944336babc975a.html
Заголовок, (Title) документа по адресу, URL1:
V8 (JavaScript engine) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)