Inkundla ye-JavaScript eseceleni kweseva i-Node.js 20.0 iyatholakala

Ukukhishwa kwe-Node.js 20.0, inkundla yokusebenzisa izinhlelo zokusebenza zenethiwekhi ku-JavaScript, sekwenzekile. I-Node.js 20.0 yabelwe igatsha lokusekela elide, kodwa lesi simo ngeke sabelwe kuze kube u-Okthoba, ngemva kokuzinzisa. I-Node.js 20.x izosekelwa kuze kube ngu-April 30, 2026. Ukugcinwa kwegatsha langaphambilini le-Node.js 18.x LTS kuzohlala kuze kube ngu-April 2025, kanye negatsha langaphambilini le-16.x LTS kuze kube uSepthemba 2023. Igatsha le-14.x LTS lizogcinwa ngo-April 30, kanye negatsha lesikhashana le-Node.js 19.x ngoJuni 1.

Ukuthuthukiswa okuyinhloko:

  • Injini ye-V8 ibuyekezelwe kunguqulo 11.3, esetshenziswa ku-Chromium 113. Ezinguqukweni eziqhathaniswa negatsha le-Node.js 19, elisebenzise injini ye-Chromium 107, i-String.prototype.isWellFormed kanye nemisebenzi ye-WellFormed, i-Array.prototype kanye nezindlela ze-TypedArray.prototype ukusebenza ngekhophi ekushintshweni kwezinto ze-Array kanye ne-TypedArray, ifulegi elithi "v" ku-RegExp, usekelo lokushintsha usayizi we-ArrayBuffer nokwandisa usayizi we-SharedArrayBuffer, i-tail-call ku-WebAssembly.
  • Kuhlongozwa indlela yokuhlola yemodeli yemvume ekuvumela ukuthi ukhawulele ukufinyelela kuzisetshenziswa ezithile phakathi nokusebenza. Usekelo Lwemodeli Yemvume lunikwe amandla ngokucacisa ifulegi elithi "--imvume yokuhlola" lapho isebenza. Ekusetshenzisweni kokuqala, izinketho zahlongozwa ukuze kukhawulwe ukubhala (--allow-fs-write) nokufunda (--allow-fs-read) ukufinyelela ezingxenyeni ezithile ze-FS, izinqubo zengane (--allow-child-process) , izengezo (--no-addons) nemicu (--vumela-isisebenzi). Isibonelo, ukuvumela ukubhala kunkomba ye-tmp nokufunda ifayela /home/index.js, ungacacisa: i-node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js index .js

    Ukuze uhlole ukufinyelela, kuphakanyiswa ukuthi usebenzise indlela ethi process.permission.has(), isibonelo, "process.permission.has('fs.write',"/tmp/test").

  • Izibambi zamamojula angaphandle e-ECMAScript (ama-ESM) alayishwe ngenketho ethi "--experimental-loader" manje asetshenziswa kuchungechunge oluhlukile, oluhlukanisiwe kuchungechunge oluyinhloko, oluqeda ukuphambana kwekhodi yohlelo lokusebenza kanye namamojula alayishiwe e-ESM. Ngokufanayo neziphequluli, indlela ye-import.meta.resolve() manje isebenza ngokuhambisanayo lapho ibizwa ngaphakathi kohlelo lokusebenza. Kwelinye lamagatsha alandelayo e-Node.js, ukwesekwa kokulayisha kwe-ESM kuhlelwe ukuthi kuhanjiswe esigabeni sezici ezizinzile.
  • Imojuli ye-node:test (test_runner), eklanyelwe ukudala nokusebenzisa izivivinyo ze-JavaScript ezibuyisela imiphumela ngefomethi ye-TAP (Test Anything Protocol), ihanjiswe kuzinzile.
  • Kusungulwe ithimba elihlukile lokusebenza, elilungiselele igatsha elisha, elisebenze ukuze kusheshiswe izingxenye zesikhathi sokusebenza ezihlukene, okuhlanganisa ukuhlukanisa i-URL, i-fetch() kanye ne-EventTarget. Isibonelo, i-overhead yokuqalisa i-EventTarget yehliswe ngohhafu, ukusebenza kwendlela ye-URL.canParse() kuthuthukiswe kakhulu, futhi ukusebenza kahle kwezibali sikhathi kuthuthukisiwe. Ngaphezu kwalokho, ukukhishwa komhlahleli we-URL osebenza kahle kakhulu - i-Ada 2.0, ebhalwe ngo-C ++, ifakiwe ekwakhiweni.
  • Ukuthuthukiswa kwesici sokuhlola sokuletha izinhlelo zokusebenza ngendlela yefayela elilodwa elisebenzisekayo (i-SEA, Izicelo Ezisebenzisekayo Ezizodwa) kuqhubekile. Ukudala okusebenzisekayo manje kudinga ukufaka esikhundleni se-blob ekhiqizwe efayelini lokumisa le-JSON (esikhundleni sokushintsha ifayela le-JavaScript).
  • Ukuhambisana okuthuthukisiwe kwe-Web Crypto API nokusetshenziswa okuvela kwamanye amaphrojekthi.
  • Kwengezwe usekelo olusemthethweni lweWindows ezinhlelweni ze-ARM64.
  • Ukusekelwa okuqhubekayo kwezandiso ze-WASI (WebAssembly System Interface) zokudala izinhlelo zokusebenza ezizimele ze-WebAssembly. Kukhishwe isidingo sokucacisa ifulegi lomugqa womyalo okhethekile ukuze unike amandla ukusekelwa kwe-WASI.

Iplatifomu ye-Node.js ingasetshenziswa kokubili ukulungisa iseva yezinhlelo zokusebenza zeWebhu kanye nokudala izinhlelo ezijwayelekile zeklayenti nenethiwekhi yeseva. Ukwandisa ukusebenza kwezinhlelo zokusebenza ze-Node.js, iqoqo elikhulu lamamojula selilungisiwe, lapho ungathola khona amamojula ngokusetshenziswa kwe-HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 amaseva namaklayenti, amamojula okuhlanganiswa. enezinhlaka ezehlukene zewebhu, izibambi ze-WebSocket ne-Ajax, izixhumi ze-DBMS (MySQL, PostgreSQL, SQLite, MongoDB), izinjini zesifanekiso, izinjini ze-CSS, ukuqaliswa kokusebenza kwe-crypto algorithms nezinhlelo zokugunyaza (OAuth), abahlaluli be-XML.

Ukuqinisekisa ukucutshungulwa kwezicelo eziningi ezifanayo, i-Node.js isebenzisa imodeli yokusebenzisa ikhodi engavumelaniyo esuselwe ekuphatheni umcimbi ongavimbi kanye nencazelo yabaphathi be-callback. Izindlela ezisekelwayo zoxhumano lokuphindaphinda i-epoll, i-kqueue, /dev/poll, bese ukhetha. Ukuze kuxhunywe ukuphindaphindeka, kusetshenziswa umtapo wezincwadi we-libuv, okuyisengezo se-libev ezinhlelweni ze-Unix kanye ne-IOCP ku-Windows. Umtapo wezincwadi we-libeio usetshenziselwa ukudala i-thread pool, ama-c-ares ahlanganiswe ukwenza imibuzo ye-DNS kumodi engavimbeli. Zonke izingcingo zesistimu ezibangela ukuvinjwa zenziwa ngaphakathi kwechibi lezintambo bese, njengezibambi zesignali, zidlulisele umphumela womsebenzi wazo ngepayipi elingashiwongo (ipayipi). Ukwenziwa kwekhodi ye-JavaScript kunikezwa ngokusetshenziswa kwenjini ye-V8 eyakhiwe i-Google (ngaphezu kwalokho, i-Microsoft ithuthukisa inguqulo ye-Node.js ngenjini ye-Chakra-Core).

Emgogodleni wayo, i-Node.js ifana nePerl AnyEvent, Ruby Event Machine, Python Twisted frameworks, kanye nokuqaliswa komcimbi we-Tcl, kodwa iluphu yomcimbi ku-Node.js ifihliwe kunjiniyela futhi ifana nokuphathwa komcimbi ohlelweni lokusebenza lwewebhu olusebenzayo. kusiphequluli. Lapho ubhala izinhlelo zokusebenza ze-node.js, udinga ukucabangela imininingwane yohlelo oluqhutshwa umcimbi, isibonelo, esikhundleni sokwenza "var result = db.query("select..");" ngokulinda ukuqedwa komsebenzi kanye nokucutshungulwa okulandelayo kwemiphumela, i-Node.js isebenzisa isimiso sokubulawa okuvumelanayo, i.e. ikhodi iguqulelwa ku-"db.query("select..", function (umphumela) {result processing});", lapho ukulawula kuzodlula khona manjalo kukhodi eqhubekayo, futhi umphumela wombuzo uzocutshungulwa njengoba idatha ifika.

Source: opennet.ru

Engeza amazwana