Pieejama servera JavaScript platforma Node.js 20.0

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

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster