S'ha publicat Node.js 24.0.0, una plataforma per executar aplicacions de xarxa en JavaScript. Node.js 24.0 està assignat a les branques de suport a llarg termini, però aquest estat només s'assignarà a l'octubre, després de l'estabilització. Node.js 24.x serà compatible fins al 30 d'abril de 2028. La branca LTS anterior Node.js 22.x serà compatible fins a l'abril de 2027 i la branca LTS anterior 20.x serà compatible fins a l'abril de 2026. El manteniment de la branca LTS 18.x finalitzarà el 30 d'abril de 2025 i la branca intermèdia Node.js 23.x finalitzarà l'1 de juny de 2025.
Millores principals:
- L'API AsyncLocalStorage utilitza la classe AsyncContextFrame per defecte, que està marcada com a estable. AsyncContextFrame implementa un mecanisme més eficient per al seguiment del context asíncron, que pot millorar significativament el rendiment.
- L'API URLPattern ara està disponible com a objecte global que es pot utilitzar sense importació explícita. URLPattern permet comprovar si una URL coincideix amb un patró específic, que es pot utilitzar, per exemple, per analitzar enllaços.
- El mecanisme del Model de Permisos s'ha millorat i estabilitzat, cosa que permet restringir l'accés a certs recursos durant l'execució (per exemple, podeu prohibir la creació de processos fills, restringir l'accés a l'escriptura o la lectura a certes parts del FS, desactivar complements). En lloc del senyalador experimental "--experimental-permission", ara es pot utilitzar el senyalador "--permission" per habilitar el Model de Permisos.
- S'han ampliat les capacitats del mòdul node:test (test_runner), dissenyat per crear i executar proves en JavaScript que retornen resultats en format TAP (Test Anything Protocol). El mòdul ara espera automàticament que es completin les proves imbricades sense necessitat d'utilitzar await.
- El client HTTP undici s'ha actualitzat a la branca 7.x, cosa que millora el rendiment i afegeix compatibilitat amb noves funcions HTTP.
- El motor V8 s'ha actualitzat a la versió 13.6, utilitzada a Chromium 136. Les noves funcions en comparació amb la versió anterior de Node.js inclouen compatibilitat amb matrius Float16Array tipades, gestió manual de recursos, el mètode RegExp.escape (cadenes d'escapament per a RegExp), punters de 64 bits (Memory64) a WebAssembly i el mètode Error.isError.
- El gestor de paquets NPM s'ha actualitzat a la versió 11.
- El suport del compilador MSVC s'ha deixat de funcionar. Per a la compilació a la plataforma Windows Heu d'utilitzar ClangCL.
La plataforma Node.js es pot utilitzar tant per al suport del costat del servidor d'aplicacions web com per a la creació de programes de xarxa estàndard del costat del client i del servidor. Per ampliar la funcionalitat de les aplicacions Node.js, s'ha preparat una gran col·lecció de mòduls, inclosos els que implementen servidors i clients de HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, mòduls per a la integració amb diversos frameworks web, controladors WebSocket i Ajax, connectors a SGBD (MySQL, PostgreSQL, SQLite, MongoDB), motors de plantilles, motors CSS, implementacions d'algoritmes criptogràfics i sistemes d'autorització (OAuth), analitzadors XML.
Per gestionar un gran nombre de sol·licituds simultànies, Node.js utilitza un model d'execució de codi asíncron basat en el processament d'esdeveniments no bloquejants i controladors de retrollamada. Els mètodes de multiplexació de connexions compatibles inclouen epoll, kqueue, /dev/poll i select. La multiplexació de connexions utilitza la biblioteca libuv, que és una compilació de libev en sistemes Unix i IOCP en WindowsLa biblioteca libeio s'utilitza per crear un grup de fils i c-ares està integrat per realitzar consultes DNS en mode sense bloqueig. Totes les crides al sistema de bloqueig s'executen dins del grup de fils i després, com els controladors de senyals, retornen els seus resultats a través d'una canonada sense nom.
L'execució del codi JavaScript s'assegura mitjançant l'ús del motor V8 desenvolupat per Google (a més, Microsoft està desenvolupant una versió de Node.js amb el motor Chakra-Core). En el seu nucli, Node.js és similar als marcs Perl AnyEvent, Ruby Event Machine, Python Twisted i la implementació d'esdeveniments a Tcl, però el bucle d'esdeveniments a Node.js està ocult per al desenvolupador i s'assembla al processament d'esdeveniments en una aplicació web. s'executa al navegador.
Font: opennet.ru
