[Программирование, Node.JS] Релиз Node.js 16: обзор лучшего
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
20 апреля состоялся релиз новой 16 версии Node.js. Среди основных изменений обновление движка JavaScript V8 до версии 9.0, встроенные бинарники (двоичные файлы) для Apple Silicon и несколько API, но обо всем по порядку.
С полным списком изменений можно ознакомиться здесь.
Node.js 16 заменит Node.js 15 в качестве «текущего» (current) релиза. Этот статус будет сохраняться за ним на протяжении следующих 6 месяцев. Затем, в октябре 2021 года, Node.js 16 перейдет в статус «долгосрочной поддержки» (long-term support, LTS). После перехода в статус LTS он получит кодовое имя 'Gallium'.
Подробности о релизах можно найти в репозитории «Node.js Release Working Group». А пока давайте пройдемся по лучшим новостям.
Обновление V8 до версии 9.0
Обновление движка JavaScript V8 — это улучшение производительности, а также обеспечение поддержки Node.js последних возможностей JavaScript. К слову, в Node.js 15 использовался V8 версии 8.6.
Из основных изменений движка можно назвать поддержку индексов соответствия в регулярных выражениях (regexp match indices), а также улучшение (повышение скорости) доступа к свойству «super».
С полным списком изменений можно ознакомиться здесь.
Индексы соответствия
Идексы соответствия позволяют разработчикам получать массив подмассивов, содержащих начальные и конечные позиции (индексы) групп захвата (capture groups) в регулярном выражении при наличии совпадения (или нескольких совпадений). Данный массив доступен через свойство «indices» объекта с совпадениями. Обратите внимание, что регулярное выражение, используемое для поиска совпадений, должно иметь флаг «/d».
const re = /(a)(b)/d // Регулярное выражение. Обратите внимание на наличие флага /d
const m = re.exec('ab') // Объект с совпадениями
console.log(m.indices[0]) // Первый подмассив — это полное совпадение
// [0, 2]
console.log(m.indices[1]) // Второй подмассив — первая группа захвата
// [0, 1]
console.log(m.indices[2]) // Третий подмассив — вторая группа захвата
// [1, 2]
Доступ к свойству «super»
Доступ к свойству «super» был улучшен за счет использования системы встроенного кэша и оптимизации генерации кода в «TurboFan» (TurboFan — это компилятор, за интепретацию кода в V8 отвечает Ignition). Как утверждают разработчики V8, скорость доступа к super стала почти такой же, как скорость доступа к обычному свойству.
Ось «Y» — количество операций. Ось «X» — доступ к обычному свойству, доступ к свойству «super» (до обновления), доступ к свойству «super» (после обновления).
Стабильный Timers Promises API
Timers Promises API предоставляет альтернативный набор таймеров, возвращающих объект «Promise», что избавляет от необходимости использования util.promisify().
import { setTimeout } from 'timers/promises'
async function run() {
const greet = await setTimeout(3000, 'Hi!')
console.log(greet) // Hi!
}
run()
Timers Promises API был представлен в Node.js 15 в качестве экспериментальной возможности. Теперь он приобрел статус стабильного интерфейса.
Другие новые возможности
Природа процесса релизов такова, что новые возможности появляются в «текущем» релизе примерно каждые 2 недели. По этой причине многие возможности были доступны в Node.js 15, но все же являются относительно новыми для среды выполнения.
Среди таких возможностей можно назвать следующее:
- Экспериментальная реализация стандарта Web Crypto API
- npm 7 (v7.10.0)
- Node-API версии 8
- Стабильная реализация AbortController, основанная на AbortController Web API
- Стабильная реализация Source Maps v3 (NODE_OPTIONS=--enable-source-maps в терминале или { «enable-source-maps»: true } в .mocharc.json)
- Реализации atob (buffer.atob(data)) и btoa (buffer.btoa(data)), обеспечивающие совместимость с устаревшими API (кодирование/декодирование данных в формат «Base64»)
Новые минимальные наборы компилятора и платформы
Node.js предоставляет встроенные бинарники для нескольких различных платформ. Для каждого мажорного релиза минимальный набор инструментов оценивается и по-возможности расширяется.
Node.js 16 будет первым релизом с встроенными двоичными файлами для Apple Silicon. В то время как для архитектур Intel (darwin-x64) и ARM (darwin-arm64) предоставляются отдельные архивы (tarball), «установщик» (.pkg) для macOS представляет собой мультиархитектурный бинарник.
Для платформ, основанных на Linux, минимальный уровень GCC для генерации Node.js 16 составляет GCC 8.3.
Подробности о поддерживаемых инструментах и компиляторах можно найти здесь.
Прекращение поддержки
Разработчики Node.js стараются минимизировать количество изменений, которые могут привести к нарушениям в экосистеме (имеется ввиду работа Node.js-библиотек). Для обнаружения таких изменений используется GITGM (Canary in the Gold Mine).
Тем не менее, некоторые возможности были признаны устаревшими. Среди наиболее существенных можно назвать доступ к process.bindings() для некоторых модулей ядра, таких как process.binding('http_parser') или process.binding('url').
Следует отметить, что новый мажорный релиз — это результат усилий большого количества людей, заинтересованных в улучшении и дальнейшем развитии Node.js (контрибьюторов и коллабораторов). Также с целью подготовки нового релиза к продакшну большую работу проделывает Node.js Build Working Group.
Наши серверы можно использовать для разработки на node.js.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
оригинал
===========
Источник:
habr.com
===========
Похожие новости:
- [PHP, Программирование] От версии 8 к 8.1: новый виток развития PHP (перевод)
- [Программирование, Проектирование и рефакторинг, Разработка игр, Unity] Разделяй и властвуй — Использование FSM в Unity
- [Программирование, Математика, Машинное обучение, Учебный процесс в IT] Ozon Masters: прием заявок на набор 2021 года
- [Разработка веб-сайтов, Open source, Программирование, .NET] Блеск и нищета open source платформы RawCMS. Причины провала и выводы (перевод)
- [Программирование микроконтроллеров] К вопросу о светодиодах и управлении ими через МК
- [Облачные вычисления, Node.JS, Amazon Web Services, Тестирование мобильных приложений, Serverless] CloudWatch и Lambda, или Как я перестал бояться и полюбил AWS
- [Программирование, Разработка игр, Игры и игровые приставки] Портируем DOOM на serverless-платформу (перевод)
- [Системное администрирование, PHP, Программирование, Разработка систем связи] Голосовое меню своими руками
- [Программирование, Управление проектами, Облачные сервисы, Микросервисы] О мифологии миграции монолита в облака
- [Карьера в IT-индустрии, Лайфхаки для гиков] Манифест: почему я не делаю свой пет-проджект постоянной работой (перевод)
Теги для поиска: #_programmirovanie (Программирование), #_node.js, #_node.js, #_node_js_16, #_obnovlenija_node.js (обновления node.js), #_blog_kompanii_maklaud (
Блог компании Маклауд
), #_programmirovanie (
Программирование
), #_node.js
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:03
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
20 апреля состоялся релиз новой 16 версии Node.js. Среди основных изменений обновление движка JavaScript V8 до версии 9.0, встроенные бинарники (двоичные файлы) для Apple Silicon и несколько API, но обо всем по порядку. С полным списком изменений можно ознакомиться здесь. Node.js 16 заменит Node.js 15 в качестве «текущего» (current) релиза. Этот статус будет сохраняться за ним на протяжении следующих 6 месяцев. Затем, в октябре 2021 года, Node.js 16 перейдет в статус «долгосрочной поддержки» (long-term support, LTS). После перехода в статус LTS он получит кодовое имя 'Gallium'. Подробности о релизах можно найти в репозитории «Node.js Release Working Group». А пока давайте пройдемся по лучшим новостям. Обновление V8 до версии 9.0 Обновление движка JavaScript V8 — это улучшение производительности, а также обеспечение поддержки Node.js последних возможностей JavaScript. К слову, в Node.js 15 использовался V8 версии 8.6. Из основных изменений движка можно назвать поддержку индексов соответствия в регулярных выражениях (regexp match indices), а также улучшение (повышение скорости) доступа к свойству «super». С полным списком изменений можно ознакомиться здесь. Индексы соответствия Идексы соответствия позволяют разработчикам получать массив подмассивов, содержащих начальные и конечные позиции (индексы) групп захвата (capture groups) в регулярном выражении при наличии совпадения (или нескольких совпадений). Данный массив доступен через свойство «indices» объекта с совпадениями. Обратите внимание, что регулярное выражение, используемое для поиска совпадений, должно иметь флаг «/d». const re = /(a)(b)/d // Регулярное выражение. Обратите внимание на наличие флага /d
const m = re.exec('ab') // Объект с совпадениями console.log(m.indices[0]) // Первый подмассив — это полное совпадение // [0, 2] console.log(m.indices[1]) // Второй подмассив — первая группа захвата // [0, 1] console.log(m.indices[2]) // Третий подмассив — вторая группа захвата // [1, 2] Доступ к свойству «super» Доступ к свойству «super» был улучшен за счет использования системы встроенного кэша и оптимизации генерации кода в «TurboFan» (TurboFan — это компилятор, за интепретацию кода в V8 отвечает Ignition). Как утверждают разработчики V8, скорость доступа к super стала почти такой же, как скорость доступа к обычному свойству. Ось «Y» — количество операций. Ось «X» — доступ к обычному свойству, доступ к свойству «super» (до обновления), доступ к свойству «super» (после обновления). Стабильный Timers Promises API Timers Promises API предоставляет альтернативный набор таймеров, возвращающих объект «Promise», что избавляет от необходимости использования util.promisify(). import { setTimeout } from 'timers/promises'
async function run() { const greet = await setTimeout(3000, 'Hi!') console.log(greet) // Hi! } run() Timers Promises API был представлен в Node.js 15 в качестве экспериментальной возможности. Теперь он приобрел статус стабильного интерфейса. Другие новые возможности Природа процесса релизов такова, что новые возможности появляются в «текущем» релизе примерно каждые 2 недели. По этой причине многие возможности были доступны в Node.js 15, но все же являются относительно новыми для среды выполнения. Среди таких возможностей можно назвать следующее:
Новые минимальные наборы компилятора и платформы Node.js предоставляет встроенные бинарники для нескольких различных платформ. Для каждого мажорного релиза минимальный набор инструментов оценивается и по-возможности расширяется. Node.js 16 будет первым релизом с встроенными двоичными файлами для Apple Silicon. В то время как для архитектур Intel (darwin-x64) и ARM (darwin-arm64) предоставляются отдельные архивы (tarball), «установщик» (.pkg) для macOS представляет собой мультиархитектурный бинарник. Для платформ, основанных на Linux, минимальный уровень GCC для генерации Node.js 16 составляет GCC 8.3. Подробности о поддерживаемых инструментах и компиляторах можно найти здесь. Прекращение поддержки Разработчики Node.js стараются минимизировать количество изменений, которые могут привести к нарушениям в экосистеме (имеется ввиду работа Node.js-библиотек). Для обнаружения таких изменений используется GITGM (Canary in the Gold Mine). Тем не менее, некоторые возможности были признаны устаревшими. Среди наиболее существенных можно назвать доступ к process.bindings() для некоторых модулей ядра, таких как process.binding('http_parser') или process.binding('url'). Следует отметить, что новый мажорный релиз — это результат усилий большого количества людей, заинтересованных в улучшении и дальнейшем развитии Node.js (контрибьюторов и коллабораторов). Также с целью подготовки нового релиза к продакшну большую работу проделывает Node.js Build Working Group. Наши серверы можно использовать для разработки на node.js. Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации! оригинал =========== Источник: habr.com =========== Похожие новости:
Блог компании Маклауд ), #_programmirovanie ( Программирование ), #_node.js |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:03
Часовой пояс: UTC + 5