JavaScript platform Node.js 22.0.0 elérhető

Megjelent a Node.js 22.0, a hálózati alkalmazások JavaScriptben való futtatására szolgáló platform. A Node.js 22.0 a hosszú távú támogatási ágnak minősül, de ez az állapot csak októberben, a stabilizálás után kerül kiosztásra. A Node.js 22.x 30. április 2027-ig támogatott. A Node.js 20.x korábbi LTS-ágának karbantartása 2026 áprilisáig, a tavalyelőtti 18.x LTS-ága pedig 2025 áprilisáig tart. A Node.js 21.x átmeneti ága 1. június 2024-jén megszűnik.

Főbb fejlesztések:

  • A V8-as motort a Chromium 12.4-ben használt 124-es verzióra frissítették. A V21 8-as motort használó Node.js 11.8-es ághoz képest történt változások között meg kell jegyezni:
    • A WasmGC bővítmény támogatása, amely leegyszerűsíti a szemétgyűjtőt használó programozási nyelveken (Kotlin, PHP, Java stb.) írt programok WebAssembly-re történő portolását. A WasmGC új típusú struktúrákat és tömböket ad hozzá, amelyek nemlineáris memóriafoglalást tudnak használni.
    • Az Array.fromAsync() metódus támogatása, amely aszinkron módon egy tömbszerű, iterálható vagy aszinkron iterálható objektumról másolt Array objektum új példányát adja vissza.
    • Az iterátor módszerek támogatása, mint például a .map, .filter, .find, .take, .drop, .forEach és .reduce.
    • Olyan Set objektum támogatása, amely értékek gyűjteményét határozza meg, és olyan metódusokat kínál, amelyek olyan általános halmazműveleteket hajtanak végre, mint például a metszés, az unió, a különbség és az összeadás.
  • A Maglev optimalizáló JIT fordító alapértelmezés szerint engedélyezve van, és célja, hogy gyorsan generáljon nagy teljesítményű gépi kódot az erősen használt JavaScript kódokhoz. A Maglev engedélyezése jelentősen felgyorsíthatja a rövid élettartamú CLI-alkalmazásokat, amelyek nem végeznek hosszú távú műveleteket, például a Jetstrea teszt elvégzésének ideje 7.5%-kal, a Speedometer teszté pedig 5%-kal csökken.
  • Az adatfolyamokkal végzett munka felgyorsult a highWaterMark opció értékének 16 KB-ról 65 KB-ra történő növelésével (meghatározza azt a határt, ameddig a felvétel pufferelt állapotban van). A változás megnövekedett memóriafelhasználást eredményez, ezért előfordulhat, hogy a korlátozott RAM-mal futtatható alkalmazásoknak vissza kell térniük a régi értékhez a setDefaultHighWaterMark() meghívásával.
  • A fetch() és a tesztfutó API-k jobb teljesítménye az AbortSignal példányosítás hatékonyabbá tételével. A fájlrendszerekkel való szinkronmunkához kapcsolódó API-k teljesítménye javult.
  • Kísérleti szolgáltatást biztosítunk a "require()" hívás használatához a JavaScript ESM modulok (ECMAScript modulok) szinkron módban történő betöltéséhez. Az ESM-modulok a böngészőkben használatosak, és helyettesítik a Node.js-re jellemző CommonJS-modulokat. A "require()"-en keresztül történő betöltéshez az ESM modult szinkron módban kell végrehajtani (a legfelső szintű várakozás nélkül). A támogatás a „--experimental-require-module” jelzőn keresztül engedélyezhető.
  • Kísérleti képesség hozzáadva a package.json fájlban meghatározott szkriptek futtatásához a "--run" paranccsal "
  • A „node –watch” parancs a stabil kategóriába került egy figyelési mód megvalósításával, amely biztosítja, hogy a folyamat újrainduljon, amikor az importált fájl megváltozik (például ha a „node –watch index.js” fut, a a folyamat automatikusan újraindul, ha az index.js megváltozik).
  • A WebSocket API natív megvalósítását stabilizálták, lehetővé téve a WebSocket kliens módban történő használatát további függőségek telepítése nélkül.
  • A Navigator API részleges támogatása hozzáadva.
  • A Webstreams API hozzáadta a deflate-raw tömörítési formátum támogatását.
  • glob és globSync funkciók hozzáadása a node:fsmodule-hoz a fájl útvonalak mintaegyeztetéséhez.
  • A helytelenül konfigurált IPv6-veremek jobb kezelése. Megvalósított Happy Eyeballs algoritmus a gyors visszaállításhoz az IPv6 működésével kapcsolatos problémák esetén.
  • A segédprogram API elavult.
  • Frissített függőségi verziók: 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-ra, ada un2.7.7. .

A Node.js platform használható mind webes alkalmazások szerveroldali támogatására, mind szabványos kliens- és szerveroldali hálózati programok létrehozására. A Node.js alkalmazások funkcionalitásának bővítése érdekében számos modul készült, beleértve azokat is, amelyek implementációval rendelkeznek. szervereket és HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 kliensek, modulok különféle webes keretrendszerekkel való integrációhoz, WebSocket és Ajax kezelők, csatlakozók adatbázis-kezelő rendszerekhez (MySQL, PostgreSQL, SQLite, MongoDB), sablonmotorok, CSS motorok, kriptográfiai algoritmusok és jogosultságkezelési rendszerek (OAuth) implementációi, XML elemzők.

Nagyszámú párhuzamos kérés kezelésére a Node.js aszinkron kódvégrehajtási modellt használ, amely nem blokkoló eseményfeldolgozáson és visszahíváskezelők meghatározásán alapul. A kapcsolatok multiplexelésének támogatott módszerei közé tartozik az epoll, a kqueue, a /dev/poll és a select. A kapcsolat multiplexeléséhez a libuv könyvtárat használják, amely a libev kiegészítője Unix rendszereken és az IOCP Windows rendszeren. A libeio könyvtár szálkészlet létrehozására szolgál, a c-ares pedig integrálva van DNS-lekérdezések végrehajtására nem blokkoló módban. Minden blokkolást okozó rendszerhívás végrehajtásra kerül a szálkészleten belül, majd a jelkezelőkhöz hasonlóan egy névtelen csőben továbbítják a munkájuk eredményét.

A JavaScript kód végrehajtását a Google által fejlesztett V8-as motor használata biztosítja (a Microsoft emellett a Node.js egy verzióját is fejleszti Chakra-Core motorral). Lényegében a Node.js hasonló a Perl AnyEvent, Ruby Event Machine, Python Twisted keretrendszerekhez és az események Tcl-ben való megvalósításához, de a Node.js eseményhuroka rejtve van a fejlesztő elől, és egy webalkalmazásban történő eseményfeldolgozáshoz hasonlít. böngészőben fut.

Forrás: opennet.ru

Hozzászólás