Lanzamiento de Node.js 16.0 de JavaScript del lado del servidor

Se lanzó Node.js 16.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 16.0 está clasificado como una rama de soporte a largo plazo, pero este estado no se asignará hasta octubre, después de la estabilización. Node.js 16.0 será compatible hasta abril de 2023. El mantenimiento de la rama LTS anterior de Node.js 14.0 durará hasta abril de 2023, y el año anterior a la última rama LTS 12.0 hasta abril de 2022. El soporte para la rama 10.0 LTS se suspenderá en 10 días.

Principales mejoras:

  • El motor V8 ha sido actualizado a la versión 9.0 (Node.js 15 usó la versión 8.6), que permite implementar características como la propiedad “indices” para expresiones regulares (incluye una matriz con las posiciones inicial y final de grupos de coincidencias) , el método Atomics en Node.js 16 .waitAsync (versión asíncrona de Atomics.wait), admite el uso de la palabra clave await en módulos de nivel superior. Las llamadas a funciones se han acelerado en situaciones en las que el número de argumentos pasados ​​no corresponde a los parámetros definidos en la función.
  • La API Timers Promises se ha estabilizado, proporcionando un conjunto alternativo de funciones para trabajar con temporizadores que devuelven objetos Promise como salida, lo que elimina la necesidad de utilizar util.promisify(). importar {setTimeout} desde 'temporizadores/promesas'; función asíncrona ejecutar() { esperar setTimeout(5000); console.log('¡Hola mundo!'); } correr();
  • Se ha agregado una implementación experimental de Web Crypto API, diseñada para realizar operaciones criptográficas básicas en el lado de las aplicaciones web, como manipular hashes criptográficos, generar y verificar firmas digitales, codificar y decodificar datos utilizando varios métodos de cifrado y generar criptográficamente segura. números al azar. La API también proporciona funciones para generar y administrar claves.
  • N-API (API para desarrollar complementos) se ha actualizado a la versión 8.
  • Se ha realizado la transición a la nueva versión del administrador de paquetes NPM 7.10.
  • Estabilizó la implementación de la clase AbortController, que se basa en la API web AbortController y permite cancelar señales en API basadas en Promise seleccionadas.
  • Se ha estabilizado el soporte para la tercera versión del formato Source Map, utilizado para comparar módulos generados, procesados ​​o empaquetados con el código fuente original.
  • Para compatibilidad con las API web heredadas, se agregaron los métodos buffer.atob(data) y buffer.btoa(data).
  • Ha comenzado la formación de ensamblajes para nuevos dispositivos Apple equipados con el chip M1 ARM.
  • En la plataforma Linux, los requisitos de la versión del compilador se elevaron a GCC 8.3.

Recordemos que la plataforma Node.js se puede utilizar tanto para el soporte de aplicaciones web del lado del servidor como para crear programas de red de cliente y servidor comunes. Para ampliar la funcionalidad de las aplicaciones para Node.js, se ha preparado una gran colección de módulos, en los que puede encontrar módulos con la implementación de servidores y clientes HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, módulos de integración. con varios frameworks web, manejadores WebSocket y Ajax, conectores a DBMS (MySQL, PostgreSQL, SQLite, MongoDB), motores de plantillas, motores CSS, implementaciones de algoritmos criptográficos y sistemas de autorización (OAuth), analizadores XML.

Para garantizar el procesamiento de una gran cantidad de solicitudes paralelas, Node.js utiliza un modelo de ejecución de código asíncrono basado en el manejo de eventos sin bloqueo y la definición de controladores de devolución de llamada. Los métodos admitidos para multiplexar conexiones son epoll, kqueue, /dev/poll y select. Para la multiplexación de conexiones, se utiliza la biblioteca libuv, que es un complemento para libev en sistemas Unix e IOCP en Windows. La biblioteca libeio se utiliza para crear un grupo de subprocesos y c-ares está integrado para realizar consultas de DNS en modo sin bloqueo. Todas las llamadas al sistema que causan el bloqueo se ejecutan dentro del conjunto de subprocesos y luego, como controladores de señales, transfieren el resultado de su trabajo a través de una tubería sin nombre (tubería). La ejecución de código JavaScript se proporciona mediante el uso del motor V8 desarrollado por Google (además, Microsoft está desarrollando una versión de Node.js con el motor Chakra-Core).

En esencia, Node.js es similar a los marcos Perl AnyEvent, Ruby Event Machine, Python Twisted y la implementación de eventos Tcl, pero el bucle de eventos en Node.js está oculto para el desarrollador y se asemeja al manejo de eventos en una aplicación web que se ejecuta en el navegador. Al escribir aplicaciones para node.js, debe tener en cuenta las especificaciones de la programación basada en eventos, por ejemplo, en lugar de hacer "var result = db.query("select..");" con la espera de la finalización del trabajo y el posterior procesamiento de 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) {procesamiento de resultados});", en el que el control pasará instantáneamente a más código, y el resultado de la consulta se procesará a medida que lleguen los datos.

Además, cabe señalar que la empresa Deno, fundada por el creador de Node.js para desarrollar la plataforma Deno de próxima generación, recibió 4.9 millones de dólares en inversiones. En su propósito, Deno es similar a Node.js, pero intenta eliminar los errores conceptuales cometidos en la arquitectura de Node.js y proporcionar a los usuarios un entorno más seguro. Cabe señalar que las soluciones comerciales de Deno se basarán en productos completamente abiertos, y el modelo Open Core con funcionalidad paga separada se percibe como inaceptable para la plataforma Deno.

Fuente: opennet.ru

Añadir un comentario