Tika izlaists Node.js 20.0 ā platforma tÄ«kla lietojumprogrammu palaiÅ”anai JavaScript. Node.js 20.0 ir klasificÄts kÄ ilgtermiÅa atbalsta filiÄle, taÄu Å”is statuss tiks pieŔķirts tikai oktobrÄ«, pÄc stabilizÄcijas. Node.js 20.x tiks atbalstÄ«ts lÄ«dz 30. gada 2026. aprÄ«lim. IepriekÅ”ÄjÄs Node.js 18.x LTS filiÄles apkope ilgs lÄ«dz 2025. gada aprÄ«lim, bet iepriekÅ”ÄjÄ LTS fila 16.x ā lÄ«dz 2023. gada septembrim. 14.x LTS filiÄle tiks pÄrtraukta 30. aprÄ«lÄ«, bet Node.js 19.x pakÄpeniskÄ atzara darbÄ«ba tiks pÄrtraukta 1. jÅ«nijÄ.
Galvenie uzlabojumi:
- V8 dzinÄjs ir atjauninÄts uz versiju 11.3, ko izmanto Chromium 113. IzmaiÅas, salÄ«dzinot ar Node.js 19 filiÄli, kurÄ tika izmantots Chromium 107 dzinÄjs, ietver funkcijas String.prototype.isWellFormed un toWellFormed, Array.prototype un TypedArray. prototipa metodes darbam ar kopiju, mainot Array un TypedArray objektus, āvā karodziÅÅ” programmÄ RegExp, atbalsts ArrayBuffer izmÄra maiÅai un SharedArrayBuffer lieluma palielinÄÅ”anai, astes rekursija (tail-call) WebAssembly.
- Ir ierosinÄts eksperimentÄls atļauju modeļa mehÄnisms, kas izpildes laikÄ Ä¼auj ierobežot piekļuvi noteiktiem resursiem. Atļauju modeļa atbalsts ir iespÄjots, darbÄ«bas laikÄ norÄdot karodziÅu ā--experimental-permissionā. SÄkotnÄjÄ ievieÅ”ana piedÄvÄ iespÄjas ierobežot rakstÄ«Å”anas (--allow-fs-write) un lasÄ«Å”anas (--allow-fs-read) piekļuvi noteiktÄm failu sistÄmas daļÄm, bÄrnu procesiem (--allow-child-process) un papildinÄjumi (--no-addons) ) un pavedieni (--allow-worker). PiemÄram, lai atļautu rakstÄ«t /tmp direktorijÄ un lasÄ«t failu /home/index.js, varat norÄdÄ«t: node āexperimental-permission āallow-fs-write=/tmp/ āallow-fs-read=/home /index.js indekss .js
Lai pÄrbaudÄ«tu piekļuvi, ieteicams izmantot metodi process.permission.has(), piemÄram, āprocess.permission.has('fs.write',"/tmp/test").
- ECMAScript ÄrÄjÄ moduļa (ESM) apstrÄdÄtÄji, kas ielÄdÄti, izmantojot opciju "--experimental-loader", tagad darbojas atseviÅ”Ä·Ä pavedienÄ, kas izolÄts no galvenÄ pavediena, novÄrÅ”ot lietojumprogrammas koda un ielÄdÄto ESM moduļu krustojumu. LÄ«dzÄ«gi kÄ pÄrlÅ«kprogrammÄs, metode import.meta.resolve() tagad tiek izpildÄ«ta sinhroni, kad tÄ tiek izsaukta no lietojumprogrammas. VienÄ no nÄkamajiem Node.js atzariem atbalstu ESM ielÄdei plÄnots pÄrcelt uz stabilo iespÄju kategoriju.
- Moduļa node:test (test_runner), kas paredzÄts tÄdu JavaScript testu izveidei un palaiÅ”anai, kuri atgriež rezultÄtus TAP (Test Anything Protocol) formÄtÄ, ir padarÄ«ts stabils.
- Par veiktspÄjas optimizÄciju tika izveidota atseviŔķa izstrÄdes komanda, kas, sagatavojot jaunu filiÄli, strÄdÄja, lai paÄtrinÄtu dažÄdus izpildlaika komponentus, tostarp URL parsÄÅ”anu, fetch() un EventTarget. PiemÄram, EventTarget inicializÄcijas pieskaitÄmÄs izmaksas ir samazinÄtas uz pusi, ir ievÄrojami uzlabota metodes URL.canParse() veiktspÄja un uzlabota taimeru efektivitÄte. Tas ietver arÄ« augstas veiktspÄjas URL parsÄtÄja Ada 2.0 izlaiÅ”anu, kas rakstÄ«ts C++ valodÄ.
- TurpinÄjÄs eksperimentÄlÄs iespÄjas izstrÄde lietojumprogrammu piegÄdei viena izpildÄmÄ faila formÄ (SEA, Single Executable Applications). Lai izveidotu izpildÄmo failu, tagad ir jÄaizstÄj blob, kas Ä£enerÄts no konfigurÄcijas faila JSON formÄtÄ (nevis jÄaizstÄj JavaScript fails).
- Uzlabota Web Crypto API savietojamība ar ievieŔanu no citiem projektiem.
- Pievienots oficiÄlais Windows atbalsts ARM64 sistÄmÄs.
- TurpinÄjÄs WASI (WebAssembly System Interface) paplaÅ”inÄjumu atbalsta ievieÅ”ana atseviŔķu WebAssembly lietojumprogrammu izveidei. NoÅemta nepiecieÅ”amÄ«ba norÄdÄ«t Ä«paÅ”u komandrindas karogu, lai iespÄjotu WASI atbalstu.
Node.js platformu var izmantot gan servera puses Web lietojumprogrammu atbalstam, gan parastu klientu un serveru tÄ«kla programmu izveidei. Lai paplaÅ”inÄtu Node.js aplikÄciju funkcionalitÄti, ir sagatavota liela moduļu kolekcija, kurÄ var atrast moduļus ar HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serveru un klientu ievieÅ”anu, moduļus integrÄcijai ar dažÄdiem tÄ«mekļa ietvariem, WebSocket un Ajax apstrÄdÄtÄjiem, savienotÄjiem ar DBVS (MySQL, PostgreSQL, SQLite, MongoDB), veidÅu dzinÄjiem, CSS dzinÄjiem, kriptogrÄfijas algoritmu un autorizÄcijas sistÄmu (OAuth) implementÄcijÄm, XML parsÄtÄjiem.
Lai nodroÅ”inÄtu liela skaita paralÄlu pieprasÄ«jumu apstrÄdi, Node.js izmanto asinhronÄ koda izpildes modeli, kura pamatÄ ir notikumu nebloÄ·ÄjoÅ”a apstrÄde un atzvanÄ«Å”anas apstrÄdÄtÄju definÄ«cija. AtbalstÄ«tÄs savienojumu multipleksÄÅ”anas metodes ir epoll, kqueue, /dev/poll un select. Savienojuma multipleksÄÅ”anai tiek izmantota libuv bibliotÄka, kas ir libev papildinÄjums Unix sistÄmÄs 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, pÄrsÅ«ta sava darba rezultÄtu atpakaļ caur nenosauktu cauruli (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 Tcl notikumu ievieÅ”anai, taÄu notikuma cilpa programmÄ Node.js ir paslÄpta no izstrÄdÄtÄja un atgÄdina notikumu apstrÄdi tÄ«mekļa lietojumprogrammÄ, kas darbojas. pÄrlÅ«kprogrammÄ. Rakstot lietojumprogrammas node.js, ir jÄÅem vÄrÄ, piemÄram, notikumu vadÄ«tas programmÄÅ”anas specifika, nevis jÄdara "var rezultÄts = db.query("select..");" ar darba pabeigÅ”anas gaidÄ«Å”anu un sekojoÅ”u rezultÄtu apstrÄdi Node.js izmanto asinhronÄs izpildes principu, t.i. kods tiek pÄrveidots par "db.query("select..", funkcija (rezultÄts) {rezultÄta apstrÄde});", kurÄ vadÄ«ba uzreiz pÄries tÄlÄkam kodam, un vaicÄjuma rezultÄts tiks apstrÄdÄts lÄ«dz ar datu saÅemÅ”anu.
Avots: opennet.ru