Se ha lanzado Node.js 25.0.0, la plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 25.0 se clasifica como una rama intermedia, cuyo soporte se llevará a cabo durante 7 meses (hasta junio de 2026). En los próximos días se completará la estabilización de la rama Node.js 24, que a finales de octubre se convertirá en LTS y será soportada hasta abril de 2028. El soporte de las antiguas ramas LTS Node.js 22.x y 20.x continuará hasta abril de 2027 y 2026 respectivamente.
Principales mejoras:
- El motor V8 se ha actualizado a la versión 14.1, utilizada en Chromium 141. Entre las mejoras respecto a la versión anterior de Node.js se destaca un aumento significativo en el rendimiento del método JSON.stringify, así como optimizaciones en WebAssembly y JIT, además de la implementación de métodos para la conversión entre Uint8Array y datos en formato base64 o representación hexadecimal.
- Se ha añadido la opción "—allow-net" al modelo de permisos, que permite restringir el acceso a ciertos recursos durante la ejecución, para asegurar el acceso a la red (si no se especifica la opción "—allow-net", ejecutar Node.js en modo "—permission" generará el error ERR_ACCESS_DENIED al intentar realizar operaciones de red).
- Activado por defecto compatible con navegadores La API Web Storage, diseñada para almacenar datos de forma permanente (clase localStorage) o temporal (clase sessionStorage) en formato clave/valor. Se ha eliminado la etiqueta de desarrollo experimental de la API Web Storage.
- La clase ErrorEvent se ha trasladado a la categoría de disponibles globalmente (se puede usar sin importación explícita), proporcionando una interfaz compatible con navegadores para manejar eventos con información sobre errores.
- Para WebAssembly se ha incluido soporte para la API JSPI (JavaScript Promise Integration), que permite acceder a las API Web asíncronas desde código ejecutado secuencialmente, compilado en WebAssembly.
- Se ha añadido la opción "NODE_COMPILE_CACHE_RELATIVE_PATH" para trabajar de manera portátil con el caché de objetos compilados. En este modo, los hashes para identificar objetos se calculan usando rutas relativas a los archivos, lo que permite mover e incrustar el contenido del directorio con el código junto con el caché.
- Se ha añadido la capacidad de perfilar la carga de la CPU.
- El gestor de paquetes NPM se ha actualizado a la versión 11.6.2.
- Se ha añadido soporte para Python 3.14.
- Las versiones mínimas soportadas declaradas son Clang 19 y Xcode 16.4.
- El soporte para el objeto SlowBuffer ha sido descontinuado, previamente declarado obsoleto debido a problemas de seguridad potenciales. En su lugar, se debe utilizar el método Buffer.allocUnsafeSlow().
La plataforma Node.js puede utilizarse tanto para el soporte del trabajo de aplicaciones web en el servidor como para crear programas de red simples para clientes y servidores. Para ampliar la funcionalidad de las aplicaciones de Node.js, se ha preparado una gran colección de módulos, donde se pueden encontrar módulos con la implementación servidores y clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para integración con varios frameworks web, manejadores de WebSocket y Ajax, conectores a bases de datos (MySQL, PostgreSQL, SQLite, MongoDB), sistemas de plantillas, motores CSS, implementaciones de algoritmos criptográficos y sistemas de autorización (OAuth), analizadores XML.
Para manejar un gran número de solicitudes paralelas, Node.js utiliza un modelo asincrónico de ejecución de código basado en un manejo de eventos no bloqueante y la definición de controladores de retorno (callback). Los métodos soportados para la multiplexión de conexiones incluyen epoll, kqueue, /dev/poll y select. Se emplea la biblioteca libuv para la multiplexión de conexiones, que es una capa sobre libev en sistemas Unix y sobre IOCP en Windows. La biblioteca libeio se utiliza para crear un grupo de hilos (thread pool), y c-ares está integrado para ejecutar consultas DNS de manera no bloqueante. Todas las llamadas del sistema que provocan bloqueos se realizan dentro del grupo de hilos y, al igual que los controladores de señales, envían el resultado de su trabajo de vuelta a través de un canal sin nombre (pipe).
El código JavaScript se ejecuta gracias al motor V8 desarrollado por Google (además, Microsoft desarrolla una versión de Node.js con el motor Chakra-Core). En esencia, Node.js es similar a los frameworks Perl AnyEvent, Ruby Event Machine, Python Twisted y la implementación de eventos en Tcl, pero el ciclo de procesamiento de eventos (event loop) en Node.js está oculto para el desarrollador y recuerda el manejo de eventos en una aplicación web que se ejecuta en el navegador.
Fuente: opennet.ru
