Первоначальный автор (ы) | Ларс Бак |
---|---|
Разработчик (и) | Проект Chromium |
Первоначальный выпуск | 2 сентября 2008 г.; 12 лет назад (02.09.2008) |
Стабильный выпуск | 8.7 / 23 октября 2020 г.; 7 дней назад (2020-10-23) |
Репозиторий | |
Написано на | C ++ |
Платформа | IA-32, x86-64, ARM, AArch64, MIPS, MIPS64 PowerPC, IBM s390 |
Тип | движок JavaScript |
Лицензия | BSD |
Веб-сайт | v8.dev |
V8является открытым -source движок JavaScript, разработанный The Chromium Project для веб-браузеров Google Chrome и Chromium. Создатель проекта Ларс Бак. Первая версия движка V8 была выпущена одновременно с первой версией Chrome: 2 сентября 2008 г. Она также использовалась на стороне сервера, например, в Couchbase, MongoDB и Node.js.
Ассемблер V8 основан на ассемблере Strongtalk. 7 декабря 2010 года была выпущена новая компилирующая инфраструктура под названием Crankshaft с улучшенной скоростью. Начиная с версии 41 Chrome в 2015 году был добавлен проект TurboFan, чтобы обеспечить большую скорость, например для asm.js.
В 2016 году интерпретатор Ignition был добавлен в V8 с целью уменьшить использование памяти на телефонах Android с малым объемом памяти по сравнению с TurboFan и Crankshaft.
В 2017 году V8 предоставил совершенно новый конвейер компилятора, состоящий из Ignition (интерпретатор) и TurboFan (оптимизирующий компилятор). Начиная с V8 версии 5.9, Full-codegen и Crankshaft больше не используются в V8 для выполнения JavaScript, поскольку команда считает, что они больше не могут идти в ногу с новыми функциями языка JavaScript и оптимизацией, необходимой для этих функций.
V8 сначала генерирует абстрактное синтаксическое дерево со своим собственным анализатором. Затем Ignition, интерпретатор V8, генерирует байт-код из этого синтаксического дерева, используя внутренний формат байт-кода V8. TurboFan - это оптимизирующий компилятор V8, он берет этот байт-код и генерирует из него машинный код. Другими словами, V8 компилирует JavaScript непосредственно в собственный машинный код, используя своевременную компиляцию перед его выполнением. Скомпилированный код дополнительно оптимизируется (и повторно оптимизируется) динамически во время выполнения на основе эвристики профиля выполнения кода. Используемые методы оптимизации включают встраивание, исключение дорогостоящих свойств времени выполнения и встроенное кэширование. сборщик мусора - это поколений инкрементный сборщик.
V8 может компилироваться в x86, ARM или MIPS архитектуры набора команд как в 32-, так и в 64-битной версиях; кроме того, он был перенесен на PowerPC и IBM s390 для использования на серверах.
V8 можно использовать в браузере или интегрировать в независимые проекты. V8 используется в следующем программном обеспечении:
Викискладе есть материалы, относящиеся к V8 (движок JavaScript). |