Disponible la plataforma de servidor JavaScript Node.js 19.0

Se lanzó Node.js 19.0, una plataforma para ejecutar aplicaciones de red escritas en JavaScript. Node.js 19 se clasifica en la rama con un período de soporte estándar, con actualizaciones que se emitirán hasta junio de 2023. En los próximos días, se completará la estabilización de la rama Node.js 18, que obtendrá el estatus de LTS y será soportada hasta abril de 2025. El soporte para la rama LTS anterior, Node.js 16.0, continuará hasta septiembre de 2023, y para la rama LTS anterior a esta, 14.0, hasta abril de 2023.

Principales mejoras:

  • El motor V8 se ha actualizado a la versión 10.7, utilizada en Chromium 107. Entre los cambios en el motor, en comparación con la rama Node.js 18, se destaca la implementación de la tercera versión de la API Intl.NumberFormat, que incluye nuevas funciones como formatRange(), formatRangeToParts() y selectRange(), agrupación de conjuntos, nuevas opciones de redondeo y especificación de precisión, y la capacidad de interpretar cadenas como números decimales. También se han actualizado las dependencias incluidas, llhttp 8.1.0 y npm 8.19.2.
  • Se ha propuesto un comando experimental «node —watch» con la implementación de un modo de observación, que permite reiniciar el proceso cuando se modifica un archivo importado (por ejemplo, al ejecutar «node —watch index.js», el proceso se reiniciará automáticamente al cambiar index.js).
  • Se ha habilitado el soporte para el mecanismo HTTP 1.1 Keep-Alive en todas las conexiones HTTP/HTTPS salientes, manteniendo la conexión abierta durante un tiempo determinado para procesar múltiples solicitudes HTTP en una sola conexión. Se espera que el uso de Keep-Alive aumente el ancho de banda y el rendimiento. Por defecto, el tiempo de espera para mantener la conexión abierta está configurado en 5 segundos. Se ha añadido soporte para el análisis del encabezado HTTP Keep-Alive en las respuestas del cliente HTTP. servidores, y en la implementación del servidor HTTP de Node.js se ha agregado la desconexión automática de clientes inactivos que utilizan Keep-Alive.
  • El API WebCrypto ha sido trasladado a la categoría estable, a excepción de las funciones que utilizan los algoritmos Ed25519, Ed448, X25519 y X448. Ahora se puede acceder al módulo WebCrypto utilizando globalThis.crypto o require(‘node:crypto’).webcrypto.
  • Se ha eliminado el soporte para las herramientas de rastreo DTrace, SystemTap y ETW (Event Tracing for Windows), dado que se ha considerado poco práctico su mantenimiento debido a la complejidad de mantenerlas actualizadas sin un plan adecuado de soporte.

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 garantizar el procesamiento de un gran número de solicitudes paralelas, Node.js utiliza un modelo asíncrono para la ejecución de código, basado en el manejo de eventos en modo no bloqueante y la definición de manejadores de callback. Se soportan métodos de multiplexión de conexiones como epoll, kqueue, \/dev\/poll y select. Para la multiplexión de conexiones se utiliza la biblioteca libuv, que es una capa superior a libev en sistemas Unix y a IOCP en Windows. Para crear un grupo de hilos se utiliza la biblioteca libeio, y para realizar consultas DNS en modo no bloqueante se integra c-ares. Todas las llamadas al sistema que causan bloqueo se llevan a cabo dentro del grupo de hilos y luego, al igual que los manejadores de señales, envían el resultado de su trabajo de vuelta a través de un canal anónimo (pipe). La ejecución de código JavaScript se garantiza mediante el uso del motor V8 desarrollado por Google (además, Microsoft desarrolla una variante 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 manejo de eventos (event loop) en Node.js está oculto al desarrollador y se asemeja al manejo de eventos en una aplicación web ejecutándose en un navegador. Al escribir aplicaciones para Node.js, es necesario tener en cuenta la especificidad de la programación orientada a eventos, por ejemplo, en lugar de ejecutar "var result = db.query('select..');" esperando a que termine y luego procesar los resultados, Node.js utiliza el principio de ejecución asíncrona, es decir, el código se transforma en "db.query('select..', function (result) {procesar resultado});", donde el control se transfiere de inmediato al código siguiente, y el resultado de la consulta se procesará a medida que lleguen los datos.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster