JavaScriptová platforma Node.js 22.0.0 je nyní k dispozici

Byl vydán Node.js 22.0, platforma pro spuštění síťových aplikací napsaných v JavaScriptu. Node.js 22.0 je zařazen mezi větve s dlouhodobou podporou, ale tento status bude přidělen až v říjnu, po provedení stabilizace. Podpora Node.js 22.x bude zajištěna do 30. dubna 2027. Údržba předchozí LTS větve Node.js 20.x potrvá až do dubna 2026 a předchozí LTS větve 18.x do dubna 2025. Podpora přechodné větve Node.js 21.x bude ukončena 1. června 2024.

Hlavní vylepšení:

  • Motor V8 byl aktualizován na verzi 12.4, použitou v Chromium 124. Mezi změnami ve srovnání s větví Node.js 21, ve které byl použit motor V8 11.8, se uvádí:
    • Podpora rozšíření WasmGC, které usnadňuje portování programů psaných v programovacích jazycích s garbage collectorem (Kotlin, PHP, Java atd.) do WebAssembly. WasmGC přidává nové typy struktur a polí, na které může být aplikováno nelineární alokování paměti.
    • Podpora metody Array.fromAsync(), která v asynchronním režimu vrací novou instanci objektu Array, zkopírovanou z objektů, které připomínají pole, a které jsou iterovatelné (iterable) nebo asynchronně iterovatelné (async iterable).
    • Podpora metod pro práci s iterátory, jako jsou .map, .filter, .find, .take, .drop, .forEach a .reduce.
    • Podpora objektu Set, který definuje kolekci hodnot a nabízí metody implementující typické operace práce s množinami, jako jsou průsečíky, sjednocení, rozdíl a doplnění.
  • Ve výchozím nastavení byl zahrnut optimalizující JIT kompilátor Maglev, zaměřený na rychlou generaci vysoce výkonného strojového kódu pro často používaný kód JavaScriptu. Zapnutí Maglevu výrazně zrychluje výkon krátkodobých CLI aplikací, které neprovádějí dlouhé operace; například doba trvání testu Jetstream se zkracuje o 7,5 % a testu Speedometer o 5 %.
  • Zlepšena práce s proudy zvýšením hodnoty volby highWaterMark z 16 KB na 65 KB (definuje limit, do kterého se provádí vyrovnávání zápisu). Tato změna vede k vyšší spotřebě paměti, a proto je možné, že aplikacím, které jsou navrženy pro práci s omezeným objemem RAM, bude třeba vrátit starou hodnotu pomocí volání setDefaultHighWaterMark().
  • Byla zvýšena výkonnost API fetch() a test runneru díky efektivnějšímu vytváření instancí AbortSignal. Zlepšila se výkonnost API souvisejících s synchronními operacemi se souborovými systémy.
  • Byla zavedena experimentální možnost použití volání „require()“ pro synchronní načítání ESM JavaScript modulů (ECMAScript Modules). ESM moduly se používají v prohlížečích a nahrazují moduly CommonJS specifické pro Node.js. Pro načítání ESM modulu pomocí „require()“ je nutné, aby byl vykonáván synchronně (bez await na nejvyšší úrovni). Podpora se aktivuje pomocí přepínače „—experimental-require-module“.
  • Přidána experimentální možnost spouštění skriptů definovaných v souboru package.json pomocí příkazu „—run “.
  • Příkaz „node —watch“ byl převeden do stabilní kategorie, implementující režim sledování, který zajišťuje restartování procesu při změně importovaného souboru (například při vykonávání „node —watch index.js“ se proces automaticky restartuje při změně index.js).
  • Byla stabilizována vestavěná implementace API WebSocket, umožňující použití WebSocket v režimu klienta bez instalace dalších závislostí.
  • Byla přidána částečná podpora API Navigator.
  • V API Webstreams byla přidána podpora formátu komprese deflate-raw.
  • Do modulu node:fsmodule byly přidány funkce glob a globSync pro porovnávání cest k souborům podle vzoru.
  • Byla vylepšena správa nesprávně nastavených zásobníků IPv6. Byl implementován algoritmus Happy Eyeballs pro rychlý návrat k IPv4 v případě problémů s IPv6.
  • Bylo vyhlášeno zastaralé API util.
  • Byly aktualizovány verze závislostí: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson 3.8.0, ada 2.7.7 a undici 6.6.0.

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.

Aby bylo možné zpracovávat velké množství paralelních požadavků, Node.js využívá asynchronní model spouštění kódu, který je založen na zpracování událostí v neblokujícím režimu a definování callback handlerů. Jako metody multiplexování spojení jsou podporovány techniky jako epoll, kqueue, /dev/poll a select. Pro multiplexová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ákna (thread pool) je využívána knihovna libeio a pro provádění DNS dotazů v neblokujícím režimu je integrován c-ares. Všechny systémové volání, která vyvolávají blokování, se provádějí uvnitř vlákna a pak, stejně jako zpracovatelé signálů, předávají výsledek 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster