Wydano Node.js 26.0.0, platformę do uruchamiania aplikacji sieciowych w języku JavaScript. Node.js 26.0 jest klasyfikowane jako wersja z długoterminowym wsparciem, jednak ten status zostanie przypisany dopiero w październiku po zakończeniu stabilizacji. Wsparcie dla Node.js 26.x będzie dostępne do maja 2029 roku. Utrzymanie poprzedniej gałęzi LTS Node.js 24.x będzie trwać do 30 kwietnia 2028 roku, a wcześniejszej 22.x do 30 kwietnia 2027 roku. Utrzymanie gałęzi LTS 20.x zakończono 30 kwietnia 2026 roku, natomiast wsparcie dla pośredniej wersji Node.js 25.x zakończy się 1 czerwca 2026 roku.
Główne ulepszenia:
- Domyślnie włączono API Temporal, które oferuje alternatywny zestaw metod do pracy z datami i czasem. API pozwala na manipulowanie datami z uwzględnieniem i bez uwzględnienia stref czasowych, konwersję czasu, formatowanie wyników oraz wykonywanie operacji arytmetycznych na czasie. Czas może być określany w niezależnej od strefy czasowej reprezentacji (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), z wiązaniem do strefy czasowej (Temporal.ZonedDateTime) oraz w reprezentacji epokowej (Temporal.Instant — liczba nanosekund od 1 stycznia 1970 roku).
- Silnik V8 zaktualizowano do wersji 14.6, stosowanej w Chromium 146. W porównaniu do poprzedniego wydania Node.js zauważono możliwość łączenia kilku iteratorów w jeden za pomocą metody Iterator.concat(), a także wdrożenie specyfikacji „upsert” w celu uproszczenia pracy z kolekcjami par klucz/wartość w obiektach JavaScript Map i WeakMap.
- Klient HTTP undici zaktualizowano do wersji 8.x.
- Usunięto metodę http.Server.prototype.writeHeader(), zamiast której należy używać http.Server.prototype.writeHead().
Platforma Node.js może być wykorzystana zarówno do serwerowego wsparcia prac Web-aplikacji, jak i do tworzenia zwykłych klientskich oraz serwerowych programów sieciowych. Dla rozszerzenia funkcjonalności aplikacji do Node.js przygotowano dużą kolekcję modułów, w której można znaleźć moduły z realizacją serwerów klientów HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduły do integracji z różnymi frameworkami webowymi, obsługiwacze WebSocket i Ajax, konektory do baz danych (MySQL, PostgreSQL, SQLite, MongoDB), silniki szablonów, silniki CSS, realizacje algorytmów kryptograficznych oraz systemów autoryzacji (OAuth), parsery XML.
Aby obsłużyć dużą liczbę równoległych zapytań, Node.js wykorzystuje asynchroniczny model uruchamiania kodu oparty na przetwarzaniu zdarzeń w trybie nieblokującym oraz określaniu callbacków. Metody multiplikacji połączeń obejmują takie metody jak epoll, kqueue, /dev/poll i select. Do multiplikacji połączeń używana jest biblioteka libuv, która jest nadbudową nad libev w systemach Unix i nad IOCP w Windows. Do tworzenia puli wątków używana jest biblioteka libeio, a do wykonywania zapytań DNS w trybie nieblokującym zintegrowano c-ares. Wszystkie wywołania systemowe, które powodują blokady, są wykonywane wewnątrz puli wątków, a następnie, podobnie jak obsługiwacze sygnałów, przesyłają wyniki swojej pracy z powrotem przez nieoznaczony kanał (pipe).
Wykonanie kodu JavaScript zapewnia opracowany przez firmę Google silnik V8. W istocie Node.js przypomina frameworki Perl AnyEvent, Ruby Event Machine, Python asyncio oraz implementację zdarzeń w Tcl, ale pętla zdarzeń (event loop) w Node.js jest ukryta przed programistą i przypomina przetwarzanie zdarzeń w aplikacji internetowej działającej w przeglądarce.
Źródło: opennet.ru
