Вышла Node.js 23

16 октября 2024 года состоялся релиз JavaScript-платформы Node.js 23. Платформа Node.js может быть использована как для серверного сопровождения работы веб-приложений, так и для создания обычных клиентских и серверных сетевых программ. Node.js 23.0 отнесён к промежуточным веткам, сопровождение которых осуществляется в течение 7 месяцев (до июня 2025 года). Предыдущий мажорный релиз Node.js 22 случился в апреле этого года.

Для расширения функциональности приложений для Node.js подготовлена коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Версия проекта Node.js 22 отнесена к веткам с длительным сроком поддержки (LTS), но этот статус будет присвоен только 29 октября, после проведения стабилизации. Поддержка Node.js 22.x будет осуществляться до 30 апреля 2027 года. Сопровождение прошлой LTS-ветки Node.js 20.x продлится до апреля 2026 года, а позапрошлой LTS-ветки 18.x — до апреля 2025 года. Сопровождение промежуточной ветки Node.js 21.x будет прекращено 1 июня 2024 года.

По данным OpenNET, основные изменения и дополнения в Node.js 23:

• добавлена экспериментальная поддержка языка TypeScript, допускающего явное определение типов. Поддержка включается при помощи опций «—experimental-strip-types» и «—experimental-transform-types». В случае первой опции работа с TypeScript сводится к очистке специфичных для данного языка определений типов (проверка типов не выполняется, код просто приводится к виду JavaScript без типов). Вторая опция осуществляет преобразование в код на JavaScript некоторых элементов синтаксиса TypeScript, например, перечислений (enum) и пространств имён (namespace);

• включена по умолчанию возможность использования вызова «require()» для загрузки JavaScript-модулей ESM (ECMAScript Modules) в синхронном режиме. ESM-модули применяются в браузерах и идут на смену модулям CommonJS, специфичным для Node.js. Для загрузки через «require()» в Node.js ESM-модуль должен выполняться в синхронном режиме (без await на верхнем уровне);

• обеспечено автоматическое выявление ESM-модулей в файлах без расширения или с расширением «.js». Ранее подобные файлы трактовались как модули CommonJS, если в размещённом в том же каталоге файле package.json явно не указывался их тип («type»: «module»). В новой версии для файлов, тип которых не обозначен в package.json, вначале осуществляется попытка загрузки как модуля CommonJS, а если это не удалось, то как модуля ESM;

• добавлена экспериментальная реализация совместимого с браузерами API Web Storage, предназначенного для постоянного (класс localStorage) или временного (класс sessionStorage) хранения данных в формате ключ/значение. Для включения поддержки Web Storage требуется запуск с флагом «—experimental-webstorage» и указание пути к файлу с хранилищем через флаг «—localstorage-file»;

• добавлен экспериментальный API SQLite для работы с базами данных, используя язык запросов SQL и хранилище на базе библиотеки SQLite. Помимо хранения базы данных в файле на диске, её также можно размещать в памяти, указав вместо имени файла «:memory:». Вышеотмеченной API Web Storage также реализован поверх SQLite, что привело к добавлению SQLite в число зависимостей для Node.js;

• объявлена стабильной команда «node —run», предназначенная для запуска скриптов, определённых в файле package.json;

• реализована опциональная поддержка кэширования скомпилированного кода на диске для существенного ускорения запуска модулей. Включение кэширования осуществляется через переменную окружения NODE_COMPILE_CACHE. По своему назначению возможность напоминает пакет v8-compile-cache, но отличается более высокой производительностью и поддержкой модулей ESM;

• проведена оптимизация объекта Buffer, позволившая значительно увеличить производительность методов Buffer.copy() и Buffer.write();

• повышена производительность модуля node:fs, в котором также сокращено число вызовов кода на C++ в процессе работы;

• движок V8 обновлён до версии 12.9, применяемой в Chromium 129;

• удалена поддержка 32-разрядных систем с ОС Windows;

• из-за внедрения в Node.js и движке V8 возможностей, определённых в стандарте C++20, повышены требования к версии компилятора GCC. Для сборки Node.js теперь требуется как минимум версия GCC 12.

Источник: habr.com

0 0 голоса
Рейтинг новости
5187
0
Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии