lanzamiento , plataformas para ejecutar aplicaciones de red en JavaScript. Node.js 14.0 pertenece a las ramas con soporte a largo plazo, pero este estatus se otorgará solo en octubre, tras la estabilización. El soporte para Node.js 14.0 se hasta abril de 2023. El soporte de la rama LTS anterior, Node.js 12.0, se prolongará hasta abril de 2022, y el de la rama LTS anterior a esa, 10.0, hasta abril de 2021. El soporte para la rama intermedia 13.x finalizará en junio de este año.
Principales :
- Se ha estabilizado la capacidad de generar sobre la marcha o tras ciertos eventos , que reflejan eventos que ayudan a diagnosticar problemas como fallos, caídas de rendimiento, fugas de memoria, alta carga de CPU, errores inesperados, etc.
- Se ha añadido soporte experimental para la API con la implementación de la clase AsyncLocalStorage, que se puede utilizar para crear un estado asincrónico con manejadores basados en callbacks y promesas. AsyncLocalStorage permite almacenar datos durante el procesamiento de la solicitud web, recordando los almacenes locales por hilo (Thread-Local Storage) en otros lenguajes.
- Se ha eliminado la advertencia sobre la función experimental al cargar módulos importados y exportados mediante expresiones import y export. Sin embargo, la implementación de los módulos ESM sigue siendo experimental.
- El motor V8 ha sido actualizado a la versión (, , ), en la que se han realizado nuevas optimizaciones de rendimiento y se han añadido innovaciones como el nuevo operador lógico de fusión «??» (devuelve el operando derecho si el izquierdo es NULL o undefined, y viceversa), el operador «?.» para verificar toda la cadena de propiedades o llamadas de una vez (por ejemplo «db?.user?.name?.length» sin verificaciones previas), el método Intl.DisplayName para obtener nombres localizados, etc.
- Se ha revisado la API Streams, con el objetivo de mejorar la coherencia de las interfaces API de Streams y eliminar diferencias en el comportamiento de las partes fundamentales de Node.js. Por ejemplo, el comportamiento de http.OutgoingMessage se ha acercado a stream.Writable, y net.Socket a stream.Duplex. La opción autoDestroy se establece por defecto en «true», lo que implica la llamada a «_destroy» tras su finalización.
- Se ha añadido soporte experimental para la API (), que proporciona interfaces de software para interactuar directamente con el sistema operativo (API POSIX para trabajar con archivos, sockets, etc.).
- Se han aumentado los requisitos para de compiladores y plataformas: macOS 10.13 (High Sierra), GCC 6, .
Recordemos que la plataforma Node.js puede ser utilizada tanto para el soporte del trabajo de aplicaciones web en el servidor, como para la creación de programas de red de cliente y servidor. Se ha preparado una gran , donde se pueden encontrar módulos para la implementación de servidores y clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos para la integración con diversos frameworks web, controladores WebSocket y Ajax, conectores a bases de datos (MySQL, PostgreSQL, SQLite, MongoDB), plantillas, motores CSS, implementaciones de algoritmos criptográficos y sistemas de autorización (OAuth), analizadores XML.
Para garantizar el manejo de un gran número de solicitudes paralelas, Node.js utiliza un modelo asíncrono de ejecución de código, basado en el procesamiento de eventos de manera no bloqueante y la definición de controladores callback. Como métodos de multiplexión de conexiones se soportan técnicas como epoll, kqueue, /dev/poll y select. Para la multiplexión de conexiones se utiliza la biblioteca , que es una capa sobre en sistemas Unix y sobre IOCP en Windows. Para crear un grupo de hilos (thread pool) se utiliza la biblioteca , para realizar consultas DNS de manera no bloqueante, se ha integrado . Todas las llamadas al sistema que causan bloqueo se ejecutan dentro del grupo de hilos y luego, al igual que los controladores de señales, envían el resultado de su trabajo a través de un canal anónimo (pipe). La ejecución de código JavaScript se garantiza mediante la utilización del motor 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 , , y 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. Al escribir aplicaciones para node.js, es necesario tener en cuenta las peculiaridades de la programación orientada a eventos, por ejemplo, en lugar de ejecutar «var result = db.query(«select..»);» esperando la finalización del trabajo y el posterior manejo de resultados, en Node.js se utiliza el principio de ejecución asíncrona, es decir, el código se transforma en «db.query(«select..», function (result) {manejo del resultado});», donde el control se transferirá instantáneamente al siguiente código, y el resultado de la consulta se procesará a medida que lleguen los datos.
Fuente: opennet.ru
