OtuÅ”s Node.js 20.0, JavaScript tÄ«mekļa lietojumprogrammu izpildes platforma. Node.js 20.0 tiks klasificÄta kÄ ilgtermiÅa atbalsta (LTS) versija, taÄu Å”is statuss tiks pieŔķirts tikai oktobrÄ« pÄc stabilizÄcijas procesa. Atbalsts Node.js 20.x tiks nodroÅ”inÄts lÄ«dz 2026. gada 30. aprÄ«lim. IepriekÅ”ÄjÄs LTS versijas Node.js 18.x atbalsts turpinÄsies lÄ«dz 2025. gada aprÄ«lim, bet pirms iepriekÅ”ÄjÄs LTS versijas 16.x lÄ«dz 2023. gada septembrim. LTS versijas 14.x atbalsts tiks pÄrtraukts 30. aprÄ«lÄ«, bet starpposmÄ Node.js 19.x versijai ā 1. jÅ«nijÄ.
Galvenie uzlabojumi:
- V8 dzinÄjs ir atjauninÄts uz 11.3 versiju, kas tiek izmantota Chromium 113. AtŔķirÄ«bÄ no Node.js 19 versijas, kurÄ tika izmantots Chromium 107 dzinÄjs, ir pievienotas funkcijas String.prototype.isWellFormed un toWellFormed, kÄ arÄ« metodes Array.prototype un TypedArray.prototype, kas darbojas ar kopijÄm, kad objekti tiek mainÄ«ti, RegExp karogs 'v', ArrayBuffer izmÄra maiÅas atbalsts un SharedArrayBuffer palielinÄÅ”ana, kÄ arÄ« astes rekursija (tail-call) WebAssembly.
- ŠŃеГложен ŃŠŗŃŠæŠµŃŠøŠ¼ŠµŠ½ŃŠ°Š»ŃŠ½Ńй меŃ
анизм Permission Model, позволŃŃŃŠøŠ¹ Š¾Š³ŃŠ°Š½ŠøŃŠøŃŃ Š“Š¾ŃŃŃŠæ Šŗ Š¾ŠæŃŠµŠ“ŠµŠ»ŃŠ½Š½Ńм ŃŠµŃŃŃŃŠ°Š¼ в ŠæŃоŃеŃŃŠµ ŠøŃŠæŠ¾Š»Š½ŠµŠ½ŠøŃ. ŠŠ¾Š“Š“ŠµŃŠ¶ŠŗŠ° Permission Model вклŃŃŠ°ŠµŃŃŃ ŃŠµŃез ŃŠŗŠ°Š·Š°Š½ŠøŠµ ŠæŃŠø запŃŃŠŗŠµ ŃŠ»Š°Š³Š° Ā«āexperimental-permissionĀ». Š Š½Š°ŃŠ°Š»Ńной ŃŠµŠ°Š»ŠøŠ·Š°ŃŠøŠø ŠæŃŠµŠ“Š»Š¾Š¶ŠµŠ½Ń Š¾ŠæŃŠøŠø Š“Š»Ń Š¾Š³ŃŠ°Š½ŠøŃŠµŠ½ŠøŃ Š“Š¾ŃŃŃŠæŠ° на запиŃŃ (āallow-fs-write) Šø ŃŃŠµŠ½ŠøŠµ (āallow-fs-read) Šŗ Š¾ŠæŃŠµŠ“ŠµŠ»ŃŠ½Š½Ńм ŃŠ°ŃŃŃŠ¼ ФД, Š“Š¾ŃŠµŃним ŠæŃоŃеŃŃŠ°Š¼ (āallow-child-process), Š“Š¾ŠæŠ¾Š»Š½ŠµŠ½ŠøŃŠ¼ (āno-addons) Šø ŠæŠ¾ŃŠ¾ŠŗŠ°Š¼ (āallow-worker). ŠŠ°ŠæŃимеŃ, ŃŃŠ¾Š±Ń ŃŠ°Š·ŃŠµŃŠøŃŃ Š·Š°ŠæŠøŃŃ Š² ŠŗŠ°ŃŠ°Š»Š¾Š³ /tmp Šø ŃŃŠµŠ½ŠøŠµ ŃŠ°Š¹Š»Š° /home/index.js можно ŃŠŗŠ°Š·Š°ŃŃ: node āexperimental-permission āallow-fs-write=/tmp/ āallow-fs-read=/home/index.js index.js
Piekļuves pÄrbaudei ieteicams izmantot metodi process.permission.has(), piemÄram, 'process.permission.has('fs.write', '/tmp/test')'.
- ÄrÄjo ECMAScript (ESM) moduļu apstrÄdÄtÄji, kas tiek ielÄdÄti ar opciju '--experimental-loader', tagad tiek izpildÄ«ti atseviÅ”Ä·Ä pavedienÄ, kas ir izolÄts no galvenÄ pavediena, tÄdÄjÄdi novÄrÅ”ot lietojumprogrammu koda un ielÄdÄto ESM moduļu pÄrklÄÅ”anos. LÄ«dzÄ«gi kÄ pÄrlÅ«kprogrammu gadÄ«jumÄ, metode import.meta.resolve() tagad tiek izpildÄ«ta sinhronizÄtÄ režīmÄ, kad to izsauc lietojumprogramma. NÄkamajÄs Node.js versijÄs plÄnots pÄrcelt ESM ielÄdes atbalstu uz stabilu funkcionalitÄti.
- Node:test (test_runner) modulis, kas paredzÄts JavaScript testu izveidei un palaiÅ”anai, ir klasificÄts kÄ stabils, un tas atgriež rezultÄtu TAP (Test Anything Protocol) formÄtÄ.
- Ir izveidota atseviŔķa izstrÄdÄtÄju komanda, kas atbild par veiktspÄjas optimizÄciju, kas jaunÄs versijas sagatavoÅ”anas laikÄ ir strÄdÄjusi pie dažÄdu izpildes komponentu paÄtrinÄÅ”anas, tostarp URL analÄ«zes, fetch() un EventTarget. PiemÄram, EventTarget inicializÄcijas izmaksas ir samazinÄtas divreiz, metodes URL.canParse() veiktspÄja ir ievÄrojami uzlabota, kÄ arÄ« palielinÄta taimeru efektivitÄte. TurklÄt tika iekļauts augstas veiktspÄjas URL parseris ā Ada 2.0, kas uzrakstÄ«ts C++ valodÄ.
- TurpinÄts eksperementÄlÄs iespÄjas izstrÄde, lai piegÄdÄtu lietotnes vienÄ izpildfailÄ (SEA, Single Executable Applications). Izpildfaila izveide tagad prasa bloba aizvietoÅ”anu, kas tiek veidota, pamatojoties uz konfigurÄcijas failu JSON formÄtÄ (tÄ vietÄ, lai izmantotu JavaScript failu).
- Uzlabota API Web Crypto saderība ar citu projektu īstenojumiem.
- OficiÄla atbalsta pievienoÅ”ana Windows sistÄmÄm ARM64.
- TurpinÄta WASI (WebAssembly System Interface) paplaÅ”inÄjumu atbalsta Ä«stenoÅ”ana, lai izveidotu izolÄtas WebAssembly lietotnes. UzkÄpta nepiecieÅ”amÄ«ba norÄdÄ«t speciÄlu komandrindas karogu WASI atbalsta ieslÄgÅ”anai.
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
