Релиз V8 v7.0
Каждые шесть недель мы создаем новую ветку 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 и скоро испытать новые функции самостоятельно.