Se ha lanzado Node.js 26.0.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 26.0 pertenece a las ramas con soporte a largo plazo, pero este estatus se otorgará solo en octubre, después de realizar la estabilización. El soporte para Node.js 26.x se proporcionará hasta mayo de 2029. El soporte para la rama anterior LTS Node.js 24.x se mantendrá hasta el 30 de abril de 2028, y para la antepasada 22.x hasta el 30 de abril de 2027. El soporte para la rama LTS 20.x se interrumpió el 30 de abril de 2026, y el de la rama intermedia Node.js 25.x se interrumpirá el 1 de junio de 2026.
Principales mejoras:
- Se incluye por defecto la API Temporal, que ofrece un conjunto alternativo de métodos para trabajar con fechas y horas. La API permite manipular fechas teniendo en cuenta y sin tener en cuenta las zonas horarias, convertir tiempo, formatear salida y realizar operaciones aritméticas con el tiempo. El tiempo se puede representar de forma independiente de la zona horaria (Temporal.PlainDate, Temporal.PlainTime, Temporal.PlainDateTime), atado a una zona horaria (Temporal.ZonedDateTime) y en una representación epochal (Temporal.Instant — número de nanosegundos desde el 1 de enero de 1970).
- El motor V8 se ha actualizado a la versión 14.6, utilizada en Chromium 146. Entre las mejoras en comparación con la última versión de Node.js, se destaca la capacidad de combinar varios iteradores en uno solo utilizando el método Iterator.concat(), así como la implementación de la especificación 'upsert' para simplificar el trabajo con colecciones de pares clave/valor en los objetos JavaScript Map y WeakMap.
- El cliente HTTP undici se ha actualizado a la rama 8.x.
- Se ha eliminado el método http.Server.prototype.writeHeader(), en su lugar se debe utilizar http.Server.prototype.writeHead().
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).
La ejecución de código JavaScript se facilita mediante el uso del motor V8 desarrollado por Google. Esencialmente, Node.js es similar a los frameworks Perl AnyEvent, Ruby Event Machine, Python asyncio 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 se asemeja al manejo de eventos en una aplicación web que se ejecuta en un navegador.
Fuente: opennet.ru
