JavaSkript platfoarm Node.js 22.0.0 beskikber

Node.js 22.0 waard útbrocht, in platfoarm foar it útfieren fan netwurkapplikaasjes yn JavaSkript. Node.js 22.0 wurdt klassifisearre as in lange-termyn stipe tûke, mar dizze status wurdt tawiisd allinnich yn oktober, nei stabilisaasje. Node.js 22.x sil wurde stipe oant april 30, 2027. Ûnderhâld fan de foarige LTS branch fan Node.js 20.x sil duorje oant april 2026, en it jier foar de lêste LTS branch 18.x oant april 2025. De staging branch fan Node.js 21.x sil op 1 juny 2024 stopset wurde.

Main ferbetterings:

  • De V8-motor is bywurke nei ferzje 12.4, brûkt yn Chromium 124. Under de wizigingen yn ferliking mei de Node.js 21-ôfdieling, dy't de V8 11.8-motor brûkte), wurdt opmurken:
    • Stipe foar de WasmGC-útwreiding, dy't it portearjen fan programma's skreaun yn programmeartalen dy't in garbage collector brûke (Kotlin, PHP, Java, ensfh.) ferienfâldiget nei WebAssembly. WasmGC foeget nije soarten struktueren en arrays ta dy't net-lineêre ûnthâldallokaasje kinne brûke.
    • Stipe foar de Array.fromAsync() metoade, dy't asynchronous in nije eksimplaar fan in Array-objekt kopiearre fan in array-like, iterabele of asynchrone iterable objekt weromjout.
    • Stipe foar iteratormetoaden lykas .map, .filter, .find, .take, .drop, .forEach en .reduce.
    • Stipe foar in Set-objekt dat in samling wearden definiearret en metoaden biedt dy't mienskiplike setoperaasjes ymplementearje, lykas krusing, uny, ferskil en tafoeging.
  • De Maglev-optimalisearjende JIT-kompiler is standert ynskeakele, rjochte op it fluch generearjen fan hege prestaasjes masinekoade foar swier brûkte JavaScript-koade. It ynskeakeljen fan Maglev kin koarte-libbene CLI-applikaasjes signifikant fersnelle dy't gjin lange-termyn operaasjes útfiere, bygelyks de tiid om de Jetstrea-test te foltôgjen wurdt fermindere mei 7.5%, en de Speedometer-test mei 5%.
  • Wurk mei streamen is fersneld troch it ferheegjen fan de wearde fan 'e highWaterMark-opsje fan 16 KB nei 65 KB (beskiedt de limyt oant wêr't de opname wurdt buffered). De feroaring resultearret yn ferhege ûnthâld konsumpsje, sadat applikaasjes ûntwurpen om te rinnen op beheinde RAM miskien moatte werom de âlde wearde fia in oprop oan setDefaultHighWaterMark ().
  • Ferbettere prestaasjes fan de fetch () en test runner APIs troch in make AbortSignal instantiation effisjinter. De prestaasjes fan API's yn ferbân mei syngroane wurk mei bestânssystemen binne ferbettere.
  • In eksperimintele funksje is levere om de "require()"-oprop te brûken om JavaScript ESM-modules (ECMAScript-modules) yn syngroane modus te laden. ESM-modules wurde brûkt yn browsers en ferfange CommonJS-modules spesifyk foar Node.js. Om te laden fia "require ()", moat de ESM-module wurde útfierd yn syngroane modus (sûnder te wachtsjen op it boppeste nivo). Stipe is ynskeakele fia de flagge "--experimental-require-module".
  • Eksperimintele mooglikheid tafoege om skripts út te fieren definieare yn it package.json-bestân mei it kommando "--run" "
  • It kommando "node -watch" is ferpleatst nei de stabile kategory mei de ymplemintaasje fan in horloazjemodus dy't derfoar soarget dat it proses opnij starte as it ymporteare bestân feroaret (bygelyks as "node -watch index.js" wurdt útfierd, de proses sil automatysk opnij starte as index.js feroaret).
  • De native ymplemintaasje fan 'e WebSocket API is stabilisearre, wêrtroch WebSocket kin wurde brûkt yn kliïntmodus sûnder ekstra ôfhinklikens te ynstallearjen.
  • Diellike stipe tafoege foar de Navigator API.
  • De Webstreams API hat stipe tafoege foar it deflate-raw kompresjeformaat.
  • Glob- en globSync-funksjes tafoege oan node: fsmodule foar patroanmatching fan bestânspaden.
  • Ferbettere ôfhanneling fan ferkeard ynstelde IPv6-stacks. Ymplementearre Happy Eyeballs-algoritme foar rappe rollback yn gefal fan problemen mei IPv6-operaasje.
  • De util API is ôfkard.
  • Bywurke ôfhinklikensferzjes: 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 nei 3.8.0, ada 2.7.7 en .6.6.0ici .. .

It Node.js-platfoarm kin brûkt wurde foar sawol server-side stipe fan webapplikaasjes as foar it meitsjen fan standert kliïnt- en server-side netwurkprogramma's. Om de funksjonaliteit fan Node.js-applikaasjes út te wreidzjen, is in grutte kolleksje modules taret, ynklusyf dyjingen dy't ... ymplementearje servers en kliïnten fan HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, modules foar yntegraasje mei ferskate webframeworks, WebSocket- en Ajax-handlers, ferbiningen nei DBMS (MySQL, PostgreSQL, SQLite, MongoDB), sjabloanmotoren, CSS-motoren, ymplemintaasjes fan kryptografyske algoritmen en autorisaasjesystemen (OAuth), XML-parsers.

Foar in omgean grutte oantallen parallelle fersiken, Node.js brûkt in asynchronous koade útfiering model basearre op net-blokkearjende evenemint ferwurking en definiearje callback handlers. Stipe metoaden foar multiplexing ferbinings omfetsje epoll, kqueue, /dev/poll, en selektearje. Foar ferbiningsmultiplexing wurdt de libuv-bibleteek brûkt, dy't in tafoeging is foar libev op Unix-systemen en oan IOCP op Windows. De libeio-bibleteek wurdt brûkt om in threadpool te meitsjen, en c-ares is yntegreare om DNS-fragen út te fieren yn in net-blokkearjende modus. Alle systeemoproppen dy't blokkearje feroarsaakje, wurde útfierd binnen de threadpool en passe dan, lykas sinjaalbehannelers, it resultaat fan har wurk werom troch in net neamde piip.

Utfiering fan JavaScript-koade wurdt garandearre troch it brûken fan de V8-motor ûntwikkele troch Google (dêrneist ûntwikkelet Microsoft in ferzje fan Node.js mei de Chakra-Core-motor). Yn har kearn is Node.js fergelykber mei de Perl AnyEvent, Ruby Event Machine, Python Twisted frameworks en de ymplemintaasje fan eveneminten yn Tcl, mar de evenemintloop yn Node.js is ferburgen foar de ûntwikkelder en liket op evenemintferwurking yn in webapplikaasje rint yn browser.

Boarne: opennet.ru

Add a comment