Firma ReversingLabs publikoi rezultatet e analizës së përdorimit

U zhvillua lëshimi Node.js 14.0, platforma për ekzekutimin e aplikacioneve të rrjetit në gjuhën JavaScript. Node.js 14.0 i përket degëve me mbështetje afatgjatë, por statusi i këtij të fundit do t'i jepet vetëm në tetor, pas stabilizimit. Mbështetje për Node.js 14.0 do të ofrohet deri në prill 2023. Mbështetje për degën e kaluar LTS Node.js 12.0 do të vazhdojë deri në prill 2022, ndërsa për degën e mëparshme LTS 10.0 deri në prill 2021. Mbështetje për degën ndërmjetëse 13.x do të mbyllet në qershor të këtij viti.

Main përmirësime:

  • Stabilizimi i mundĂ«sisĂ« pĂ«r gjenerimin nĂ« kohĂ« reale ose me ndodhin e disa ngjarjeve raportet diagnostikuese, nĂ« tĂ« cilat pasqyrohen ngjarjet qĂ« ndihmojnĂ« nĂ« diagnostikimin e problemeve si crash-et, renia e performancĂ«s, rrjedhjet e memories, ngarkesa e madhe nĂ« CPU, rezultati i papritur i gabimeve, etj.
  • Shtuar mbĂ«shtetje eksperimentale pĂ«r API-nĂ« Async Local Storage me implementimin e klasĂ«s AsyncLocalStorage, e cila mund tĂ« pĂ«rdoret pĂ«r tĂ« krijuar gjendje asinkrone me trajtues tĂ« bazuar nĂ« thirrjet e callback dhe promise. AsyncLocalStorage lejon ruajtjen e tĂ« dhĂ«nave gjatĂ« pĂ«rpunimit tĂ« kĂ«rkesĂ«s web, duke kujtuar sistemet lokale pĂ«r fije tĂ« veçanta (Thread-Local Storage) nĂ« gjuhĂ« tĂ« tjera.
  • U hoq paralajmĂ«rimi pĂ«r mbĂ«shtetje eksperimentale gjatĂ« ngarkimit moduleve ECMAScript 6 qĂ« janĂ« tĂ« importuar dhe eksportuar pĂ«rmes shprehjeve import dhe export. Implementimi i moduleve ESM mbetet ende eksperimental.
  • Motori V8 Ă«shtĂ« pĂ«rditĂ«suar nĂ« versionin 8.1 (1, 2, 3), nĂ« tĂ« cilĂ«n janĂ« bĂ«rĂ« optimizime tĂ« reja tĂ« performancĂ«s dhe janĂ« shtuar risitĂ« si operatori logjik i bashkimit «??» (kthen operandin e djathtĂ«, nĂ«se operandin e majtĂ« ka vlerĂ«n NULL ose undefined, dhe anasjelltas), operatori «?.» pĂ«r kontrollin e gjithĂ« vargjeve tĂ« pronave ose thirrjeve (p.sh. «db?.user?.name?.length» pa kontrollime paraprake), metoda Intl.DisplayName pĂ«r tĂ« marrĂ« emrat e lokalizuar, etj.
  • Kryer njĂ« auditim tĂ« API-ve Streams, me qĂ«llim pĂ«rmirĂ«simin e koherencĂ«s sĂ« ndĂ«rfaqeve tĂ« API-ve Streams dhe eliminimin e diferencave nĂ« sjelljen e pjesĂ«ve thelbĂ«sore tĂ« Node.js. P.sh., sjellja e http.OutgoingMessage Ă«shtĂ« afruar me stream.Writable, dhe net.Socket me stream.Duplex. Opcioni autoDestroy nĂ« parazgjedhje Ă«shtĂ« vendosur nĂ« vlerĂ«n «true», qĂ« nĂ«nkupton thirrjen e «_destroy» pas pĂ«rfundimit.
  • Shtuar mbĂ«shtetje eksperimentale pĂ«r API-nĂ« WASI (WebAssembly System Interface), duke ofruar ndĂ«rfaqe pĂ«r ndĂ«rshtator tĂ« drejtpĂ«rdrejtĂ« me sistemin operativ (POSIX API pĂ«r punĂ« me skedarĂ«t, soketĂ«t, etj.).
  • JanĂ« rritur kĂ«rkesat pĂ«r versionet minimale tĂ« kompjutorĂ«ve dhe platformave: macOS 10.13 (High Sierra), GCC 6, Windows mĂ« tĂ« re se 7/2008R2.

Kujtojmë se platforma Node.js mund të përdoret si për mbështetjen nga ana e serverit të funksionimit të aplikacioneve Web, ashtu edhe për krijimin e programeve të zakonshme klient-server dhe të rrjetit. Për zgjerimin e funksionalitetit të aplikacioneve për Node.js është përgatitur një koleksion i madh modulesh, ku mund të gjenden module me implementime të serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim me framework-e të ndryshme web, përpunues WebSocket dhe Ajax, konektorë për DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motorë shabllonesh, motorë CSS, implementime të algoritmeve kriptografike dhe sistemeve të autorizimit (OAuth), si dhe parserë XML.

Për të përballuar përpunimin e një numri të madh kërkesash paralele, Node.js përdor një model asinkron të ekzekutimit të kodit, i bazuar në trajtimin e ngjarjeve në mënyrë jo-bllokuese dhe në përcaktimin e callback-handlerëve. Si metoda për multipleksimin e lidhjeve mbështeten epoll, kqueue, /dev/poll dhe select. Për multipleksimin e lidhjeve përdoret biblioteka libuv, e cila është një shtresë shtesë mbi libev në sistemet Unix dhe mbi IOCP në Windows. Për krijimin e një pool-i fijesh (thread pool) përdoret biblioteka libeio, ndërsa për ekzekutimin e kërkesave DNS në mënyrë jo-bllokuese është integruar c-ares. Të gjitha thirrjet e sistemit që shkaktojnë bllokim ekzekutohen brenda pool-it të fijeve dhe më pas, ashtu si edhe handlerët e sinjaleve, e kthejnë rezultatin e punës së tyre përmes një kanali pa emër (pipe). Ekzekutimi i kodit JavaScript sigurohet përmes përdorimit të motorit V8 (përveç kësaj, Microsoft zhvillon një variant të Node.js me motorin Chakra-Core).

Në thelb, Node.js i ngjan framework-eve Perl AnyEvent, Ruby Event Machine, Python Twisted dhe implementimi të ngjarjeve në Tcl, por cikli i përpunimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe i ngjan trajtimit të ngjarjeve në një aplikacion web që funksionon në shfletues. Gjatë zhvillimit të aplikacioneve për Node.js, duhet të merret parasysh specifika e programimit të orientuar nga ngjarjet; për shembull, në vend të ekzekutimit të «var result = db.query(«select..»);» me pritjen e përfundimit të punës dhe përpunimin pasues të rezultateve, Node.js përdor parimin e ekzekutimit asinkron, pra kodi shndërrohet në «db.query(«select..», function (result) {përpunimi i rezultatit});», ku kontrolli kalon menjëherë te kodi vijues, ndërsa rezultati i kërkesës përpunohet sapo të mbërrijnë të dhënat. .

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster