Se lanzó Node.js 24.0.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 24.0 se clasifica como una versión de soporte a largo plazo, pero este estado se asignará solo en octubre, después de la estabilización. El soporte para Node.js 24.x se llevará a cabo hasta el 30 de abril de 2028. El soporte para la versión LTS anterior, Node.js 22.x, continuará hasta abril de 2027, y para la versión LTS del año anterior, 20.x, finalizará en abril de 2026. El soporte para la versión LTS 18.x terminó el 30 de abril de 2025, y el soporte para la versión intermedia Node.js 23.x finalizará el 1 de junio de 2025.
Principales mejoras:
- En la API AsyncLocalStorage, por defecto, se utiliza la clase AsyncContextFrame, que está marcada como estable. AsyncContextFrame implementa un mecanismo más eficiente para rastrear el contexto asíncrono, lo que permite mejorar notablemente el rendimiento.
- La API URLPattern ahora está disponible como un objeto global, que se puede utilizar sin necesidad de importar explícitamente. URLPattern ofrece capacidades para verificar si un URL coincide con un patrón específico, lo que puede ser utilizado, por ejemplo, para analizar enlaces.
- Se ha mejorado y estabilizado el mecanismo del Modelo de Permisos, que permite restringir el acceso a recursos específicos durante la ejecución (por ejemplo, se puede prohibir la creación de procesos secundarios, restringir el acceso de lectura o escritura a ciertas partes del sistema de archivos, deshabilitar complementos). En lugar de la bandera experimental —experimental-permission, ahora se puede usar la bandera —permission para habilitar el Modelo de Permisos.
- Se han ampliado las capacidades del módulo node:test (test_runner), destinado a crear y ejecutar pruebas en JavaScript, que devuelven resultados en formato TAP (Test Anything Protocol). El módulo ahora espera automáticamente la finalización de pruebas anidadas sin necesidad de usar await.
- El cliente HTTP undici se ha actualizado a la rama 7.x, en la cual se ha mejorado el rendimiento y se ha agregado soporte para nuevas funcionalidades de HTTP.
- El motor V8 se ha actualizado a la versión 13.6, utilizada en Chromium 136. Entre las nuevas características en comparación con la última versión de Node.js, se destaca el soporte para arreglos tipados Float16Array, gestión manual de recursos, el método RegExp.escape (escapado de cadenas para RegExp), punteros de 64 bits (Memory64) en WebAssembly y el método Error.isError.
- El gestor de paquetes NPM se ha actualizado a la versión 11.
- Se ha descontinuado el soporte para el compilador MSVC. Para compilar en Windows, es necesario utilizar ClangCL.
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
