Перейти к основному содержимому

Релиз V8 v5.7

· 3 мин. чтения
команда V8

Каждые шесть недель мы создаем новую ветку V8 в рамках нашего процесса выпуска. Каждая версия создаётся из основной ветки Git V8 непосредственно перед этапом Beta Chrome. Сегодня мы рады представить нашу новейшую ветку, V8 версии 5.7, которая будет находиться в бета-версии, пока не будет выпущена вместе с Chrome 57 Stable через несколько недель. V8 5.7 наполнен всевозможными полезными функциями для разработчиков. Предлагаем вам предварительный обзор некоторых основных моментов перед выпуском.

Улучшения производительности

Родные асинхронные функции такие же быстрые, как Promise

Асинхронные функции теперь приблизительно такие же быстрые, как тот же код, написанный с использованием Promise. Производительность выполнения асинхронных функций увеличилась в четыре раза, согласно нашим микротестам. За тот же период общая производительность Promise также удвоилась.

Улучшение производительности асинхронных функций в V8 на Linux x64

Улучшения ES2015

V8 продолжает улучшать функциональность языка ES2015, чтобы разработчики могли использовать новые функции без потерь производительности. Оператор распространения, деструктуризация и генераторы теперь приблизительно такие же быстрые, как их простые эквиваленты в ES5.

RegExp быстрее на 15%

Перенос функций RegExp из реализации на JavaScript на основе самообслуживания в архитектуру генерации кода TurboFan привел к увеличению общей производительности RegExp примерно на 15%. Дополнительные подробности можно найти в специальной публикации.

Функции языка JavaScript

Несколько недавних дополнений к стандартной библиотеке ECMAScript включены в этот выпуск. Два метода строки, padStart и padEnd, предоставляют полезные функции форматирования строк, а Intl.DateTimeFormat.prototype.formatToParts дает разработчикам возможность настраивать форматирование даты/времени с учётом локали.

WebAssembly включен

Chrome 57 (который включает V8 v5.7) будет первым релизом, в котором WebAssembly включен по умолчанию. Дополнительные сведения можно найти в документации на сайте webassembly.org и в документации API на MDN.

Дополнения к API V8

Ознакомьтесь с нашим резюме изменений в API. Этот документ регулярно обновляется через несколько недель после каждого основного выпуска. Разработчики с активной проверкой исходного кода V8 могут использовать git checkout -b 5.7 -t branch-heads/5.7, чтобы опробовать новые функции в V8 v5.7. Также вы можете подписаться на бета-канал Chrome и попробовать новые функции сами.

PromiseHook

Этот C++ API позволяет пользователям реализовывать код профилирования, который отслеживает жизненный цикл Promise. Это позволяет Node использовать предстоящий AsyncHook API, который даёт возможность создавать распространение контекста асинхронных операций.

API PromiseHook предоставляет четыре функции жизненного цикла: init, resolve, before и after. Функция init запускается при создании нового Promise; функция resolve запускается при выполнении Promise; функции pre и post запускаются непосредственно перед и после PromiseReactionJob. Для получения дополнительной информации, пожалуйста, ознакомьтесь с вопросом отслеживания и документом дизайна.