Node.js 17.0 - servera JavaScript platforma izlaidums

Node.js 17.0, platforma tÄ«mekļa lietojumprogrammu izpildei JavaScript valodā, ir uzsākta. Node.js 17.0 pieder parastās atbalsta filiālei, kuras atjauninājumi tiks izlaisti lÄ«dz 2022. gada jÅ«nijam. Nākamo dienu laikā tiks pabeigta Node.js 16 filiāles stabilizācija, kas iegÅ«s LTS statusu un tiks atbalstÄ«ta lÄ«dz 2024. gada aprÄ«lim. IepriekŔējās LTS filiāles Node.js 14.0 atbalsts ilgs lÄ«dz 2023. gada aprÄ«lim, bet pirms divām LTS filiālēm 12.0 lÄ«dz 2022. gada aprÄ«lim.

Galvenie uzlabojumi:

  • V8 dzinējs ir atjaunināts uz 9.5 versiju.
  • ŠŸŃ€Š¾Š“Š¾Š»Š¶ŠµŠ½Š° Ń€ŠµŠ°Š»ŠøŠ·Š°Ń†ŠøŃ вариантов базового API, основанных на использовании интерфейса асинхронных вычислений Promise. Š’ Гополнение Šŗ ранее преГложенным API Timers Promises Šø Streams Promises в Node.js 17.0 преГставлен API Readline Promise Š“Š»Ń построчного Ń‡Ń‚ŠµŠ½ŠøŃ Ганных с использованием Š¼Š¾Š“ŃƒŠ»Ń readline. import * as readline from ā€˜node:readline/promises’; import { stdin as input, stdout as output } from ā€˜process’; const rl = readline.createInterface({ input, output }); const answer = await rl.question(ā€˜What do you think of Node.js?’); console.log(ā€˜Thank you for your valuable feedback: ${answer}’); rl.close();
  • Iekļautā OpenSSL bibliotēka ir atjaunināta uz 3.0 versiju (ir izmantots quictls/openssl forks ar iekļautu QUIC protokola atbalstu).
  • Node.js versijas izvadīŔana ir nodroÅ”ināta steka izsekojumos, kas tiek izvadÄ«ti kritisku kļūdu gadÄ«jumā, kas noved pie lietojumprogrammas darbÄ«bas pārtraukÅ”anas.

Papildus jāatzÄ«mē, ka aktuālajās Node.js filiālēs ir novērstas divas ievainojamÄ«bas (CVE-2021-22959, CVE-2021-22960), kas ļauj veikt uzbrukumus ā€˜HTTP Request Smuggling’ (HRS) veidā, kas ļauj, nosÅ«tot speciāli izstrādātus klientu pieprasÄ«jumus, iekļauties citu lietotāju pieprasÄ«jumu saturā, kas tiek apstrādāti tajā paŔā plÅ«smā starp frontend un backend (piemēram, ir iespējams ievietot ļaunprātÄ«gu JavaScript kodu cita lietotāja sesijā). SÄ«kāka informācija tiks atklāta vēlāk, bet pagaidām zināms, ka problēmas ir saistÄ«tas ar nepareizu atstarpeņu apstrādi starp HTTP galvenes nosaukumu un koloni, kā arÄ« atŔķirÄ«gu apstrādi ar atgrieÅ”anās kursu un jaunu rindu zÄ«mēm parametru blokā, kas tiek izmantots, lai nosÅ«tÄ«tu pieprasÄ«juma saturu pa daļām ā€˜chunked’ režīmā.

Atgādinām, ka Node.js platforma var tikt izmantota gan tÄ«mekļa lietojumprogrammu serveru atbalstam, gan parasto klientu un serveru tÄ«mekļa programmu izstrādei. Lai paplaÅ”inātu lietojumprogrammu funkcionalitāti Node.js, ir sagatavota liela moduļu kolekcija, kurā var atrast moduļus ar realizācijām 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