Излезе Node.js 26.0.0, платформа за изпълнение на мрежови приложения на JavaScript. Node.js 26.0 е класифициран в клоновете с дългосрочна поддръжка, но този статус ще бъде присвоен едва през октомври, след приключване на стабилизацията. Поддръжката на Node.js 26.x ще продължи до май 2029 година. Поддръжката на предишния LTS клон Node.js 24.x ще се извършва до 30 април 2028 година, а на предходния 22.x - до 30 април 2027 година. Поддръжката на LTS клона 20.x бе прекратена на 30 април 2026 година, а на междинния клон Node.js 25.x ще спре на 1 юни 2026 година.
Основни подобрения:
- По подразбиране е активиран API Temporal, който предлага алтернативен набор от методи за работа с дати и време. API позволява манипулиране на дати с и без оглед на часовите зони, конвертиране на време, форматиране на изхода и извършване на аритметични операции с времето. Времето може да бъде зададено в независим от часова зона формат (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), с обвързване към часова зона (Temporal.ZonedDateTime) и в епохален формат (Temporal.Instant — брой наносекунди от 1 януари 1970 година).
- Двигателят V8 е обновен до версия 14.6, използвана в Chromium 146. От подобренията в сравнение с предишната версия на Node.js се отличава възможността за комбиниране на няколко итератора в един с помощта на метода Iterator.concat(), както и реализацията на спецификацията „upsert“ за опростяване на работата с колекции от двойки ключ/стойност в JavaScript обектите Map и WeakMap.
- HTTP клиентът undici е обновен до клон 8.x.
- Методът http.Server.prototype.writeHeader() е премахнат, вместо него трябва да се използва http.Server.prototype.writeHead().
Платформата Node.js може да се използва както за сървърно поддържане на уеб приложения, така и за създаване на обикновени клиентски и сървърни мрежови програми. За разширяване на функционалността на приложенията за Node.js е подготвена голяма колекция от модули, в която може да се намерят модули с реализация на сървъри и клиенти за HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули за интеграция с различни уеб фреймворкове, обработчици на 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. По своята същност Node.js е подобен на фреймворците Perl AnyEvent, Ruby Event Machine, Python asyncio и реализацията на събития в Tcl, но цикълът на обработка на събития (event loop) в Node.js е скрит от разработчика и напомня обработката на събития в уеб приложения, работещи в браузъра.
Източник: opennet.ru
