The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

06.05.2025 20:04

Состоялся релиз Node.js 24.0.0, платформы для выполнения сетевых приложений на языке JavaScript. Node.js 24.0 отнесён к веткам с длительным сроком поддержки, но данный статус будет присвоен только в октябре, после проведения стабилизации. Поддержка Node.js 24.x будет осуществляться до 30 апреля 2028 года. Сопровождение прошлой LTS-ветки Node.js 22.x продлится до апреля 2027 года, а позапрошлой LTS-ветки 20.x до апреля 2026 года. Сопровождение LTS-ветки 18.x прекращено 30 апреля 2025 года, промежуточной ветки Node.js 23.x будет прекращено 1 июня 2025 года.

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

  • В API AsyncLocalStorage по умолчанию задействован класс AsyncContextFrame, который помечен стабильным. AsyncContextFrame реализует более эффективный механизм отслеживания асинхронного контекста, позволяющий заметно повысить производительность.
  • API URLPattern теперь доступен в виде глобального объекта, который можно использовать без явного импортирования. URLPattern предоставляет возможности для проверки соответствия URL определённому шаблону, что, например может применяться для разбора ссылок.
  • Улучшен и стабилизирован механизм Permission Model, позволяющий ограничить доступ к определённым ресурсам в процессе исполнения (например, можно запретить создание дочерних процессов, ограничить доступ на запись или чтение к определённым частям ФС, отключить дополнения). Вместо экспериментального флага "--experimental-permission" для включения Permission Model теперь можно использовать флаг "--permission".
  • Расширены возможности модуля node:test (test_runner), предназначенного для создания и запуска тестов на языке JavaScript, возвращающих результат в формате TAP (Test Anything Protocol). Модуль теперь автоматически ожидает завершения вложенных тестов без необходимости использования await.
  • HTTP-клиент undici обновлён до ветки 7.x, в которой повышена производительность и добавлена поддержка новых возможностей HTTP.
  • Движок V8 обновлён до версии 13.6, применяемой в Chromium 136. Из новых возможностей по сравнению с прошлым выпуском Node.js отмечена поддержка типизированных массивов Float16Array, ручного управления ресурсами, метода RegExp.escape (экранирование строк для RegExp), 64-разрядных указателей (Memory64) в WebAssembly, метода Error.isError.
  • Пакетный менеджер NPM обновлён до версии 11.
  • Прекращена поддержка компилятора MSVC. Для компиляции на платформе Windows необходимо использовать ClangCL.

Платформа 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-приложении, работающем в браузере.

  1. Главная ссылка к новости (https://nodejs.org/en/blog/rel...)
  2. OpenNews: Опубликована платформа Node.js 23.0 с начальной поддержкой языка TypeScript
  3. OpenNews: Доступна платформа Deno 2.0, развиваемая автором Node.js
  4. OpenNews: Доступна JavaScript-платформа Node.js 22.0.0
  5. OpenNews: Доступна серверная JavaScript-платформа Bun 1.0, более быстрая, чем Deno и Node.js
  6. OpenNews: Атака на Node.js через манипуляции с прототипами объектов JavaScript
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63194-node.js
Ключевые слова: node.js
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (45) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 20:38, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто там делал форк чисто на ts без js с компиляцией — получилось, что по скоростям?
     
     
  • 2.6, НяшМяш (ok), 20:52, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Deno? Он вроде ещё существует. Написан кстати на расте*.

    *достаю попкорн

     
     
  • 3.8, Аноним (1), 20:54, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Дено же внутри всё равно в жс трансирует для того же v8?
     
  • 2.9, Нуину (?), 21:12, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Сабж так тоже умеет, просто игнорит типы. Но там не все работает вроде.
     
     
  • 3.24, Аноним (24), 22:18, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В ванильном js тоже можно проверять типы перед каждой операцией. Только никто этого не делает, а потом у них язык плохой.
     
     
  • 4.29, Нуину (?), 22:42, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я про то, что node умеет запускать ts без необходимости компиляции в js.
     
  • 2.31, Аноним (31), 23:22, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Bun? Deno? Это не форки
     
     
  • 3.55, test (??), 07:24, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ага, причем вроде Deno пилит сам автор сабжа, вроде хочет убрать все костыли из сабжа.
     

  • 1.11, Нуину (?), 21:16, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > (дополнительно Microsoft развивает вариант Node.js с движком Chakra-Core)

    Уже давно забили
    https://github.com/nodejs/node-chakracore

     
     
  • 2.62, Аноним (62), 09:06, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Еще была версия ноды на мозиловском движке, тоже забили.

    https://github.com/mozilla/spidernode

     

  • 1.12, Нуину (?), 21:18, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > шаблонизаторы, CSS-движки, реализации криптоалгоритмов

    ЛОЛ. Щас бы использовать реализацию криптоалгоритма на жс))) А вообще тенденция пошла переписывать с жс все тулзы на более быстрые языки: typescript-go, например, или сборщики там go или расте.

     
     
  • 2.33, Аноним (33), 23:34, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну а что, я использовал эту реализацию криптоалгоритмов. Зашифровать/расшифровать AES, подписать ключом или проверить подпись. Работает. Есть мануал, причем он получше, чем в некоторых криптографических библиотеках.
     
     
  • 3.38, Нуину (?), 00:08, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Работает. Есть мануал, причем он получше, чем в некоторых криптографических библиотеках

    Криптографию так не проверяют)))

     
     
  • 4.43, Аноним (43), 01:24, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А я разве рассказал как проверял? Расскажите как вы проверяете криптографию и что не так в нодовской криптографии и мы предметно пообщаемся, поделимся опытом.

    А для солидности добавлю смайлов)))))

     
     
  • 5.48, Нуину (?), 02:42, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > что не так в нодовской криптографии

    В ноде криптография - биндинги к openssl, никто на жс её не реализовывал.

     
     
  • 6.64, Молодой Смузихлёб (?), 09:22, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    До появления биндингов в браузерах портировали библиотеки по типу TweetNaCl, и оно работало шустро
     
  • 5.50, Нуину (?), 02:49, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А я разве рассказал как проверял?

    Да, выше же написал. "сделал, вроде работает".

     
  • 5.51, Нуину (?), 02:50, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А для солидности добавлю смайлов)))))

    Это не спасет он неумения читать сообщения.

     
  • 2.53, penetrator (?), 02:54, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    какой нафиг typescript? это же убогий транспилер для JS полностью зависимый от фич JS
     
  • 2.57, Аноним (57), 07:56, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    typescript-go — это не быстрый язык, это быстрый транспилятор. Исполняться будет всё тот же js.
     
     
  • 3.75, Нуину (?), 18:06, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > typescript-go — это не быстрый язык, это быстрый транспилятор. Исполняться будет
    > всё тот же js.

    Это понятно, я про то, что раньше он был на жс, а теперь переписывают на более быстрое, как и сборщики.

     

  • 1.13, Нуину (?), 21:20, 06/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    >  XML-парсеры.

    Покажие нормальный парсер XML, который поддерживате пространства имен, xpath и прочее, но не является биндингом или wasm.

     
     
  • 2.26, Аноним (26), 22:33, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > но не является биндингом

    А почему бы и не биндинг? И если уж на то пошло, покажи нормальный парсер XML на любом языке. Чтоб поддерживал последний стандарт xpath, и чтобы он не был проприетарным (на этом критерии отвалятся примерно все решения).

     
     
  • 3.28, Нуину (?), 22:41, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Я не против. Просто написано в статье как-будто на жс такое написано. Ну или я неверно прочитал.
     
     
  • 4.65, Смузихлеб забывший пароль (?), 11:08, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    из статьи следует, что на жс этим можно пользоваться, а не что это целиком на нём написано
     
  • 2.60, Ko (?), 09:02, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Easysax
     

  • 1.35, Аноним (35), 00:03, 07/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    У меня на втором пне 32 битная сборка не запускается (NetBSD).
     
     
  • 2.58, Аноним (58), 08:24, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    попробуй core2duo + linux
     
     
  • 3.77, Аноним (77), 18:51, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > попробуй core2duo

    Готов принять в дар.

     

  • 1.46, Аноним (46), 02:05, 07/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Интересно, кто нить в продакшене как бекенд ее использует? На хайлоаде? Интересно, просто у меня лично еще на первых релизах были сомнительные ощущения, жс для сервера... Зачем и кому это надо?
     
     
  • 2.49, Аноним (49), 02:49, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Используют и достаточно активно, правда в основном для всяких корпоративных внутренних вещей.
     
  • 2.59, Аноним (59), 08:50, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно! Ведь нода - самый быстрый язычок из скриптовых для вебни. Быстрее пихона и пыха.
     
  • 2.70, Ann (??), 12:27, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для сколь-нибудь загруженного лучше использовать что-то другое: например go или java.
    А хайлоад вообще лучше писать на C или C++.
     
     
  • 3.72, Аноним (72), 13:36, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Хайлоад писался и будет писаться на java go и т д по экономическим причинам К ... большой текст свёрнут, показать
     
     
  • 4.73, _ (??), 15:30, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Так и с использованием C/C++ для хайлоада, скорее поставят лишнюю стойку с компами

    Угу. или лишний дэйтацентр :)
    > (или закажут больше инстансов в облаке)

    Угу. Или увидят что заплатить за это дороже чем заменить команду программеров. :)

    Короче - зависит отЪ(С)

     
     
  • 5.76, Аноним (76), 18:36, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем гадать? Можно просто посмотреть на реализации в дикой природе и увидеть, что хайлоад пишется примерно на всём, от Явы до Питона, и, так же, что язык реализации снова мало на что влияет. Напоминаю, что FB написан на PHP, и стал хайлоадом задолго до начала всех оптимизаций.
     

  • 1.54, Аноним (54), 03:40, 07/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Когда там уже решат проблему с dependency hell? Мало того что развели зоопарк с языками JavaScript и TypeScript, так еще и импорты commonjs и esnext. Когда будет решение? Это пожалуй самый важный момент с которым часами иногда возиться приходиться решая проблемы зависимостей. А зоопарк бандлеров и прочего интересного? Почему не сделать как в Rust упаковщик в один обычный cargo, а вот уже различную функциональность запихнуть в плагины. Короче просто уничтожают язык вполне пригодный для серверного программирвоания. А если бы еще и в браузеры затащить TypeScript без транспиляции... Эх...
     
     
  • 2.61, Аноним (62), 09:05, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Не используй зависимости, если они тебя смущают. Странная какая-то претензия.
     
  • 2.66, Смузихлеб забывший пароль (?), 11:12, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А если бы еще и в браузеры затащить TypeScript без транспиляции... Эх...

    в браузеры и так что угодно можно тащить вплоть до сей и плюсов с преобразованием к васм, разумеется
    Зачем браузеру сверх того что и так там есть нативная поддержка какого-то ультрапереусложнённого кривого мусора вроде тайпскрипта, предложенного "гениями и мастерами веба" в лице микрософта, который даже собственную версию ноды забросил на помойку ?

     
     
  • 3.67, Аноним (67), 12:19, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Смысл нативного тайпскрипта как минимум в повышении производительности благодаря типизации.
    Про плюшки языка, которые будут уменьшать размер кода (что для браузера ультраактуально, посмотрите какие мегаметровые портянки на жс в современных проектах) и делать его более предсказуемым вовсе можно не упоминать.

    Просто тайпскрипт сейчас в таком состоянии, что из-за вынужденной завязки на жс получается только базовая проверка времени преобразования на деплое, не более. Гугель же не хочет тайпскрипт нативно, потому что конкурент дарту и го, да и модернизировать v8 — дорого. Типовые жс-разработчики тоже против, потому что всё, что противоречит тяп-ляп-питон-стратегии для них только усложняет жизнь.

     
     
  • 4.69, Нуину (?), 12:26, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Смысл нативного тайпскрипта как минимум в повышении производительности благодаря типизации.

    А как это получится, если система типов unsound? Язык придется менять или систему типов.

     
     
  • 5.71, Аноним (67), 13:19, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В этом и весь смысл — если сам движок будет изначально под строгие типы заточен, без всякого жс и с минимумом any.
     

  • 1.56, Аноним (56), 07:37, 07/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    ms так развивают node-chakracore, что даже проект на github заархивировали
     
     
  • 2.68, Аноним (67), 12:25, 07/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А смысла нет. Гугл через whatwg рулит вебом, любой браузерный движок в итоге обречён превратиться в v8 или сдохнуть. Как в формуле-1 — вроде и разные производители, а по факту из-за жёстких ограничений все машины практически одинаковые. Фейлфокс, который держат на плаву как псевдоальтернативу это только подтверждает.
     

  • 1.74, Аноним (-), 18:02, 07/05/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру