Platforma JavaScript Node.js 22.0.0 je na voljo

Izdan je bil Node.js 22.0, platforma za izvajanje omrežnih aplikacij v JavaScriptu. Node.js 22.0 je razvrščen kot veja dolgoročne podpore, vendar bo ta status dodeljen šele oktobra, po stabilizaciji. Node.js 22.x bo podprt do 30. aprila 2027. Vzdrževanje prejšnje veje LTS Node.js 20.x bo trajalo do aprila 2026, predlanske veje LTS 18.x pa do aprila 2025. Uprizoritvena veja Node.js 21.x bo ukinjena 1. junija 2024.

Glavne izboljšave:

  • Motor V8 je bil posodobljen na različico 12.4, uporabljeno v Chromiumu 124. Med spremembami v primerjavi z vejo Node.js 21, ki je uporabljala motor V8 11.8), je navedeno:
    • Podpora za razširitev WasmGC, ki poenostavi prenos programov, napisanih v programskih jezikih, ki uporabljajo zbiralnik smeti (Kotlin, PHP, Java itd.), v WebAssembly. WasmGC dodaja nove vrste struktur in nizov, ki lahko uporabljajo nelinearno dodeljevanje pomnilnika.
    • Podpora za metodo Array.fromAsync(), ki asinhrono vrne nov primerek predmeta Array, kopiranega iz ponovljivega ali asinhronega ponovljivega objekta, podobnega matriki.
    • Podpora za metode iteratorjev, kot so .map, .filter, .find, .take, .drop, .forEach in .reduce.
    • Podpora za objekt Set, ki definira zbirko vrednosti in ponuja metode, ki izvajajo običajne operacije množice, kot so presečišče, združitev, razlika in seštevanje.
  • Prevajalnik JIT za optimizacijo Maglev je privzeto omogočen in je namenjen hitremu ustvarjanju visoko zmogljive strojne kode za pogosto uporabljeno kodo JavaScript. Če omogočite Maglev, lahko znatno pospešite kratkotrajne aplikacije CLI, ki ne izvajajo dolgotrajnih operacij, na primer, čas za dokončanje testa Jetstrea se skrajša za 7.5 %, test merilnika hitrosti pa za 5 %.
  • Delo s tokovi smo pospešili s povečanjem vrednosti opcije highWaterMark s 16 KB na 65 KB (določi mejo, do katere se snemanje medpomni). Posledica spremembe je povečana poraba pomnilnika, zato bodo aplikacije, zasnovane za delovanje z omejenim RAM-om, morda morale povrniti staro vrednost s klicem funkcije setDefaultHighWaterMark().
  • Izboljšana zmogljivost fetch() in API-jev preskusnega tekača, tako da je instanciranje AbortSignal učinkovitejše. Izboljšana je zmogljivost API-jev, povezanih s sinhronim delom z datotečnimi sistemi.
  • Zagotovljena je bila poskusna funkcija za uporabo klica "require()" za nalaganje modulov JavaScript ESM (moduli ECMAScript) v sinhronem načinu. Moduli ESM se uporabljajo v brskalnikih in nadomeščajo module CommonJS, specifične za Node.js. Za nalaganje prek "require()" mora biti modul ESM izveden v sinhronem načinu (brez čakanja na najvišji ravni). Podpora je omogočena prek zastavice »--experimental-require-module«.
  • Dodana eksperimentalna zmožnost izvajanja skriptov, definiranih v datoteki package.json, z uporabo ukaza "--run" "
  • Ukaz »node –watch« je bil premaknjen v stabilno kategorijo z implementacijo načina opazovanja, ki zagotavlja, da se postopek znova zažene, ko se uvožena datoteka spremeni (na primer, če se izvede »node –watch index.js«, postopek se samodejno znova zažene, ko se spremeni index.js).
  • Izvorna implementacija API-ja WebSocket je bila stabilizirana, kar omogoča uporabo WebSocketa v odjemalskem načinu brez namestitve dodatnih odvisnosti.
  • Dodana je delna podpora za API Navigator.
  • API Webstreams je dodal podporo za format stiskanja deflate-raw.
  • Dodani funkciji glob in globSync v node:fsmodule za ujemanje vzorcev poti datotek.
  • Izboljšano ravnanje z nepravilno konfiguriranimi skladi IPv6. Implementiran algoritem Happy Eyeballs za hitro vrnitev v prejšnje stanje v primeru težav z delovanjem IPv6.
  • API util je opuščen.
  • Posodobljene različice odvisnosti: 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 in undici 6.6.0 .

Platformo Node.js je mogoče uporabiti tako za strežniško vzdrževanje spletnih aplikacij kot za ustvarjanje rednih odjemalskih in strežniških omrežnih programov. Za razširitev funkcionalnosti aplikacij za Node.js je bila pripravljena velika zbirka modulov, v kateri najdete module z implementacijo HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 strežnikov in odjemalcev, module za integracijo z različnimi spletnimi okviri, upravljalniki WebSocket in Ajax, konektorji DBMS (MySQL, PostgreSQL, SQLite, MongoDB), mehanizmi za predloge, motorji CSS, implementacijami kripto algoritmov in avtorizacijskih sistemov (OAuth), razčlenjevalniki XML.

Za obravnavo velikega števila vzporednih zahtev Node.js uporablja model izvajanja asinhrone kode, ki temelji na obdelavi dogodkov brez blokiranja in definiranju obdelovalcev povratnih klicev. Podprte metode za multipleksiranje povezav vključujejo epoll, kqueue, /dev/poll in select. Za multipleksiranje povezav se uporablja knjižnica libuv, ki je dodatek libev v sistemih Unix in IOCP v sistemu Windows. Knjižnica libeio se uporablja za ustvarjanje skupine niti, c-ares pa je integriran za izvajanje poizvedb DNS v načinu brez blokiranja. Vsi sistemski klici, ki povzročijo blokiranje, se izvedejo znotraj področja niti in nato, tako kot upravljavci signalov, posredujejo rezultat svojega dela nazaj skozi neimenovano cev.

Izvajanje kode JavaScript je zagotovljeno z uporabo motorja V8, ki ga je razvil Google (poleg tega Microsoft razvija različico Node.js z motorjem Chakra-Core). V svojem jedru je Node.js podoben okvirom Perl AnyEvent, Ruby Event Machine, Python Twisted in implementaciji dogodkov v Tcl, vendar je zanka dogodkov v Node.js skrita pred razvijalcem in je podobna obdelavi dogodkov v spletni aplikaciji teče v brskalniku.

Vir: opennet.ru

Dodaj komentar