I-Node.js 22.0 ikhishwe, inkundla yokusebenzisa izinhlelo zokusebenza zenethiwekhi ku-JavaScript. I-Node.js 22.0 ihlukaniswa njengegatsha lokusekela lesikhathi eside, kodwa lesi simo sizokwabelwa kuphela ngo-Okthoba, ngemva kokuzinzisa. I-Node.js 22.x izosekelwa kuze kube ngu-April 30, 2027. Ukugcinwa kwegatsha langaphambilini le-LTS le-Node.js 20.x kuzohlala kuze kube ngu-April 2026, kanye nonyaka ngaphambi kwegatsha lokugcina le-LTS 18.x kuze kube ngu-April 2025. Igatsha lesiteji le-Node.js 21.x lizonqanyulwa ngomhla ka-Juni 1, 2024.
Ukuthuthukiswa okuyinhloko:
- Injini ye-V8 ibuyekezelwe kunguqulo engu-12.4, esetshenziswe ku-Chromium 124. Phakathi kwezinguquko eziqhathaniswa negatsha le-Node.js 21, elisebenzisa injini ye-V8 11.8), kuyaphawulwa:
- Ukusekelwa kwesandiso se-WasmGC, esenza kube lula ukuthunyelwa kwezinhlelo ezibhalwe ngezilimi zokuhlela ezisebenzisa umqoqi kadoti (Kotlin, PHP, Java, njll.) kuWebAssembly. I-WasmGC yengeza izinhlobo ezintsha zezakhiwo namalungu afanayo angasebenzisa ukwabiwa kwememori okungewona umugqa.
- Usekelo lwendlela ye-Array.fromAsync(), ebuyisela ngokulinganayo isenzakalo esisha sento ye-Array ekopishwe entweni efana ne-array-like, iterable noma engavumelaniswayo.
- Ukusekelwa kwezindlela zokuphindaphinda ezifana ne-.map, .filter, .thola, .thatha, .phonsa, .forEach kanye .nciphisa.
- Ukusekelwa kwe-Setha into echaza iqoqo lamanani kanye nezindlela ezinikezayo ezisebenzisa imisebenzi yesethi evamile, efana nokuhlangana, inyunyana, umehluko, kanye nokwengeza.
- I-Maglev optimizing JIT compiler inikwe amandla ngokuzenzakalelayo, okuhloswe ngayo ukukhiqiza ngokushesha ikhodi yomshini esebenza kahle kakhulu yekhodi ye-JavaScript esetshenziswa kakhulu. Ukunika amandla i-Maglev kungasheshisa kakhulu izinhlelo zokusebenza ze-CLI ezihlala isikhathi esifushane ezingenzi imisebenzi yesikhathi eside, isibonelo, isikhathi sokuqedela ukuhlolwa kwe-Jettrea sincishiswa ngo-7.5%, kanye nokuhlolwa kwe-Speedometer ngo-5%.
- Ukusebenza ngokusakaza kusheshisiwe ngokukhuphula inani lenketho ye-highWaterMark isuka ku-16 KB iye ku-65 KB (ichaza umkhawulo ofika lapho ukurekhoda kufakwa kubhafa). Ushintsho luphumela ekwenyukeni kokusetshenziswa kwememori, ngakho-ke izinhlelo zokusebenza eziklanyelwe ukusebenza ku-RAM elinganiselwe zingase zidinge ukubuyisela inani elidala ngocingo ku-setDefaultHighWaterMark().
- Ukusebenza okuthuthukisiwe kwe-fetch() kanye nama-API womgijimi wokuhlola ngokwenza ukumiswa kwe-AbortSignal kusebenze kangcono. Ukusebenza kwama-API ahlobene nomsebenzi wokuvumelanisa namasistimu wefayela kuthuthukisiwe.
- Isici sokuhlola sinikiwe ukuze kusetshenziswe ikholi ethi "require()" ukuze kulayishwe amamojula e-JavaScript ESM (ECMAScript Modules) kumodi yokuvumelanisa. Amamojula e-ESM asetshenziswa kuziphequluli futhi amiselela amamojula e-CommonJS aqondene ne-Node.js. Ukulayisha nge-"require()", imojula ye-ESM kufanele isetshenziswe kumodi yokuvumelanisa (ngaphandle kokulinda ezingeni eliphezulu). Usekelo lunikwe amandla ngefulegi elithi “--experimental-require-module”.
- Kwengezwe ikhono lokuhlola lokuqalisa izikripthi ezichazwe ku-package.json kusetshenziswa umyalo othi "--run" "
- Umyalo othi “node –watch” uyiswe esigabeni esizinzile ngokusetshenziswa kwemodi yokubuka eqinisekisa ukuthi inqubo iqalwa kabusha lapho ifayela elingenisiwe lishintsha (isibonelo, uma “i-node -watch index.js” kusetshenziswa, inqubo izoqalwa kabusha ngokuzenzakalelayo lapho index.js ishintsha).
- Ukuqaliswa koqobo kwe-WebSocket API kuzinzile, okuvumela i-WebSocket ukuthi isetshenziswe kumodi yeklayenti ngaphandle kokufaka okuncikile okwengeziwe.
- Kwengezwe usekelo olungaphelele lwe-Navigator API.
- I-Webstreams API yengeze usekelo lwefomethi yokuminyanisa ye-deflate-raw.
- Kwengezwe imisebenzi ye-glob ne-globSync ku-node:fsmodule yokufanisa iphethini yezindlela zamafayela.
- Ukuphathwa okuthuthukisiwe kwezitaki ze-IPv6 ezilungiselelwe ngokungalungile. Kusetshenziswe i-algorithm ye-Happy Eyeballs ukuze kubuyiselwe emuva ngokushesha uma kuba nezinkinga ngokusebenza kwe-IPv6.
- I-util API yehlisiwe.
- Izinguqulo ezibuyekeziwe zokuncika: 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 ukuya ku-3.8.0, ada 2.7.7 kanye ne-indici 6.6.0. .
Ipulatifomu ye-Node.js ingasetshenziswa kokubili ukusekela izinhlelo zokusebenza zewebhu ohlangothini lweseva kanye nokudala izinhlelo zenethiwekhi ezijwayelekile zamakhasimende kanye nezinsizakalo. Ukuze kwandiswe ukusebenza kwezinhlelo zokusebenza ze-Node.js, kulungiselelwe iqoqo elikhulu lamamojula, okuhlanganisa nalawo asebenzayo amaseva kanye namakhasimende e-HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, amamojula okuhlanganiswa nezinhlaka ezahlukene zewebhu, abaphathi be-WebSocket kanye ne-Ajax, izixhumi ze-DBMS (MySQL, PostgreSQL, SQLite, MongoDB), izinjini zethempulethi, izinjini ze-CSS, ukusetshenziswa kwama-algorithms e-cryptographic kanye nezinhlelo zokugunyazwa (OAuth), ama-pars e-XML.
Ukuze isingathe izicelo eziningi ezifanayo, i-Node.js isebenzisa imodeli yokusebenzisa ikhodi engavumelani esekelwe ekucubunguleni umcimbi ongavimbeli kanye nokuchaza izibambi zokushaya ucingo. Izindlela ezisekelwayo zokuxhumanisa okuningi zifaka phakathi i-epoll, i-kqueue, /dev/poll, nokukhetha. Ukuze kuxhunywe ukuphindaphindeka, kusetshenziswa umtapo wezincwadi we-libuv, okuyisengezo ku-libev ezinhlelweni ze-Unix naku-IOCP ku-Windows. Umtapo wezincwadi we-libeio usetshenziselwa ukudala i-thread pool, futhi ama-c-ares ahlanganiswe ukwenza imibuzo ye-DNS kumodi engavimbeli. Zonke izingcingo zesistimu ezibangela ukuvinjwa zenziwa ngaphakathi kwephuli yochungechunge bese, njengezibambi zesignali, zidlulise umphumela womsebenzi wazo ngepayipi elingashiwongo.
Ukwenziwa kwekhodi ye-JavaScript kuqinisekiswa ngokusebenzisa injini ye-V8 eyakhiwe i-Google (ngaphezu kwalokho, i-Microsoft ithuthukisa inguqulo ye-Node.js ngenjini ye-Chakra-Core). Emgogodleni wayo, i-Node.js ifana ne-Perl AnyEvent, i-Ruby Event Machine, izinhlaka ze-Python Twisted kanye nokuqaliswa kwemicimbi ku-Tcl, kodwa i-loop yomcimbi ku-Node.js ifihliwe kumthuthukisi futhi ifana nokucutshungulwa komcimbi kuhlelo lokusebenza lwewebhu. isebenza kusiphequluli.
Source: opennet.ru
