K dispozícii je platforma JavaScript Node.js 22.0.0

Bol vydaný Node.js 22.0, platforma na spúšťanie sieťových aplikácií v JavaScripte. Node.js 22.0 je klasifikovaný ako dlhodobá podporná vetva, ale tento status bude pridelený až v októbri, po stabilizácii. Node.js 22.x bude podporovaný do 30. apríla 2027. Údržba predchádzajúcej vetvy LTS Node.js 20.x potrvá do apríla 2026 a predminulá vetva LTS 18.x do apríla 2025. Pracovná vetva Node.js 21.x bude ukončená 1. júna 2024.

Hlavné vylepšenia:

  • Motor V8 bol aktualizovaný na verziu 12.4 používanú v prehliadači Chromium 124. Medzi zmeny v porovnaní s vetvou Node.js 21, ktorá používala motor V8 11.8, je potrebné poznamenať:
    • Podpora rozšírenia WasmGC, ktoré zjednodušuje portovanie programov napísaných v programovacích jazykoch, ktoré používajú garbage collector (Kotlin, PHP, Java atď.) do WebAssembly. WasmGC pridáva nové typy štruktúr a polí, ktoré môžu využívať nelineárne prideľovanie pamäte.
    • Podpora metódy Array.fromAsync(), ktorá asynchrónne vracia novú inštanciu objektu Array skopírovaného z objektu podobného poľu, iterovateľného alebo asynchrónneho iterovateľného objektu.
    • Podpora metód iterátora, ako sú .map, .filter, .find, .take, .drop, .forEach a .reduce.
    • Podpora pre objekt Set, ktorý definuje kolekciu hodnôt a ponúka metódy, ktoré implementujú bežné operácie s množinami, ako je prienik, spojenie, rozdiel a sčítanie.
  • Kompilátor JIT optimalizujúci Maglev je predvolene povolený a je zameraný na rýchle generovanie vysokovýkonného strojového kódu pre často používaný kód JavaScript. Povolenie Maglev môže výrazne urýchliť aplikácie CLI s krátkou životnosťou, ktoré nevykonávajú dlhodobé operácie, napríklad čas na dokončenie testu Jetstrea sa skráti o 7.5 % a testu Speedometer o 5 %.
  • Práca so streammi sa zrýchlila zvýšením hodnoty možnosti highWaterMark zo 16 KB na 65 KB (definuje limit, do ktorého sa nahrávanie ukladá do vyrovnávacej pamäte). Zmena má za následok zvýšenú spotrebu pamäte, takže aplikácie navrhnuté na spustenie s obmedzenou pamäťou RAM sa možno budú musieť vrátiť k starej hodnote prostredníctvom volania funkcie setDefaultHighWaterMark().
  • Vylepšený výkon API fetch() a testovacieho bežca vďaka zefektívneniu vytvárania inštancií AbortSignal. Výkonnosť rozhraní API súvisiacich so synchrónnou prácou so súborovými systémami sa zlepšila.
  • Bola poskytnutá experimentálna funkcia na použitie volania „require()“ na načítanie modulov JavaScript ESM (moduly ECMAScript) v synchrónnom režime. Moduly ESM sa používajú v prehliadačoch a nahrádzajú moduly CommonJS špecifické pre Node.js. Na načítanie cez "require()" musí byť modul ESM spustený v synchrónnom režime (bez čakania na najvyššej úrovni). Podpora je povolená prostredníctvom príznaku „--experimental-require-module“.
  • Pridaná experimentálna schopnosť spúšťať skripty definované v súbore package.json pomocou príkazu „--run“. "
  • Príkaz „node –watch“ bol presunutý do stabilnej kategórie s implementáciou režimu sledovania, ktorý zaisťuje reštart procesu pri zmene importovaného súboru (napríklad, ak sa spustí „node –watch index.js“, proces sa automaticky reštartuje, keď sa zmení index.js).
  • Natívna implementácia rozhrania WebSocket API bola stabilizovaná, čo umožňuje používať WebSocket v klientskom režime bez inštalácie ďalších závislostí.
  • Pridaná čiastočná podpora pre Navigator API.
  • Webstreams API pridalo podporu pre kompresný formát deflate-raw.
  • Do node:fsmodule boli pridané funkcie glob a globSync na porovnávanie vzorov ciest k súborom.
  • Vylepšené spracovanie nesprávne nakonfigurovaných zásobníkov IPv6. Implementovaný algoritmus Happy Eyeballs pre rýchly návrat v prípade problémov s prevádzkou IPv6.
  • Rozhranie util API bolo zastarané.
  • Aktualizované verzie 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 na 3.8.0, ada 2.7.7 .

Platforma Node.js sa dá použiť ako na podporu webových aplikácií na strane servera, tak aj na vytváranie štandardných sieťových programov na strane klienta a servera. Na rozšírenie funkcionality aplikácií Node.js bola pripravená rozsiahla kolekcia modulov vrátane tých, ktoré implementujú serverov a klientov HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modulov pre integráciu s rôznymi webovými frameworkami, obslužných programov WebSocket a Ajax, konektorov k DBMS (MySQL, PostgreSQL, SQLite, MongoDB), šablónovacích nástrojov, CSS nástrojov, implementácií kryptografických algoritmov a autorizačných systémov (OAuth), XML parserov.

Na spracovanie veľkého počtu paralelných požiadaviek používa Node.js asynchrónny model vykonávania kódu založený na neblokujúcom spracovaní udalostí a definovaní obsluhy spätného volania. Podporované metódy pre multiplexné pripojenia zahŕňajú epoll, kqueue, /dev/poll a select. Na multiplexovanie pripojení sa používa knižnica libuv, ktorá je doplnkom k libev na systémoch Unix a k IOCP na Windows. Knižnica libeio sa používa na vytvorenie oblasti vlákien a c-ares je integrovaný na vykonávanie DNS dotazov v neblokujúcom režime. Všetky systémové volania, ktoré spôsobujú blokovanie, sa vykonávajú v rámci oblasti vlákien a potom, podobne ako obslužné programy signálov, odovzdávajú výsledok svojej práce späť cez nepomenovanú rúrku.

Spustenie kódu JavaScript je zabezpečené pomocou motora V8 vyvinutého spoločnosťou Google (okrem toho Microsoft vyvíja verziu Node.js s motorom Chakra-Core). Vo svojom jadre je Node.js podobný rámcom Perl AnyEvent, Ruby Event Machine, Python Twisted a implementácii udalostí v Tcl, ale slučka udalostí v Node.js je pred vývojárom skrytá a pripomína spracovanie udalostí vo webovej aplikácii. beží v prehliadači.

Zdroj: opennet.ru

Pridať komentár