A avut loc lansarea Node.js 26.0.0, platforma pentru execuția aplicațiilor de rețea în limbajul JavaScript. Node.js 26.0 este clasificat în ramurile cu suport pe termen lung, dar această clasificare va fi acordată abia în octombrie, după stabilizare. Suportul pentru Node.js 26.x va continua până în mai 2029. Suportul pentru rama anterioară LTS Node.js 24.x va continua până pe 30 aprilie 2028, iar pentru rama precedentă 22.x – până pe 30 aprilie 2027. Suportul pentru rama LTS 20.x a încetat pe 30 aprilie 2026, iar suportul pentru rama intermediară Node.js 25.x se va încheia pe 1 iunie 2026.
Îmbunătățiri principale:
- API Temporal a fost inclus în mod implicit, oferind un set alternativ de metode pentru gestionarea datelor și timpului. API-ul permite manipularea datelor, ținând cont sau nu de fusurile orare, conversia timpului, formatul de ieșire și efectuarea operațiunilor aritmetice cu timpul. Timpul poate fi specificat într-o reprezentare independentă de fusul orar (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), legat de fusul orar (Temporal.ZonedDateTime) și într-o reprezentare epochală (Temporal.Instant — numărul de nanosecunde de la 1 ianuarie 1970).
- Motorul V8 a fost actualizat la versiunea 14.6, utilizată în Chromium 146. Printre îmbunătățirile față de versiunea anterioară a Node.js se numără capacitatea de a combina mai mulți iteratori în unul singur cu ajutorul metodei Iterator.concat(), precum și implementarea specificației „upsert” pentru simplificarea lucrului cu colecții de perechi cheie/valoare în obiectele JavaScript Map și WeakMap.
- Clientul HTTP undici a fost actualizat la ramura 8.x.
- Metoda http.Server.prototype.writeHeader() a fost eliminată; în locul său, ar trebui folosită http.Server.prototype.writeHead().
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).
Execuția codului JavaScript este asigurată prin utilizarea motorului V8 dezvoltat de Google. În esență, Node.js este similar cu framework-urile Perl AnyEvent, Ruby Event Machine, Python asyncio și implementarea evenimentelor în Tcl, dar ciclul de procesare a evenimentelor (event loop) în Node.js este ascuns de dezvoltator și seamănă cu procesarea evenimentelor într-o aplicație web care rulează în browser.
Sursa: opennet.ro
