JavaScript-plattformen Node.js 22.0.0 Àr tillgÀnglig

Node.js 22.0 har slÀppts, en plattform för att köra nÀtverksapplikationer skrivna i JavaScript. Node.js 22.0 har klassificerats som en lÄngsiktig stödversion, men denna status kommer att tilldelas först i oktober efter stabilisering. Stödet för Node.js 22.x kommer att vara fram till den 30 april 2027. UnderhÄllet av den tidigare LTS-versionen Node.js 20.x kommer att fortsÀtta fram till april 2026, och den före detta LTS-versionen 18.x fram till april 2025. UnderhÄllet av den mellanliggande versionen Node.js 21.x kommer att upphöra den 1 juni 2024.

Huvudsakliga förbÀttringar:

  • V8-motorn har uppdaterats till version 12.4, som anvĂ€nds i Chromium 124. Bland förĂ€ndringarna jĂ€mfört med versionen Node.js 21, som anvĂ€nde V8-motorn 11.8, mĂ€rks:
    • Stöd för WasmGC-tillĂ€gget, som underlĂ€ttar porteringen av program skrivna pĂ„ programmeringssprĂ„k som anvĂ€nder skrĂ€psamling (Kotlin, PHP, Java m.fl.) till WebAssembly. WasmGC lĂ€gger till nya typer av strukturer och arrayer som kan anvĂ€nda icke-linjĂ€r minnesallokering.
    • Stöd för metoden Array.fromAsync(), som i asynkront lĂ€ge returnerar en ny instans av objektet Array, kopierad frĂ„n array-liknande objekt som Ă€r upprĂ€kningsbara (iterable) eller asynkront upprĂ€kningsbara (async iterable).
    • Stöd för metoder för att arbeta med iteratorer, sĂ„som .map, .filter, .find, .take, .drop, .forEach och .reduce.
    • Stöd för objektet Set, som definierar en samling vĂ€rden och erbjuder metoder för att utföra typiska operationer pĂ„ mĂ€ngder, sĂ„som snitt, union, Differens och komplement.
  • Den optimerande JIT-kompilatorn Maglev Ă€r aktiverad som standard, med fokus pĂ„ att snabbt generera högpresterande maskinkod för aktivt anvĂ€nd JavaScript-kod. Aktiveringen av Maglev kan avsevĂ€rt snabba upp kortlivade CLI-applikationer som inte utför lĂ„ngvariga operationer, till exempel minskar testtiden för Jetstream med 7,5 % och för Speedometer med 5 %.
  • Arbetet med strömmar har snabba upp genom att öka vĂ€rdet pĂ„ alternativet highWaterMark frĂ„n 16 KB till 65 KB (definierar grĂ€nsen för hur mycket som buffras för skrivning). Denna förĂ€ndring resulterar i ökad minnesanvĂ€ndning, sĂ„ applikationer som Ă€r avsedda att arbeta med begrĂ€nsad RAM kan behöva Ă„tergĂ„ till det gamla vĂ€rdet genom att anropa setDefaultHighWaterMark().
  • Prestanda för API fetch() och testlöpare har förbĂ€ttrats genom ökad effektivitet vid skapande av instanser av AbortSignal. Prestandan för API:er kopplade till synkron arbete med filsystem har ocksĂ„ förbĂ€ttrats.
  • En experimentell funktion har lagts till för att anvĂ€nda anropet "require()" för att ladda JavaScript-moduler ESM (ECMAScript Modules) i synkront lĂ€ge. ESM-moduler anvĂ€nds i webblĂ€sare och ersĂ€tter CommonJS-moduler som Ă€r specifika för Node.js. För att ladda ESM-modulen via "require()" mĂ„ste den köras i synkront lĂ€ge (utan await pĂ„ hög nivĂ„). Stödet aktiveras med flaggan "--experimental-require-module".
  • En experimentell funktion har lagts till för att köra skript definierade i package.json-filen med kommandot "--run ".
  • Kommandot "node --watch" har övergĂ„tt till stabil kategori med implementation av övervakningslĂ€ge, som sĂ€kerstĂ€ller att processen startas om vid Ă€ndring av den importerade filen (till exempel, om "node --watch index.js" körs, kommer processen automatiskt att startas om nĂ€r index.js Ă€ndras).
  • Den inbyggda implementationen av WebSocket API har stabiliserats, vilket gör det möjligt att anvĂ€nda WebSocket i klientlĂ€ge utan att installera ytterligare beroenden.
  • Delvis stöd för Navigator API har lagts till.
  • Stöd för deflate-raw komprimeringsformatet har lagts till i Webstreams API.
  • Funktionerna glob och globSync har lagts till i modulen node:fsmodule för att matcha filvĂ€gar med mönster.
  • Hanteringen av felaktigt konfigurerade IPv6-staplar har förbĂ€ttrats. Algoritmen Happy Eyeballs har implementerats för snabb Ă„tergĂ„ng vid problem med IPv6.
  • API util har deklarerats som förĂ„ldrat.
  • Versionerna av beroenden har uppdaterats: 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 till 3.8.0, ada 2.7.7 och undici 6.6.0.

Node.js-plattformen kan anvÀndas bÄde för serverhantering av webapplikationer och för att skapa vanliga klient- och servernÀtverksprogram. För att utöka funktionaliteten för Node.js-applikationer har en stor samling moduler tagits fram, dÀr man kan finna moduler med implementeringar. servrar och kunder för HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, moduler för integration med olika webbramverk, WebSocket- och Ajax-hanterare, anslutare till databaser (MySQL, PostgreSQL, SQLite, MongoDB), mallmotorer, CSS-motorer, implementationer av kryptalgoritmer och auktorisationssystem (OAuth), XML-parserare.

För att hantera ett stort antal parallella förfrÄgningar anvÀnder Node.js en asynkron kodexekveringsmodell baserad pÄ hÀndelsehantering i icke-blockerande lÀge och definiering av callback-hanterare. För flerfaldig koppling stöds metoder som epoll, kqueue, /dev/poll och select. Biblioteket libuv anvÀnds för att multiplexera kopplingar, vilket Àr en överbyggnad ovanpÄ libev i Unix-system och IOCP i Windows. För att skapa en trÄdpool anvÀnds biblioteket libeio, och för att utföra DNS-förfrÄgningar i icke-blockerande lÀge integreras c-ares. Alla systemanrop som orsakar blockering genomförs inuti trÄdpoolen och överför sedan, liksom signalhanterare, resultatet av sitt arbete tillbaka genom en namnlös kanal (pipe).

Utförandet av JavaScript-kod sÀkerstÀlls genom anvÀndning av V8-motorn utvecklad av Google (dessutom utvecklar Microsoft en variant av Node.js med Chakra-Core-motorn). I sin kÀrna liknar Node.js ramverken Perl AnyEvent, Ruby Event Machine, Python Twisted och hÀndelseimplementeringen i Tcl, men hÀndelsebehandlingsloopen i Node.js Àr dold för utvecklaren och pÄminner om hÀndelsehantering i en webapplikation som körs i en webblÀsare.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster