Se ha publicado la plataforma Node.js 23.0 con soporte inicial para el lenguaje TypeScript

Se ha lanzado Node.js 23.0.0, una plataforma para ejecutar aplicaciones de red en JavaScript. Node.js 23.0 pertenece a las ramas intermedias, cuyo soporte se proporcionará durante 7 meses (hasta junio de 2025). En los próximos días, se completará la estabilización de la rama Node.js 22, que obtendrá el estatus de LTS el 29 de octubre y será soportada hasta abril de 2027. El soporte para las anteriores ramas LTS Node.js 20.x y 18.x continuará hasta abril de 2026 y 2025 respectivamente.

Principales mejoras:

  • Se ha añadido soporte experimental para el lenguaje TypeScript, que permite la definición explícita de tipos. El soporte se activa mediante las opciones «—experimental-strip-types» y «—experimental-transform-types». Con la primera opción, el trabajo con TypeScript se reduce a la eliminación de definiciones de tipos específicas de este lenguaje (no se realiza la verificación de tipos, simplemente se convierte el código a JavaScript sin tipos). La segunda opción transforma algunos elementos de la sintaxis de TypeScript en código JavaScript, como enumeraciones (enum) y espacios de nombres (namespace).
  • Se ha habilitado por defecto la posibilidad de utilizar la llamada «require()» para cargar módulos JavaScript ESM (ECMAScript Modules) de manera sincrónica. Los módulos ESM se utilizan en navegadores y reemplazan a los módulos CommonJS, específicos de Node.js. Para cargar un módulo ESM a través de «require()» en Node.js, debe ejecutarse de forma sincrónica (sin await en el nivel superior).
  • Se ha asegurado la detección automática de módulos ESM en archivos sin extensión o con la extensión «.js». Anteriormente, tales archivos se consideraban módulos CommonJS, a menos que su tipo se especificara explícitamente en el archivo package.json en el mismo directorio («type»: «module»). En la nueva versión, para archivos cuyo tipo no está definido en el package.json, se intenta primero cargar como módulo CommonJS, y si esto falla, como módulo ESM.
  • Se ha añadido una implementación experimental compatible con navegadores API Web Storage, destinado para el almacenamiento permanente (clase localStorage) o temporal (clase sessionStorage) de datos en formato clave/valor. Para habilitar el soporte de Web Storage, se requiere iniciar con la bandera «—experimental-webstorage» y especificar la ruta al archivo de almacenamiento a través de la bandera «—localstorage-file».
  • Se ha añadido una API experimental de SQLite para trabajar con bases de datos usando el lenguaje de consultas SQL y el almacenamiento basado en la biblioteca SQLite. Además de almacenar la base de datos en un archivo en disco, también se puede alojar en memoria, especificando «:memory:» en lugar del nombre del archivo. La API de Web Storage mencionada también se ha implementado sobre SQLite, lo que ha llevado a agregar SQLite como una de las dependencias para Node.js.
  • Se ha declarado estable el comando «node —run», destinado a ejecutar scripts definidos en el archivo package.json.
  • Se ha implementado soporte opcional para el almacenamiento en caché del código compilado en disco para acelerar significativamente el inicio de los módulos. La activación del almacenamiento en caché se realiza a través de la variable de entorno NODE_COMPILE_CACHE. En su función, esta característica recuerda al paquete v8-compile-cache, pero se diferencia por un rendimiento más alto y soporte para módulos ESM.
  • Se ha optimizado el objeto Buffer, lo que ha permitido aumentar significativamente el rendimiento de los métodos Buffer.copy() y Buffer.write().
  • Se ha mejorado el rendimiento del módulo node:fs, donde también se ha reducido el número de llamadas al código en C++ durante su funcionamiento.
  • El motor V8 ha sido actualizado a la versión 12.9, utilizada en Chromium 129.
  • Se ha eliminado el soporte para sistemas de 32 bits con Windows.
  • Debido a la incorporación en Node.js y el motor V8 de características definidas en el estándar C++20, se han aumentado los requisitos para la versión del compilador GCC. Ahora se requiere, como mínimo, la versión 12 de GCC para compilar Node.js.

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 asíncrono de ejecución de código, que se basa en el manejo de eventos en modo no bloqueante y en la definición de manejadores de callbacks. Entre los métodos de multiplexión de conexiones se incluyen 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. La biblioteca libeio se utiliza para crear un grupo de hilos (thread pool) y c-ares está integrado para realizar consultas DNS en modo no bloqueante. Todas las llamadas al sistema que podrían bloquearse se ejecutan dentro del grupo de hilos y luego, al igual que los manejadores de señales, envían el resultado de su trabajo a través de un canal no nombrado (pipe).

El código JavaScript se ejecuta gracias al motor V8 desarrollado por Google (además, Microsoft desarrolla una versión 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 procesamiento de eventos (event loop) en Node.js está oculto para el desarrollador y recuerda el manejo de eventos en una aplicación web que se ejecuta en el navegador.

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