Русский
Русский
English
Статистика
Реклама

Релиз Node.js 16 обзор лучшего



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 // Регулярное выражение. Обратите внимание на наличие флага /dconst 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
К списку статей
Опубликовано: 24.04.2021 14:08:39
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании маклауд

Программирование

Node.js

Node js 16

Обновления node.js

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru