Jukwaa la JavaScript Node.js 22.0.0 linapatikana

Node.js 22.0 ilitolewa, jukwaa la kuendesha programu za mtandao katika JavaScript. Node.js 22.0 imeainishwa kama tawi la usaidizi wa muda mrefu, lakini hali hii itawekwa mnamo Oktoba pekee, baada ya uimarishaji. Node.js 22.x itatumika hadi tarehe 30 Aprili 2027. Urekebishaji wa tawi la awali la LTS la Node.js 20.x utaendelea hadi Aprili 2026, na mwaka uliotangulia tawi la mwisho la LTS 18.x hadi Aprili 2025. Tawi linaloendelea la Node.js 21.x litasimamishwa tarehe 1 Juni 2024.

Maboresho kuu:

  • Injini ya V8 imesasishwa hadi toleo la 12.4, lililotumiwa katika Chromium 124. Miongoni mwa mabadiliko ikilinganishwa na tawi la Node.js 21, ambalo lilitumia injini ya V8 11.8), imebainishwa:
    • Usaidizi wa kiendelezi cha WasmGC, ambacho hurahisisha uwasilishaji wa programu zilizoandikwa katika lugha za programu zinazotumia mtoza takataka (Kotlin, PHP, Java, nk) kwa WebAssembly. WasmGC inaongeza aina mpya za miundo na safu zinazoweza kutumia mgao wa kumbukumbu usio na mstari.
    • Usaidizi wa mbinu ya Array.fromAsync(), ambayo hurejesha kwa usawa mfano mpya wa kitu cha Mkusanyiko kilichonakiliwa kutoka kwa safu-kama, kitu kinachoweza kutekelezeka au kisichoweza kulinganishwa.
    • Usaidizi wa mbinu za kurudia kama vile .map, .chujio, .tafuta, .chukua, .dondosha, .forEach na .punguza.
    • Usaidizi wa Set kitu ambacho kinafafanua mkusanyiko wa maadili na hutoa mbinu zinazotekeleza shughuli za kawaida za seti, kama vile makutano, muungano, tofauti, na kuongeza.
  • Kikusanyaji cha JIT cha kuboresha Maglev kimewashwa kwa chaguo-msingi, kinacholenga kutoa haraka msimbo wa mashine yenye utendakazi wa hali ya juu kwa msimbo wa JavaScript unaotumika sana. Kuwezesha Maglev kunaweza kuharakisha kwa kiasi kikubwa maombi ya muda mfupi ya CLI ambayo hayafanyi shughuli za muda mrefu, kwa mfano, wakati wa kukamilisha mtihani wa Jetstrea umepunguzwa kwa 7.5%, na mtihani wa Speedometer kwa 5%.
  • Kazi na mitiririko imeharakishwa kwa kuongeza thamani ya chaguo la highWaterMark kutoka KB 16 hadi KB 65 (inafafanua kikomo ambacho rekodi imeakibishwa). Mabadiliko husababisha kuongezeka kwa utumiaji wa kumbukumbu, kwa hivyo programu zilizoundwa kufanya kazi kwa RAM kidogo zinaweza kuhitaji kurejesha thamani ya zamani kupitia simu ili setDefaultHighWaterMark().
  • Utendaji ulioboreshwa wa API za kuchota() na za kufanya majaribio kwa kufanya usakinishaji wa AbortSignal kuwa mzuri zaidi. Utendaji wa API zinazohusiana na kazi ya usawazishaji na mifumo ya faili imeboreshwa.
  • Kipengele cha majaribio kimetolewa ili kutumia simu ya "require()" ili kupakia moduli za JavaScript ESM (Moduli za ECMAScript) katika hali ya kusawazisha. Moduli za ESM hutumiwa katika vivinjari na kuchukua nafasi ya moduli za CommonJS maalum kwa Node.js. Ili kupakia kupitia "require()", moduli ya ESM lazima itekelezwe katika hali ya kusawazisha (bila kungoja kwa kiwango cha juu). Usaidizi umewashwa kupitia alama ya "--majaribio-yahitaji-moduli".
  • Aliongeza uwezo wa majaribio wa kuendesha hati zilizofafanuliwa kwenye faili ya package.json kwa kutumia amri ya "--run" "
  • Amri ya "nodi -watch" imehamishwa hadi kwenye kategoria thabiti na utekelezaji wa hali ya saa ambayo inahakikisha kuwa mchakato umeanza tena wakati faili iliyoingizwa inabadilika (kwa mfano, ikiwa "nodi -watch index.js" itatekelezwa, mchakato utaanzishwa upya kiotomatiki index.js inapobadilika).
  • Utekelezaji asilia wa API ya WebSocket umeimarishwa, na kuruhusu WebSocket kutumika katika hali ya mteja bila kusakinisha vitegemezi zaidi.
  • Imeongeza usaidizi wa sehemu kwa API ya Navigator.
  • API ya Webstreams imeongeza usaidizi kwa umbizo la mbano la deflate-ghafi.
  • Imeongeza vitendaji vya glob na globSync kwenye nodi:fsmodule kwa kulinganisha ruwaza za njia za faili.
  • Utunzaji ulioboreshwa wa rafu za IPv6 zilizosanidiwa vibaya. Algorithm ya Mipira ya Macho ya Furaha imetekelezwa kwa urejeshaji wa haraka ikiwa kuna matatizo na uendeshaji wa IPv6.
  • API ya util imeacha kutumika.
  • Matoleo ya utegemezi yaliyosasishwa: 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 hadi 3.8.0, ada 2.7.7. .

Jukwaa la Node.js linaweza kutumika kwa usaidizi wa upande wa seva wa programu za Wavuti, na kwa kuunda programu za mtandao za mteja na seva. Ili kupanua utendakazi wa programu za Node.js, mkusanyiko mkubwa wa moduli umeandaliwa, ambayo unaweza kupata moduli na utekelezaji wa HTTP, SMTP, XMPP, DNS, FTP, IMAP, seva za POP3 na wateja, moduli za ujumuishaji. yenye mifumo mbalimbali ya wavuti, vidhibiti vya WebSocket na Ajax , viunganishi vya DBMS (MySQL, PostgreSQL, SQLite, MongoDB), injini za violezo, injini za CSS, utekelezaji wa algoriti za kriptografia na mifumo ya uidhinishaji (OAuth), vichanganuzi vya XML.

Ili kushughulikia idadi kubwa ya maombi sawia, Node.js hutumia muundo wa utekelezaji wa msimbo usiolingana kulingana na uchakataji wa tukio lisilozuia na kufafanua vidhibiti vya urejeshaji simu. Mbinu zinazotumika za miunganisho ya kuzidisha ni pamoja na epoll, kqueue, /dev/poll, na select. Kwa uunganisho wa kuzidisha, maktaba ya libuv hutumiwa, ambayo ni nyongeza ya libev kwenye mifumo ya Unix na kwa IOCP kwenye Windows. Maktaba ya libeio inatumiwa kuunda mkusanyiko wa nyuzi, na c-ares imeunganishwa kutekeleza hoja za DNS katika hali isiyozuia. Simu zote za mfumo zinazosababisha kuzuia hutekelezwa ndani ya dimbwi la nyuzi kisha, kama vidhibiti vya mawimbi, hupitisha matokeo ya kazi yao kupitia bomba lisilo na jina.

Utekelezaji wa msimbo wa JavaScript unahakikishwa kupitia matumizi ya injini ya V8 iliyotengenezwa na Google (kwa kuongeza, Microsoft inatengeneza toleo la Node.js kwa injini ya Chakra-Core). Kwa msingi wake, Node.js ni sawa na Perl AnyEvent, Ruby Event Machine, mifumo ya Python Twisted na utekelezaji wa matukio katika Tcl, lakini kitanzi cha tukio katika Node.js kimefichwa kutoka kwa msanidi programu na kinafanana na usindikaji wa tukio katika programu ya wavuti. inayoendesha katika kivinjari.

Chanzo: opennet.ru

Kuongeza maoni