Pieejama JavaScript platforma Node.js 22.0.0

Tika izlaists Node.js 22.0 ā€” platforma tÄ«kla lietojumprogrammu palaiÅ”anai JavaScript. Node.js 22.0 ir klasificēts kā ilgtermiņa atbalsta atzars, taču Å”is statuss tiks pieŔķirts tikai oktobrÄ«, pēc stabilizācijas. Node.js 22.x tiks atbalstÄ«ts lÄ«dz 30. gada 2027. aprÄ«lim. Node.js 20.x iepriekŔējās LTS filiāles apkope ilgs lÄ«dz 2026. gada aprÄ«lim, bet aizpēdējā LTS fila 18.x – lÄ«dz 2025. gada aprÄ«lim. Node.js 21.x iestudēŔanas filiāle tiks pārtraukta 1. gada 2024. jÅ«nijā.

Galvenie uzlabojumi:

  • V8 dzinējs ir atjaunināts uz versiju 12.4, ko izmanto Chromium 124. Starp izmaiņām, salÄ«dzinot ar Node.js 21 filiāli, kurā tika izmantots V8 11.8 dzinējs), tiek atzÄ«mēts:
    • Atbalsts WasmGC paplaÅ”inājumam, kas vienkārÅ”o programmu pārneÅ”anu uz WebAssembly programmēŔanas valodās, kurās tiek izmantots atkritumu savācējs (Kotlin, PHP, Java utt.). WasmGC pievieno jaunu veidu struktÅ«ras un masÄ«vus, kas var izmantot nelineāru atmiņas pieŔķirÅ”anu.
    • Atbalsts metodei Array.fromAsync(), kas asinhroni atgriež jaunu masÄ«va objekta gadÄ«jumu, kas kopēts no masÄ«vam lÄ«dzÄ«ga, iterējama vai asinhrona iterējama objekta.
    • Atbalsts iteratora metodēm, piemēram, .map, .filter, .find, .take, .drop, .forEach un .reduce.
    • Atbalsts Set objektam, kas definē vērtÄ«bu kolekciju un piedāvā metodes, kas ievieÅ” kopÄ«gas kopas darbÄ«bas, piemēram, krustojumu, savienojumu, atŔķirÄ«bu un pievienoÅ”anu.
  • Pēc noklusējuma ir iespējots Maglev optimizējoÅ”ais JIT kompilators, kura mērÄ·is ir ātri Ä£enerēt augstas veiktspējas maŔīnas kodu intensÄ«vi izmantotam JavaScript kodam. Maglev iespējoÅ”ana var ievērojami paātrināt Ä«slaicÄ«gas CLI lietojumprogrammas, kas neveic ilgstoÅ”as ​​darbÄ«bas, piemēram, laiks Jetstrea testa pabeigÅ”anai tiek samazināts par 7.5%, bet spidometra tests - par 5%.
  • Darbs ar straumēm ir paātrināts, palielinot highWaterMark opcijas vērtÄ«bu no 16 KB lÄ«dz 65 KB (nosaka robežu, lÄ«dz kurai ieraksts tiek buferēts). Izmaiņu rezultātā palielinās atmiņas patēriņŔ, tāpēc lietojumprogrammām, kas paredzētas darbam ar ierobežotu RAM, iespējams, bÅ«s jāatgriežas pie vecās vērtÄ«bas, izsaucot setDefaultHighWaterMark().
  • Uzlabota fetch() un test runner API veiktspēja, padarot AbortSignal instantiāciju efektÄ«vāku. Ir uzlabota API veiktspēja, kas saistÄ«tas ar sinhrono darbu ar failu sistēmām.
  • Ir nodroÅ”ināta eksperimentāla funkcija, lai izmantotu izsaukumu "require()", lai ielādētu JavaScript ESM moduļus (ECMAScript moduļus) sinhronā režīmā. ESM moduļi tiek izmantoti pārlÅ«kprogrammās un aizstāj CommonJS moduļus, kas raksturÄ«gi Node.js. Lai ielādētu, izmantojot "require()", ESM modulis jāizpilda sinhronā režīmā (bez gaidīŔanas augŔējā lÄ«menÄ«). Atbalsts ir iespējots, izmantojot karogu ā€œ--experimental-require-moduleā€.
  • Pievienota eksperimentāla iespēja palaist skriptus, kas definēti failā package.json, izmantojot komandu "--run". "
  • Komanda ā€œnode –watchā€ ir pārvietota uz stabilo kategoriju, ievieÅ”ot novēroÅ”anas režīmu, kas nodroÅ”ina procesa restartēŔanu, mainoties importētajam failam (piemēram, ja tiek izpildÄ«ts ā€œnode –watch index.jsā€, process tiks automātiski restartēts, kad indekss.js mainÄ«sies).
  • Vietējā WebSocket API ievieÅ”ana ir stabilizēta, ļaujot WebSocket izmantot klienta režīmā, neinstalējot papildu atkarÄ«bas.
  • Pievienots daļējs atbalsts Navigator API.
  • Webstreams API ir pievienojis atbalstu deflate-raw saspieÅ”anas formātam.
  • Node:fsmodule ir pievienotas funkcijas glob un globSync, lai nodroÅ”inātu failu ceļu modeļu saskaņoÅ”anu.
  • Uzlabota nepareizi konfigurētu IPv6 steku apstrāde. Ieviests Happy Eyeballs algoritms ātrai atcelÅ”anai, ja rodas problēmas ar IPv6 darbÄ«bu.
  • Util API ir novecojusi.
  • Atjauninātās atkarÄ«bas versijas: 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 uz 3.8.0, ada un2.7.7 un 6.6.0. .

Node.js platformu var izmantot gan tÄ«mekļa lietojumprogrammu servera puses atbalstam, gan standarta klienta un servera puses tÄ«kla programmu izveidei. Lai paplaÅ”inātu Node.js lietojumprogrammu funkcionalitāti, ir sagatavota plaÅ”a moduļu kolekcija, tostarp tie, kas ievieÅ” serveriem un HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klienti, moduļi integrācijai ar dažādiem tÄ«mekļa ietvariem, WebSocket un Ajax apstrādātāji, savienotāji ar DBVS (MySQL, PostgreSQL, SQLite, MongoDB), veidņu dzinēji, CSS dzinēji, kriptogrāfisko algoritmu un autorizācijas sistēmu (OAuth) ievieÅ”ana, XML parsētāji.

Lai apstrādātu lielu skaitu paralēlu pieprasÄ«jumu, Node.js izmanto asinhronā koda izpildes modeli, kura pamatā ir notikumu nebloķējoÅ”a apstrāde un atzvanīŔanas apstrādātāju noteikÅ”ana. AtbalstÄ«tās savienojumu multipleksēŔanas metodes ietver epoll, kqueue, /dev/poll un select. Multipleksiem savienojumiem tiek izmantota libuv bibliotēka, kas ir libev papildinājums Unix sistēmā un IOCP operētājsistēmā Windows. Libeio bibliotēka tiek izmantota, lai izveidotu pavedienu pÅ«lu, un c-ares ir integrēta, lai veiktu DNS vaicājumus nebloķējoŔā režīmā. Visi sistēmas izsaukumi, kas izraisa bloķēŔanu, tiek izpildÄ«ti pavedienu pÅ«lā un pēc tam, tāpat kā signālu apstrādātāji, nodod sava darba rezultātu atpakaļ caur nenosauktu cauruli.

JavaScript koda izpilde tiek nodroÅ”ināta, izmantojot Google izstrādāto V8 dzinēju (turklāt Microsoft izstrādā Node.js versiju ar Chakra-Core dzinēju). Savā pamatā Node.js ir lÄ«dzÄ«gs Perl AnyEvent, Ruby Event Machine, Python Twisted ietvariem un notikumu ievieÅ”anai Tcl, taču Node.js notikumu cilpa ir paslēpta no izstrādātāja un atgādina notikumu apstrādi tÄ«mekļa lietojumprogrammā. darbojas pārlÅ«kprogrammā.

Avots: opennet.ru

Pievieno komentāru