A fost lansată versiunea Node.js 24.0.0, o platformă pentru rularea aplicațiilor de rețea scrise în JavaScript. Node.js 24.0 este clasificat ca având suport pe termen lung, dar acest statut va fi atribuit în octombrie, după finalizarea stabilizării. Suportul pentru Node.js 24.x va fi asigurat până la 30 aprilie 2028. Suportul pentru versiunea LTS anterioară Node.js 22.x va continua până în aprilie 2027, iar pentru versiunea LTS dinaintea acesteia, 20.x, până în aprilie 2026. Suportul pentru versiunea LTS 18.x a fost oprit pe 30 aprilie 2025, iar pentru versiunea intermediară Node.js 23.x va fi oprit pe 1 iunie 2025.
Îmbunătățiri principale:
- În API-ul AsyncLocalStorage, clasa AsyncContextFrame este activată implicit și este marcată ca stabilă. AsyncContextFrame implementează un mecanism mai eficient pentru urmărirea contextului asincron, ceea ce permite creșterea semnificativă a performanței.
- API-ul URLPattern este acum disponibil ca obiect global, care poate fi utilizat fără a fi necesară importarea explicită. URLPattern oferă posibilități de verificare a unei URL în conformitate cu un anumit model, ceea ce poate fi aplicat, de exemplu, pentru analiza link-urilor.
- Mecanismul Permission Model a fost îmbunătățit și stabilizat, permițând restricționarea accesului la anumite resurse în timpul execuției (de exemplu, se poate interzice crearea de procese fiice, restricționa accesul la scriere sau citire în anumite părți ale FS, dezactiva extensiile). În locul flag-ului experimental „—experimental-permission” pentru activarea Permission Model, acum se poate folosi flag-ul „—permission”.
- Funcționalitățile modulului node:test (test_runner), destinat creării și rulării testelor în JavaScript, care returnează rezultatul în format TAP (Test Anything Protocol), au fost extinse. Modulul așteaptă acum automat finalizarea testelor încorporate fără a fi necesară utilizarea await.
- Clientul HTTP undici a fost actualizat la ramura 7.x, care îmbunătățește performanța și adaugă suport pentru noi funcționalități HTTP.
- Motorul V8 a fost actualizat la versiunea 13.6, utilizată în Chromium 136. Dintre noile funcționalități față de versiunea anterioară a Node.js, se remarcă suportul pentru array-uri tipizate Float16Array, gestionarea manuală a resurselor, metoda RegExp.escape (pentru escaparea string-urilor pentru RegExp), pointerii pe 64 de biți (Memory64) în WebAssembly, metoda Error.isError.
- Managerul de pachete NPM a fost actualizat la versiunea 11.
- Suportul pentru compilatorul MSVC a fost oprit. Pentru compilarea pe platforma Windows, trebuie folosit ClangCL.
Platforma Node.js poate fi utilizată atât pentru suportul serverului în funcționarea aplicațiilor web, cât și pentru crearea de aplicații client și server de rețea obișnuite. Pentru a extinde funcționalitatea aplicațiilor pentru Node.js a fost pregătită o mare colecție de module, în care se pot găsi module cu implementări servere și clienți HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, module pentru integrarea cu diverse framework-uri web, manejere WebSocket și Ajax, convertoare pentru baze de date (MySQL, PostgreSQL, SQLite, MongoDB), generatoare de șabloane, motoare CSS, implementări de algoritmi criptografici și sisteme de autorizare (OAuth), parsere XML.
Pentru a gestiona un număr mare de cereri paralele, Node.js utilizează un model de execuție asincron, bazat pe procesarea evenimentelor în mod non-blocant și pe definirea handler-elor callback. Printre metodele de multiplexare a conexiunilor se numără epoll, kqueue, /dev/poll și select. Pentru multiplexarea conexiunilor, se utilizează biblioteca libuv, care este un wrapper peste libev în sistemele Unix și peste IOCP în Windows. Crearea unui pool de thread-uri (thread pool) se realizează cu ajutorul bibliotecii libeio, iar pentru efectuarea cererilor DNS în mod non-blocant, este integrată c-ares. Toate apelurile de sistem care determină blocarea sunt efectuate în interiorul pool-ului de thread-uri și, la fel ca și handler-ele de semnale, transmit rezultatul muncii lor printr-un canal anonim (pipe).
Executarea codului JavaScript este asigurată prin utilizarea motorului V8 dezvoltat de Google (în plus, Microsoft dezvoltă o variantă a Node.js cu motorul Chakra-Core). În esență, Node.js este similar cu framework-urile Perl AnyEvent, Ruby Event Machine, Python Twisted și implementarea evenimentelor în Tcl, dar loop-ul de procesare a evenimentelor în Node.js este ascuns de dezvoltator și se aseamănă cu procesarea evenimentelor într-o aplicație web care rulează în browser.
Sursa: opennet.ro
