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
