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

Релиз V8 v7.0

· 3 мин. чтения
Майкл Хаблих

Каждые шесть недель мы создаем новую ветку V8 в рамках нашего процесса релизов. Каждая версия разветвляется от главной ветки Git V8 прямо перед этапом бета-версии Chrome. Сегодня мы рады объявить о нашей новой ветке, V8 версия 7.0, которая находится в бета-версии до своего выпуска вместе со стабильной версией Chrome 70 через несколько недель. V8 v7.0 наполнена всевозможными инструментами для разработчиков. Этот пост предоставляет краткий обзор некоторых основных моментов в преддверии релиза.

Встроенные функции (Embedded built-ins)

Встроенные функции экономят память, разделяя сгенерированный код между несколькими экземплярами V8. Начиная с V8 v6.9, мы включили встроенные функции для x64. Версия V8 v7.0 приносит эту экономию памяти для всех остальных платформ, за исключением ia32.

Предварительный просмотр потоков WebAssembly

WebAssembly (Wasm) позволяет компилировать код, написанный на C++ и других языках, для запуска в вебе. Одна из очень полезных функций нативных приложений — возможность использовать потоки — примитив для параллельных вычислений. Большинство разработчиков C и C++ знакомы с pthreads, стандартным API для управления потоками приложений.

Сообщество WebAssembly работает над внедрением потоков в веб, чтобы позволить создавать настоящие многопоточные приложения. В рамках этих усилий V8 реализовал необходимую поддержку потоков в движке WebAssembly. Чтобы использовать эту функцию в Chrome, вы можете включить её через chrome://flags/#enable-webassembly-threads, либо ваш сайт может зарегистрироваться для Origin Trial. Origin Trials позволяют разработчикам экспериментировать с новыми веб-функциями до их полной стандартизации, и это помогает нам собирать обратную связь из реального мира, что крайне важно для проверки и улучшения новых функций.

Особенности языка JavaScript

Свойство description добавлено в Symbol.prototype. Это предоставляет более удобный способ доступа к описанию Symbol. Ранее описание можно было получить лишь косвенно через Symbol.prototype.toString(). Спасибо Igalia за предоставление этой реализации!

Array.prototype.sort теперь является стабильной в V8 v7.0. Ранее V8 использовал нестабильный алгоритм QuickSort для массивов с более чем 10 элементами. Теперь мы используем стабильный алгоритм TimSort. Подробности вы можете найти в нашей публикации в блоге.

API V8

Пожалуйста, используйте git log branch-heads/6.9..branch-heads/7.0 include/v8.h, чтобы получить список изменений в API.

Разработчики с активной копией исходного кода V8 могут использовать git checkout -b 7.0 -t branch-heads/7.0, чтобы попробовать новые функции в V8 v7.0. Кроме того, вы можете подписаться на бета-канал Chrome и скоро испытать новые функции самостоятельно.