Bol spustený Node.js 25.0.0, platforma na spúšťanie sieťových aplikácií v jazyku JavaScript. Node.js 25.0 patrí do medzičlánkových vetiev, ktorých údržba sa vykonáva po dobu 7 mesiacov (do júna 2026). V nasledujúcich dňoch bude dokončená stabilizácia vetvy Node.js 24, ktorá na konci októbra získa status LTS a bude podporovaná do apríla 2028. Podpora predchádzajúcich LTS vetiev Node.js 22.x a 20.x potrvá do apríla 2027 a 2026.
Hlavné vylepšenia:
- Motor V8 bol aktualizovaný na verziu 14.1, ktorá sa používa v Chromi 141. Medzi vylepšeniami v porovnaní s predchádzajúcim vydaním Node.js sa značne zlepšil výkon metódy JSON.stringify, optimalizácia WebAssembly a JIT, implementácia metód na konverziu medzi Uint8Array a údajmi vo formáte base64 alebo hexadecimálnym zápisom.
- Do mechanizmu Permission Model, ktorý umožňuje obmedziť prístup k určitým zdrojom počas vykonávania, bola pridaná možnosť „—allow-net“ na zabezpečenie sieťového prístupu (ak nie je zadaná možnosť „—allow-net“, spustenie Node.js v režime „—permission“ vyvolá chybu ERR_ACCESS_DENIED pri pokuse o vykonávanie sieťových operácií).
- Zapnuté predvolene kompatibilný s prehliadačmi API Web Storage, určené na trvalé (trieda localStorage) alebo dočasné (trieda sessionStorage) ukladanie údajov vo formáte kľúč/hodnota. Označenie experimentálneho vývoja bolo odstránené z API Web Storage.
- Do kategórie globálne dostupných (môže sa používať bez explicitného importu) bol premenovaný trieda ErrorEvent, ktorá poskytuje rozhranie kompatibilné s prehliadačmi na spracovanie udalostí s informáciami o chybách.
- Pre WebAssembly bola pridaná podpora API JSPI (JavaScript Promise Integration), ktorá umožňuje prístup k asynchrónnym Web API z kódu vykonávaného sekvenčne, skompilovaného do WebAssembly.
- Bola pridaná možnosť „NODE_COMPILE_CACHE_RELATIVE_PATH“ pre prenosnú prácu s cache skompilovaných objektov. V tomto režime sa hashe na identifikáciu objektov počítajú pomocou relatívnych ciest k súborom, čo umožňuje presunúť a zabudovať obsah adresára s kódom spolu s cachom.
- Bola pridaná možnosť profilovania zaťaženia CPU.
- Správca balíkov NPM bol aktualizovaný na verziu 11.6.2.
- Bola pridaná podpora pre Python 3.14.
- Ako minimálne podporované verzie boli deklarované Clang 19 a Xcode 16.4.
- Podpora objektu SlowBuffer bola ukončená, pretože bol vyhlásený za zastaraný kvôli potenciálnym bezpečnostným problémom. Namiesto SlowBuffer by sa mal použiť metóda Buffer.allocUnsafeSlow().
Platforma Node.js môže byť použitá na serverovú podporu webových aplikácií, ako aj na vytváranie klasických klientských a serverových sieťových programov. Pre rozšírenie funkčnosti aplikácií pre Node.js bola pripravená veľká kolekcia modulov, v ktorej nájdete moduly s realizáciou. serverov a klientov HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly na integráciu s rôznymi webovými rámcami, spracovateľov WebSocket a Ajax, konektorov k DBMS (MySQL, PostgreSQL, SQLite, MongoDB), šablónovačov, CSS enginov, implementácií kryptografických algoritmov a systémov autorizácie (OAuth), XML parserov.
Na spracovanie veľkého množstva paralelných požiadaviek využíva Node.js asynchrónny model spúšťania kódu, založený na spracovaní udalostí v neblokujúcom režime a určení callback spracovateľov. Pre multiplexovanie pripojení sú podporované metódy ako epoll, kqueue, /dev/poll a select. Na multiplexovanie pripojení sa využíva knižnica libuv, ktorá je nadstavbou nad libev v systémoch Unix a nad IOCP vo Windows. Na vytvorenie poolu vlákien sa využíva knižnica libeio, na vykonávanie DNS požiadaviek v neblokujúcom režime je integrovaný c-ares. Všetky systémové volania, ktoré spôsobujú blokovanie, sa vykonávajú vo vnútri poolu vlákien a následne, rovnako ako spracovatelia signálov, posielajú výsledok svojej práce späť cez anonymný kanál (pipe).
Vykonávanie JavaScript kódu je zabezpečené prostredníctvom využitia vyvinutého spoločnosťou Google enginu V8 (dodatočne Microsoft vyvíja variant Node.js s enginom Chakra-Core). V svojej podstate je Node.js podobný rámcom Perl AnyEvent, Ruby Event Machine, Python Twisted a implementácii udalostí v Tcl, ale cyklus spracovania udalostí (event loop) v Node.js je skrytý pred vývojárom a pripomína spracovanie udalostí vo webovej aplikácii bežiacej v prehliadači.
Zdroj: opennet.ru
