Izlaidums Node.js 19.0, platformas tÄ«mekļa lietojumprogrammu izpildei JavaScript valodÄ. Node.js 19 pieder pie parastÄ atbalsta atzara, kura atjauninÄjumus plÄnots izlaist lÄ«dz 2023. gada jÅ«nijam. NÄkamo dienu laikÄ tiks pabeigta Node.js 18 atzara stabilizÄcija, kurÅ” iegÅ«s LTS statusu un tiks atbalstÄ«ts lÄ«dz 2025. gada aprÄ«lim. IepriekÅ”ÄjÄ LTS atzara Node.js 16.0 atbalsts ilgs lÄ«dz 2023. gada septembrim, bet pirms tam esoÅ”Äs LTS atzara 14.0 lÄ«dz 2023. gada aprÄ«lim.
Galvenie uzlabojumi:
- V8 dÄ«zeļmotoram ir atjauninÄta versija 10.7, ko izmanto Chromium 107. SalÄ«dzinÄjumÄ ar Node.js 18 atzaru, dÄ«zeļa izmaiÅas ietver treÅ”Äs versijas API Intl.NumberFormat Ä«stenoÅ”anu, kurÄ pievienotas jaunas funkcijas formatRange(), formatRangeToParts() un selectRange(), grupÄÅ”ana kopÄs, jaunas noapaļoÅ”anas un precizitÄtes opcijas, kÄ arÄ« iespÄja interpretÄt virknes kÄ decimÄlus skaitļus. Tika arÄ« atjauninÄti iekļautie atkarÄ«bas llhttp 8.1.0 un npm 8.19.2.
- Tika piedÄvÄta eksperimentÄlÄ komanda Ā«node āwatchĀ» ar reÄllaika novÄroÅ”anas režīmu, kas nodroÅ”ina procesa automÄtisku restartÄÅ”anu, mainoties importÄtajam failam (piemÄram, ja tiek palaižots Ā«node āwatch index.jsĀ», process automÄtiski tiks restartÄts pÄc izmaiÅÄm index.js).
- Visiem izejoÅ”ajiem HTTP/HTTPS savienojumiem tiek nodroÅ”inÄta HTTP 1.1 Keep-Alive mehÄnisma atbalsts, kas atstÄj savienojumu noteikti laiku atvÄrtu, lai apstrÄdÄtu vairÄkus HTTP pieprasÄ«jumus vienÄ savienojumÄ. Tiek prognozÄts, ka Keep-Alive lietoÅ”ana palielinÄs caurlaidspÄju un efektivitÄti. NoklusÄjuma savienojuma uzturÄÅ”anas laika intervÄls ir iestatÄ«ts uz 5 sekundÄm. HTTP klientÄ tiek pievienots atbalsts Keep-Alive HTTP virsraksta parsÄÅ”anai atbildÄs. serveris, bet Node.js HTTP servera realizÄcijÄ tika pievienota automÄtiska neaktÄ«vo klientu atslÄgÅ”ana, kuri izmanto Keep-Alive.
- WebCrypto API ir nodots stabilajai versijai, izÅemot funkcijas, kas izmanto Ed25519, Ed448, X25519 un X448 algoritmus. Tagad piekļuve WebCrypto modulim var tikt iegÅ«ta, izmantojot globalThis.crypto vai require(ānode:cryptoā).webcrypto.
- Tika noÅemts atbalsts DTrace, SystemTap un ETW (Event Tracing for Windows) izsekoÅ”anas rÄ«kiem, kuru atbalsts tika atzÄ«ts par neefektÄ«vu dÄļ grÅ«tÄ«bÄm tos uzturÄt mÅ«sdienÄ«gÄ veidÄ bez pienÄcÄ«ga plÄna.
Node.js platformu var izmantot gan servera puses tÄ«mekļa lietojumprogrammu atbalstam, gan parasto klientu un serveru tÄ«kla programmu izveidei. Lai paplaÅ”inÄtu Node.js lietojumprogrammu funkcionalitÄti, ir sagatavota liela moduļu kolekcija, kas ietver moduļus ar realizÄciju serveriem un HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klientiem, moduļiem integrÄÅ”anai ar dažÄdiem tÄ«mekļa ietvariem, WebSocket un Ajax apstrÄdÄtÄjiem, datubÄzu (MySQL, PostgreSQL, SQLite, MongoDB) savienotÄjiem, veidÅu motorus, CSS dzinÄjus, kriptovalÅ«tu algoritmu realizÄcijas un autorizÄcijas sistÄmas (OAuth), XML parsÄtÄjus.
Lai nodroÅ”inÄtu lielÄ skaita vienlaicÄ«gu pieprasÄ«jumu apstrÄdi, Node.js izmanto asynchrono koda palaiÅ”anas modeli, kas balstÄs uz notikumu apstrÄdi bez bloÄ·ÄÅ”anas un callback-handler definÄÅ”anu. Savienojumu multiplexÄÅ”anai tiek atbalstÄ«ti tÄdi paÅÄmieni kÄ epoll, kqueue, /dev/poll un select. Savienojumu multiplexÄÅ”anai tiek izmantota bibliotÄka libuv, kas ir virs libev Unix sistÄmÄs un IOCP Windows. Lai izveidotu pavedienu grupu (thread pool), tiek izmantota bibliotÄka libeio, bet DNS pieprasÄ«jumu izpilde bez bloÄ·ÄÅ”anas ir integrÄta ar c-ares. Visi sistÄmas izsaukumi, kas izraisa bloÄ·ÄÅ”anu, tiek veikti pavedienu grupÄ, un, tÄpat kÄ signÄlu apstrÄdÄtÄji, tie atgriež rezultÄtu caur nenosaukto cauruli (pipe). JavaScript koda izpilde tiek nodroÅ”inÄta, izmantojot Google izstrÄdÄtÄ V8 dzinÄja iesaisti (papildus Microsoft attÄ«sta Node.js versiju ar Chakra-Core dzinÄju).
SavÄ bÅ«tÄ«bÄ Node.js ir lÄ«dzÄ«gs Perl AnyEvent, Ruby Event Machine, Python Twisted un Tcl notikumu ievieÅ”anai, taÄu notikumu apstrÄdes cikls (event loop) Node.js ir slÄpts no izstrÄdÄtÄja un atgÄdina notikumu apstrÄdi web lietojumprogrammÄ, kas darbojas pÄrlÅ«kprogrammÄ. IzstrÄdÄjot lietojumprogrammas node.js, jÄÅem vÄrÄ notikumu orientÄtas programmÄÅ”anas Ä«patnÄ«bas, piemÄram, vietÄ, lai veiktu āvar result = db.query(āselect..ā);ā ar gaidīŔanu rezultÄtu apstrÄdei, Node.js izmanto asinkronÄs izpildes principu, t.i., kodu pÄrveido ādb.query(āselect..ā, function (result) {rezultÄta apstrÄde});ā, kur kontrole nekavÄjoties pÄries uz sekojoÅ”o kodu, un pieprasÄ«juma rezultÄts tiks apstrÄdÄts, kad dati tiks saÅemti.
Avots: opennet.lv
