Opublikowano platformę Node.js 24.0.0

Wydano Node.js 24.0.0, platformę do uruchamiania aplikacji sieciowych w języku JavaScript. Node.js 24.0 jest zaliczany do gałęzi z długoterminowym wsparciem, ale ten status zostanie nadany dopiero w październiku po stabilizacji. Wsparcie dla Node.js 24.x będzie prowadzone do 30 kwietnia 2028 roku. Wsparcie dla poprzedniej gałęzi LTS Node.js 22.x potrwa do kwietnia 2027 roku, a dla przedostatniej gałęzi LTS 20.x do kwietnia 2026 roku. Wsparcie dla gałęzi LTS 18.x zakończono 30 kwietnia 2025 roku, a wsparcie dla gałęzi pośredniej Node.js 23.x zakończy się 1 czerwca 2025 roku.

Główne ulepszenia:

  • W API AsyncLocalStorage domyślnie używany jest stabilny klas AsyncContextFrame. AsyncContextFrame wdraża bardziej efektywny mechanizm śledzenia kontekstu asynchronicznego, co znacznie zwiększa wydajność.
  • API URLPattern jest teraz dostępne jako obiekt globalny, który można używać bez jawnego importowania. URLPattern oferuje możliwości sprawdzania, czy URL odpowiada określonym wzorom, co na przykład można zastosować do analizy linków.
  • Ulepszony i ustabilizowany mechanizm Permission Model pozwala na ograniczenie dostępu do określonych zasobów w trakcie wykonywania (na przykład można zakazać tworzenia procesów podrzędnych, ograniczyć dostęp do zapisu lub odczytu do określonych części systemu plików, wyłączyć dodatki). Zamiast eksperymentalnego flagi „—experimental-permission” do włączenia Permission Model można teraz używać flagi „—permission”.
  • Zwiększone możliwości modułu node:test (test_runner) przeznaczonego do tworzenia i uruchamiania testów w języku JavaScript, które zwracają wyniki w formacie TAP (Test Anything Protocol). Moduł teraz automatycznie czeka na zakończenie zagnieżdżonych testów bez potrzeby używania await.
  • Klient HTTP undici został zaktualizowany do gałęzi 7.x, w której zwiększono wydajność i dodano wsparcie dla nowych możliwości HTTP.
  • Silnik V8 został zaktualizowany do wersji 13.6, stosowanej w Chromium 136. Z nowych możliwości w porównaniu do poprzedniej wersji Node.js, zauważono wsparcie dla tablic typowanych Float16Array, ręcznego zarządzania zasobami, metody RegExp.escape (eskalacja ciągów dla RegExp), 64-bitowych wskaźników (Memory64) w WebAssembly oraz metody Error.isError.
  • Menadżer pakietów NPM zaktualizowany do wersji 11.
  • Wsparcie dla kompilatora MSVC zostało wstrzymane. Aby skompilować na platformie Windows, należy używać ClangCL.

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 zapewniane jest poprzez wykorzystanie silnika V8 opracowanego przez firmę Google (dodatkowo Microsoft rozwija wariant Node.js z silnikiem Chakra-Core). Zasadniczo Node.js przypomina frameworki Perl AnyEvent, Ruby Event Machine, Python Twisted oraz implementację zdarzeń w Tcl, jednak pętla przetwarzania zdarzeń (event loop) w Node.js jest ukryta przed programistą i przypomina przetwarzanie zdarzeń w aplikacji webowej działającej w przeglądarce.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster