Lanzamiento de la plataforma de JavaScript para servidores Node.js 13.0

Disponible lanzamiento Node.js 13.0, plataformas para la ejecución de aplicaciones de red en JavaScript. Al mismo tiempo, se completó la estabilización de la antigua rama Node.js 12.x, que ha sido trasladada a la categoría de versiones de soporte a largo plazo, cuyos actualizaciones se lanzarán durante 4 años. El soporte de la antigua rama LTS Node.js 10.0 continuará hasta abril de 2021, y de la rama LTS anterior 8.0 hasta enero de 2020.

Principales mejoras:

  • El motor V8 ha sido actualizado a la versión 7.8, que incorpora nuevos métodos de optimización de rendimiento, mejora en la desestructuración de objetos, reducción en el consumo de memoria y reducción en el tiempo de preparación para la ejecución de WebAssembly;
  • Por defecto, se incluye soporte completo para la internacionalización y Unicode basado en librerías ICU (International Components for Unicode), que permite a los desarrolladores escribir código, que soporta el trabajo con diferentes idiomas y localidades. El módulo full-icu ahora está instalado por defecto;
  • Se ha estabilizado la API Workers Threads, que permite para crear bucles de eventos multihilo (event loop). La implementación se basa en el módulo worker_threads, que permite ejecutar código JavaScript en varios hilos paralelos. El soporte estable para la API Workers Threads también se ha retroportado a la rama LTS de Node.js 12.x;
  • Se han incrementado los requisitos de plataforma. Para compilar ahora se requiere se requiere al menos macOS 10.11 (se necesita Xcode 10), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Se ha mejorado el soporte para Python 3. Si hay Python 2 y Python 3 en el sistema, todavía se usa Python 2, pero se ha añadido la opción de compilar con solo Python 3 en el sistema;
  • Se ha eliminado la antigua implementación del analizador HTTP («—http-parser=legacy»). Se han eliminado o marcado como obsoletos las llamadas y propiedades FSWatcher.prototype.start(), ChildProcess._channel, el método open() en los objetos ReadStream y WriteStream, request.connection, response.connection, module.createRequireFromPath();
  • A continuación salió la actualización 13.0.1, que inmediatamente corrigió varios errores. Incluyendo la solución a un problema que causaba una advertencia en npm 6.12.0 sobre el uso de una versión no soportada.

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 colección de módulos para ampliar la funcionalidad de las aplicaciones de Node.js, 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 libuv, que es una capa sobre libev en sistemas Unix y sobre IOCP en Windows. Para crear un grupo de hilos (thread pool) se utiliza la biblioteca libeio, para realizar consultas DNS de manera no bloqueante, se ha integrado c-ares. 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, V8 (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 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. 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

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