Вышла Node.js 20. Рассказываем об обновлениях
Node.js обновилась до 20 версии и перейдет на LTS-версию в октябре 2023 года. Рассказываем, что изменилось.
7К открытий8К показов
Сообщение об обновлении Node.js до 20 версии появилось в официальном блоге разработчиков.
Загрузить Node.js 20.0.0 можно здесь, а прочесть обо всех обновлениях можно на странице релиза.
Node.js 20 перейдет на долгосрочную поддержку (LTS) в октябре. До той поры он будет «текущим» релизом в течение полугода.
Будете обновляться?
Да, давно пора
Нет, подожду LTS или пока старая версия не прекратит поддержку
Обновлюсь вынужденно :(
Основные изменения в Node.js 20
Модель разрешений
Модель разрешений Node.js — это экспериментальный механизм, который ограничивает доступ к определенным ресурсам.
Она позволяет разработчикам ограничить доступ к определенным ресурсам во время выполнения программы, таким как операции с файловой системой, создание дочерних процессов и рабочих потоков.
В 20 версии представлены следующие возможности:
- Ограничение доступа к файловой системе (чтение и запись).
Используйте —allow-fs-read и —allow-fs-write - Ограничение доступа к дочернему процессу.
Используйте —allow-child-process - Ограничение доступа к рабочим потокам.
Используйте —allow-worker - Ограничение доступа к нативным аддонам (аналогично флагу —no-addons).
Эти команды маркируются флагом --experimental-permission
. Флаг позволяет запускать команды в отдельном потоке, чтобы отделить код модулей от основного кода приложения.
Ещё появились флаги --allow-fs-read
и --allow-fs-write
. Они позволяют детально контролировать, к каким файлам может обращаться Node.js.
Чтобы включить эти флаги, нужно использовать флаг —experimental-permission вместе с желаемыми разрешениями. Например, вот как получить получить доступ на чтение и запись ко всей файловой системе:
Разработчики также могут указать конкретные пути для доступа к файловой системе, передавая значения флагов через запятую. Например, следующая команда разрешает доступ на запись в папку /tmp/:
Подстановочные знаки также можно использовать для разрешения доступа сразу к нескольким файлам или папкам. Например, следующая команда разрешает доступ на чтение ко всем файлам и папкам в каталоге /home/, начинающимся с test:
Эти функции пока являются экспериментальными и могут измениться в будущих выпусках Node.js.
V8 11.3 и Chromium 113
Новая версия движка V8 включена в Node.js (обновлена до версии 11.3, которая входит в состав Chromium 113). Теперь производительность станет выше, и можно будет использовать новые функции языка.
Совместимость с другими средами
Проект на Node.js теперь совместим с другими средами JavaScript.
Например, в Node.js 20 аргументы функций Web Crypto API теперь принудительно проверяются в соответствии с их определениями WebIDL, как и в других реализациях Web Crypto API.
Поддержка ARM64 Windows
Node.js теперь поддерживает двоичные файлы для ARM64 Windows, что позволяет спокойно выполнять код.
Пакеты MSI, zip/7z и исполняемый файл доступны на сайте загрузки Node.js наряду со всеми другими платформами.
Все изменения в Node.js 20 теперь тестируются на ARM64 Windows, чтобы предотвратить регрессии и обеспечить совместимость.
Обновление парсера
Node.js v20 поставляется с последней версией парсера URL, Ada. Это обновление значительно повышает производительность парсинга URL. Также улучшены функции url.domainToASCII
и url.domainToUnicode
в node:url
.
Что будет со старыми версиями Node.js
Node.js 14 перестанет поддерживаться в апреле 2023 года, поэтому стоит обновиться до Node.js 18 (LTS) или Node.js 20 (LTS выйдет через полгода).
Node.js 16 (LTS) перестанет поддерживаться в сентябре 2023 года, хотя изначально это должно было случиться в апреле 2024 года. Поддержка закончится раньше, так как раньше заканчивается поддержка OpenSSL 1.1.1.
7К открытий8К показов