Опубликована платформа Node.js 25.0.0

Состоялся релиз Node.js 25.0.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 25.0 отнесён к промежуточным веткам, сопровождение которых осуществляется в течение 7 месяцев (до июня 2026 года). В ближайшие дни будет завершена стабилизация ветки Node.js 24, которая в конце октября получит статус LTS и будет поддерживаться до апреля 2028 года. Поддержка прошлых LTS-веток Node.js 22.x и 20.x продлится до апреля 2027 и 2026 годов соответственно.

Основные улучшения:

  • Движок V8 обновлён до версии 14.1, применяемой в Chromium 141. Из улучшений по сравнению с прошлым выпуском Node.js отмечено значительной повышение производительности метода JSON.stringify, оптимизация WebAssembly и JIT, реализация методов для преобразования между Uint8Array и данными в формате base64 или шестнадцатеричным представлением.
  • В механизм Permission Model, позволяющий ограничить доступ к определённым ресурсам в процессе исполнения, добавлена опция “–allow-net” для обеспечения сетевого доступа (если не указана опция “–allow-net”, запуск Node.js в режиме “–permission” будет выводить ошибку ERR_ACCESS_DENIED при попытке выполнения сетевых операций).
  • Включён по умолчанию совместимый с браузерами API Web Storage, предназначенный для постоянного (класс localStorage) или временного (класс sessionStorage) хранения данных в формате ключ/значение. Убрана метка экспериментальной разработки с API Web Storage.
  • В категорию глобально доступных (можно использовать без явного импорта) переведён класс ErrorEvent, предоставляющий совместимый с браузерами интерфейс для обработки событий с информацией об ошибках.
  • Для WebAssembly включена поддержка API JSPI (JavaScript Promise Integration), позволяющего обращаться к асинхронным Web API из последовательно выполняемого кода, скомпилированного в WebAssembly.
  • Добавлена опция “NODE_COMPILE_CACHE_RELATIVE_PATH” для переносимой работы с кэшем скомпилированных объектов. В данном режиме хэши для идентификации объектов вычисляются с использованием относительных путей к файлам, что позволяет перемещать и встраивать содержимое каталога с кодом вместе с кэшем.
  • Добавлена возможность профилирования нагрузки на CPU.
  • Пакетный менеджер NPM обновлён до версии 11.6.2.
  • Добавлена поддержка Python 3.14.
  • В качестве минимально поддерживаемых версий заявлены Clang 19 и Xcode 16.4.
  • Прекращена поддержка объекта SlowBuffer, ранее объявленного устаревшим из-за потенциальных проблем с безопасностью. Вместо SlowBuffer следует использовать метод
    Buffer.allocUnsafeSlow().

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

Для обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe).

Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8 (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core). По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере.

Release. Ссылка here.