Sot në publikim Node.js 25.0.0, platforma për ekzekutimin e aplikacioneve të rrjetit në gjuhën JavaScript. Node.js 25.0 i përket degëve ndërmjetëse, mbështetje e të cilave ofrohet për 7 muaj (deri në qershor 2026). Në ditët në vijim do të përfundojë stabilizimi i degës Node.js 24, e cila në fund të muajit të tetor do të marrë statusin LTS dhe do të mbështetet deri në prill 2028. Mbështetje për degët e kaluara LTS Node.js 22.x dhe 20.x do të vazhdojë deri në prill 2027 dhe 2026 përkatësisht.
Përmirësimet kryesore:
- Mekanizmi V8 është përditësuar në versionin 14.1, i cili përdoret në Chromium 141. Ndër përmirësimet në krahasim me versionin e kaluar të Node.js, u theksua një rritje e konsiderueshme e performancës së metodës JSON.stringify, optimizimi i WebAssembly dhe JIT, implementimi i metodave për konvertimin midis Uint8Array dhe të dhënave në formatin base64 ose paraqitjen hexadecimal.
- NĂ« mekanizmin e Modelit tĂ« Lejeve, qĂ« lejon kufizimin e aksesit nĂ« burime tĂ« caktuara gjatĂ« ekzekutimit, Ă«shtĂ« shtuar opsioni "âallow-net" pĂ«r tĂ« siguruar aksesin nĂ« rrjet (nĂ«se nuk Ă«shtĂ« e specifikuar opsioni "âallow-net", ekzekutimi i Node.js nĂ« modin "âpermission" do tĂ« jepet njĂ« gabim ERR_ACCESS_DENIED kur pĂ«rpiqet tĂ« kryejĂ« operacione rrjeti).
- Aktivizuar si parazgjedhje i përputhshëm me shfletuesit API Web Storage, i dedikuar për ruajtjen e përhershme (klasa localStorage) ose të përkohshme (klasa sessionStorage) të të dhënave në formatin çelës/vlerë. Etiketa e zhvillimit eksperimental u hoq nga API Web Storage.
- Në kategorinë e resurseve të disponueshme globalisht (mund të përdoret pa import të qartë) u përfshi klasa ErrorEvent, që ofron një ndërfaqe të përputhshme me shfletuesit për trajtimin e ngjarjeve me informacion mbi gabimet.
- Për WebAssembly, u aktivizua mbështetja për API JSPI (JavaScript Promise Integration), që lejon qasjen në Web API asinkron nga kodi që ekzekutohet në mënyrë të renditur, i kompiluar në WebAssembly.
- U shtua opsioni "NODE_COMPILE_CACHE_RELATIVE_PATH" për punë të transferueshme me cache-t e objekteve të kompiluar. Në këtë mod, hash-t për identifikimin e objekteve llogariten duke përdorur rrugët relative në skedarë, që lejon transferimin dhe inkorporimin e përmbajtjeve të direktorive me kodin së bashku me cache-n.
- U mundësua profilizimi i ngarkesës në CPU.
- Menaxheri i paketave NPM u përditësua në versionin 11.6.2.
- U shtua mbështetja për Python 3.14.
- Si versionet minimale të mbështetura u deklaruan Clang 19 dhe Xcode 16.4.
- Përkrahja për objektin SlowBuffer është ndërprerë, i shpallur më parë si të vjetruar për shkak të problemeve të mundshme me sigurinë. Në vend të SlowBuffer duhet të përdorim metodën Buffer.allocUnsafeSlow().
Platforma Node.js mund të përdoret si për mbështetje të serverëve të aplikacioneve Web, ashtu edhe për të krijuar programe të zakonshme klients-server të rrjeteve. Për të zgjeruar funksionalitetin e aplikacioneve për Node.js është përgatitur një koleksion i madh modulash, ku mund të gjeni module me realizim. serverëve dhe klientë HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module për integrim me korniza të ndryshme web, procesorë WebSocket dhe Ajax, lidhës për DB (MySQL, PostgreSQL, SQLite, MongoDB), motorë për modelim, CSS, realizime të algoritmeve kriptografikë dhe sistemeve të autorizimit (OAuth), parserë XML.
Për të trajtuar një numër të madh kërkesash paralelisht, Node.js përdor një model asinkron të ekzekutimit të kodit, i bazuar në përpunimin e ngjarjeve në modalitetin e pa bllokimit dhe përcaktimin e menaxherëve të kthimit (callbacks). Metoda të tilla si epoll, kqueue, /dev/poll dhe select mbështeten për shumëfishimin e lidhjeve. Për këtë, përdoret biblioteka libuv, që është një shtresë mbi libev në sistemet Unix dhe mbi IOCP në Windows. Biblioteka libeio përdoret për të krijuar një grup (thread pool), dhe c-ares është integruar për të kryer kërkesat DNS në modalitetin e pa bllokimit. Të gjitha thirrjet sistemike që shkaktojnë bllokim ekzekutohen brenda grupit dhe pastaj, si menaxherët e sinjaleve, kthejnë rezultatin e punës së tyre përmes një kanali të paemëruar (pipe).
Ekzekutimi i kodit JavaScript sigurohet përmes aktivizimit të motorit V8 të zhvilluar nga Google (për më tepër, Microsoft po zhvillon një variant Node.js me motorin Chakra-Core). Në thelb, Node.js është i ngjashëm me framework-et Perl AnyEvent, Ruby Event Machine, Python Twisted dhe implementimin e ngjarjeve në Tcl, por cikli i përpunimit të ngjarjeve (event loop) në Node.js është i fshehur nga zhvilluesi dhe i ngjan përpunimit të ngjarjeve në një aplikacion web që funksionon në shfletues.
Burimi: opennet.ru
