Në dispozicion platforma JavaScript Node.js 22.0.0

U lëshua Node.js 22.0, një platformë për ekzekutimin e aplikacioneve të rrjetit në JavaScript. Node.js 22.0 është klasifikuar si një degë e mbështetjes afatgjatë, por ky status do të caktohet vetëm në tetor, pas stabilizimit. Node.js 22.x do të mbështetet deri më 30 prill 2027. Mirëmbajtja e degës së mëparshme LTS të Node.js 20.x do të zgjasë deri në prill 2026 dhe një vit përpara degës së fundit LTS 18.x deri në prill 2025. Dega e skenimit të Node.js 21.x do të ndërpritet më 1 qershor 2024.

Përmirësimet kryesore:

  • Motori V8 është përditësuar në versionin 12.4, i përdorur në Chromium 124. Ndër ndryshimet në krahasim me degën Node.js 21, e cila përdorte motorin V8 11.8), vihet re:
    • Mbështetje për shtesën WasmGC, e cila thjeshton transferimin e programeve të shkruara në gjuhë programimi që përdorin një grumbullues mbeturinash (Kotlin, PHP, Java, etj.) në WebAssembly. WasmGC shton lloje të reja strukturash dhe vargjesh që mund të përdorin shpërndarjen jolineare të memories.
    • Mbështetje për metodën Array.fromAsync(), e cila në mënyrë asinkrone kthen një shembull të ri të një objekti Array të kopjuar nga një objekt i përsëritur i ngjashëm me grup, iterable ose asinkron.
    • Mbështetje për metodat përsëritëse si .map, .filter, .find, .take, .drop, .forEach dhe .reduce.
    • Mbështetje për një objekt Set që përcakton një koleksion vlerash dhe ofron metoda që zbatojnë operacione të përbashkëta të grupeve, të tilla si kryqëzimi, bashkimi, ndryshimi dhe shtimi.
  • Përpiluesi JIT optimizues Maglev është aktivizuar si parazgjedhje, që synon të gjenerojë shpejt kodin e makinës me performancë të lartë për kodin JavaScript të përdorur shumë. Aktivizimi i Maglev mund të përshpejtojë ndjeshëm aplikacionet CLI jetëshkurtër që nuk kryejnë operacione afatgjata, për shembull, koha për të përfunduar testin Jetstrea zvogëlohet me 7.5%, dhe testi i shpejtësisë me 5%.
  • Puna me prurjet është përshpejtuar duke rritur vlerën e opsionit highWaterMark nga 16 KB në 65 KB (përcakton kufirin deri në të cilin regjistrimi është buferuar). Ndryshimi rezulton në rritje të konsumit të memories, kështu që aplikacionet e krijuara për të ekzekutuar me RAM të kufizuar mund të kenë nevojë të kthehen në vlerën e vjetër nëpërmjet një thirrjeje te setDefaultHighWaterMark().
  • Përmirësoi performancën e API-ve të fetch() dhe ekzekutuesit testues duke e bërë instancimin e AbortSignal më efikas. Performanca e API-ve në lidhje me punën sinkrone me sistemet e skedarëve është përmirësuar.
  • Është dhënë një veçori eksperimentale për të përdorur thirrjen "require()" për të ngarkuar modulet ESM JavaScript (Modulet ECMAScript) në modalitetin sinkron. Modulet ESM përdoren në shfletues dhe zëvendësojnë modulet CommonJS specifike për Node.js. Për të ngarkuar nëpërmjet "require()", moduli ESM duhet të ekzekutohet në modalitetin sinkron (pa pritje në nivelin më të lartë). Mbështetja aktivizohet nëpërmjet flamurit "--experimental-require-module".
  • U shtua aftësia eksperimentale për të ekzekutuar skriptet e përcaktuara në skedarin package.json duke përdorur komandën "--run" "
  • Komanda "node –watch" është zhvendosur në kategorinë e qëndrueshme me zbatimin e një modaliteti shikimi që siguron që procesi të riniset kur skedari i importuar ndryshon (për shembull, nëse ekzekutohet "node -watch index.js", procesi do të riniset automatikisht kur të ndryshojë index.js).
  • Implementimi origjinal i WebSocket API është stabilizuar, duke lejuar që WebSocket të përdoret në modalitetin e klientit pa instaluar varësi shtesë.
  • U shtua mbështetje e pjesshme për API-në Navigator.
  • API Webstreams ka shtuar mbështetje për formatin e kompresimit deflate-raw.
  • Funksionet glob dhe globSync u shtuan në node:fsmodule për përputhjen e modeleve të shtigjeve të skedarëve.
  • Trajtimi i përmirësuar i stivave IPv6 të konfiguruara gabimisht. Zbatuar algoritmin Happy Eyeballs për rikthim të shpejtë në rast të problemeve me funksionimin e IPv6.
  • Util API është zhvlerësuar.
  • Versionet e përditësuara të varësisë: npm 10.5.1, libuv 1.48.0, simdutf 5.2.3, c-ares 1.28.1, zlib 1.3.0.1-motley-24c07df, simdjson në 3.8.0, ada 2.7.7 dhe 6.6.0. .

Platforma Node.js mund të përdoret si për mirëmbajtjen e serverëve të aplikacioneve në ueb ashtu edhe për krijimin e programeve të rregullta të rrjetit të klientëve dhe serverëve. Për të zgjeruar funksionalitetin e aplikacioneve për Node.js, është përgatitur një koleksion i madh modulesh, në të cilat mund të gjeni module me implementimin e serverëve dhe klientëve HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim. me korniza të ndryshme ueb, mbajtës të WebSocket dhe Ajax, lidhës DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motorë shabllonesh, motorë CSS, zbatime të algoritmeve kripto dhe sisteme autorizimi (OAuth), analizues XML.

Për të trajtuar një numër të madh kërkesash paralele, Node.js përdor një model të ekzekutimit të kodit asinkron bazuar në përpunimin e ngjarjeve jo-bllokuese dhe përcaktimin e mbajtësve të kthimit të thirrjes. Metodat e mbështetura për lidhjet e multipleksimit përfshijnë epoll, kqueue, /dev/poll dhe select. Për multipleksimin e lidhjeve, përdoret biblioteka libuv, e cila është një shtesë për libev në sistemet Unix dhe për IOCP në Windows. Biblioteka libeio përdoret për të krijuar një grup thread dhe c-ares është i integruar për të kryer pyetje DNS në një modalitet jo-bllokues. Të gjitha thirrjet e sistemit që shkaktojnë bllokim ekzekutohen brenda grupit të thread dhe më pas, si mbajtësit e sinjalit, e kalojnë rezultatin e punës së tyre përsëri përmes një tubi pa emër.

Ekzekutimi i kodit JavaScript sigurohet përmes përdorimit të motorit V8 të zhvilluar nga Google (përveç kësaj, Microsoft po zhvillon një version të Node.js me motorin Chakra-Core). Në thelbin e tij, Node.js është i ngjashëm me kornizat Perl AnyEvent, Ruby Event Machine, Python Twisted dhe zbatimin e ngjarjeve në Tcl, por cikli i ngjarjeve në Node.js është i fshehur nga zhvilluesi dhe i ngjan përpunimit të ngjarjeve në një aplikacion ueb funksionon në shfletues.

Burimi: opennet.ru

Shto një koment