Se ha publicado la versión 2.9 de la plataforma Deno, diseñada para la ejecución aislada de aplicaciones de servidor y de escritorio en los lenguajes JavaScript y TypeScript con el motor V8, utilizado en navegadores basados en Chromium. El proyecto es desarrollado por Ryan Dahl, el creador de Node.js, con el objetivo de proporcionar un entorno más seguro y corregir errores conceptuales en la arquitectura de Node.js. Para aumentar la seguridad, la envoltura alrededor del motor V8 está escrita en Rust, y para el manejo de solicitudes en modo no bloqueante se utiliza la plataforma Tokio. El código del proyecto se distribuye bajo la licencia MIT. Se han hecho compilaciones para Linux, Windows y macOS.
La nueva versión destaca por la implementación de una herramienta experimental llamada Deno Desktop, que permite crear aplicaciones de usuario con interfaz gráfica basadas en tecnologías web, similar a la plataforma Electron. La lógica y la interfaz de la aplicación se definen en JavaScript o TypeScript usando frameworks web comunes, y su funcionamiento se organiza con un motor de navegador. La aplicación se entrega como un archivo ejecutable independiente y, en términos de interacción con el usuario, no difiere de los programas clásicos de interfaz gráfica.
Deno Desktop ofrece backends para trabajar sobre dos motores de navegador: el proporcionado por el sistema operativo WebView y el que se integra en la aplicación CEF (Chromium Embedded Framework). El backend basado en WebView permite reducir el tamaño de los archivos ejecutables al funcionar sobre el motor de navegador del sistema WebView2 en Windows y WebKit en macOS y Linux, mientras que el backend CEF brinda la posibilidad de lograr una representación uniforme de la interfaz en las plataformas Linux, macOS y Windows, pero a costa de un aumento significativo del tamaño de los archivos ejecutables.
El tamaño del archivo ejecutable de la aplicación de prueba al usar WebView se estima en 40 MB, mientras que al usar CEF es de 150 MB. Para comparación, este indicador para Electron es de 100 MB, Electrobun — 61 MB, y Tauri — de 2 a 10 MB (en Electron se utiliza CEF integrado en la aplicación, mientras que en Electrobun y Tauri se usa el WebView del sistema). Se está desarrollando un mecanismo para compartir un motor CEF común entre diferentes aplicaciones, lo que permitirá reducir el tamaño de los archivos ejecutables.
Deno Desktop ofrece plena compatibilidad con Node.js, el ecosistema NPM y marcos web como Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start y Vite SSR. Se proporciona una API para acceder a las API nativas de escritorio, lo que permite, por ejemplo, controlar el tamaño, la posición y la visibilidad de la ventana desde el programa, crear menús, adjuntar controladores personalizados, mostrar iconos en la bandeja del sistema y paneles, y mostrar diálogos nativos del sistema operativo. Es posible compilar aplicaciones web en forma de programas de escritorio sin modificar su código, así como la detección automática de los marcos web utilizados y la compilación cruzada en un único sistema para Linux x64/arm64, Windows x64 y macOS x64/arm64. Para Linux, se pueden generar paquetes en formatos AppImage, deb y rpm.
A diferencia de Electron, Electrobun y Tauri, Deno Desktop utiliza un modelo de ejecución basado en múltiples hilos para CEF o un modelo basado en grupos de procesos para WebView, permitiendo la interacción entre el backend y el código de la interfaz gráfica a través de canales dentro de un mismo proceso. Cuenta con un mecanismo integrado para verificar e instalar actualizaciones automáticamente, que descarga solo los datos que han cambiado en comparación con la versión anterior (se aplican parches binarios basados en bsdiff) y admite la reversión a la versión anterior en caso de errores al iniciar la nueva versión.
Entre las demás novedades de Deno 2.9:
- Soporte en el comando 'deno install' para la lectura directa de archivos lock, facilitando la migración a Deno desde npm, pnpm, yarn y Bun.
- Soporte para la importación de módulos CSS.
- Implementación de compatibilidad con la plataforma Node.js 26.
- Nuevos comandos 'deno link', 'deno unlink' y 'deno list'.
- Soporte para la API Web Locks para establecer bloqueos en recursos.
- Activación por defecto de un retraso de 24 horas (min-release-age=24h) antes de instalar nuevas versiones de dependencias, para protegerse contra ataques mediante la compromisión de dependencias.
- Reducción del tiempo de inicio (~2x), disminución del consumo de memoria (~2.2x) y aumento del rendimiento al trabajar con HTTP (~1.2x).

Fuente: opennet.ru

