Byl vydán Node.js 25.0.0, platforma pro vykonávání síťových aplikací napsaných v JavaScriptu. Node.js 25.0 je zařazen mezi mezivětve, jejichž podpora bude zajišťována po dobu 7 měsíců (do června 2026). V následujících dnech bude dokončena stabilizace větve Node.js 24, která na konci října získá status LTS a bude podporována do dubna 2028. Podpora předchozích LTS větví Node.js 22.x a 20.x potrvá do dubna 2027 a 2026.
Hlavní vylepšení:
- Engin V8 byl aktualizován na verzi 14.1, používanou v Chromiu 141. Mezi vylepšeními oproti minulému vydání Node.js bylo výrazné zvýšení výkonu metody JSON.stringify, optimalizace WebAssembly a JIT, implementace metod pro převod mezi Uint8Array a daty ve formátu base64 či hexadecimálním zobrazení.
- Do mechanismu Permission Model, který umožňuje omezit přístup k určitým zdrojům během vykonávání, byla přidána možnost „—allow-net“ pro zajištění síťového přístupu (pokud není uvedena možnost „—allow-net“, spuštění Node.js v režimu „—permission“ vyvolá chybu ERR_ACCESS_DENIED při pokusu o provedení síťových operací).
- Je zapnuto ve výchozím nastavení kompatibilní s prohlížeči API Web Storage, určené pro trvalé (třída localStorage) nebo dočasné (třída sessionStorage) uchovávání dat ve formátu klíč/hodnota. Z API Web Storage byla odstraněna značka experimentálního vývoje.
- Třída ErrorEvent byla převedena do kategorie globálně dostupných (lze používat bez explicitního importu), poskytující prohlížeči kompatibilní rozhraní pro zpracování událostí s informacemi o chybách.
- Pro WebAssembly byla přidána podpora API JSPI (JavaScript Promise Integration), které umožňuje přístup k asynchronním Web API z sekvenčně vykonávaného kódu, kompilovaného do WebAssembly.
- Byla přidána možnost „NODE_COMPILE_CACHE_RELATIVE_PATH“ pro přenosnou práci s cache kompilovaných objektů. V tomto režimu jsou hashe pro identifikaci objektů počítány pomocí relativních cest k souborům, což umožňuje přesouvat a integrovat obsah adresáře s kódem spolu s cache.
- Byla přidána možnost profilování zatížení CPU.
- Správce balíčků NPM byl aktualizován na verzi 11.6.2.
- Byla přidána podpora Pythonu 3.14.
- Za minimálně podporované verze byly uvedeny Clang 19 a Xcode 16.4.
- Podpora objektu SlowBuffer byla ukončena, neboť byla dříve označena jako zastaralá z důvodu potenciálních bezpečnostních problémů. Místo SlowBuffer by se měla používat metoda Buffer.allocUnsafeSlow().
Platforma Node.js může být využita jak pro serverové zajištění chodu webových aplikací, tak pro vytváření obyčejných klientských a serverových síťových programů. Pro rozšíření funkcionality aplikací pro Node.js je k dispozici rozsáhlá sbírka modulů, ve které lze nalézt moduly s realizacemi servery a klientů HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduly pro integraci s různými webovými frameworky, zpracovatele WebSocket a Ajax, konektory k databázím (MySQL, PostgreSQL, SQLite, MongoDB), šablonovací enginy, CSS frameworky, implementace kryptografických algoritmů a systémů autorizace (OAuth), XML parsery.
Pro zpracování velkého množství paralelních požadavků využívá Node.js asynchronní model spouštění kódu, který je založen na zpracování událostí v neblokujícím režimu a určení callback zpracovatelů. Jako metody multiplexerování spojení jsou podporovány takové metody jako epoll, kqueue, /dev/poll a select. K multiplexerování spojení se používá knihovna libuv, která je nadstavbou nad libev v systémech Unix a nad IOCP ve Windows. Pro vytvoření vláknového poolu (thread pool) se využívá knihovna libeio, pro provádění DNS dotazů v neblokujícím režimu je integrován c-ares. Všechny systémové volání, která způsobují blokaci, jsou prováděna uvnitř vláknového poolu a poté, jakož i zpracovatelé signálů, předávají výsledky své práce zpět prostřednictvím anonymního kanálu (pipe).
Provádění JavaScriptového kódu je zajištěno prostřednictvím využití motoru V8 vyvinutého společností Google (dodatečně Microsoft vyvíjí variantu Node.js s motorem Chakra-Core). V podstatě je Node.js podobný rámcům Perl AnyEvent, Ruby Event Machine, Python Twisted a implementaci událostí v Tcl, ale cyklus zpracování událostí (event loop) v Node.js je skrytý před vývojářem a připomíná zpracování událostí ve webové aplikaci běžící v prohlížeči.
Zdroj: opennet.ru
