La version 2.9 de la plateforme Deno a Ă©tĂ© publiĂ©e, destinĂ©e Ă l'exĂ©cution isolĂ©e d'applications serveur et de bureau en JavaScript et TypeScript, en utilisant le moteur V8, utilisĂ© dans les navigateurs basĂ©s sur Chromium. Le projet est portĂ© par Ryan Dahl, le crĂ©ateur de Node.js, avec pour objectif de fournir un environnement plus sĂ»r et de corriger les erreurs conceptuelles dans l'architecture de Node.js. Pour renforcer la sĂ©curitĂ©, l'enveloppe autour du moteur V8 est Ă©crite en Rust, et pour le traitement des requĂȘtes, la plateforme Tokio est utilisĂ©e en mode non-bloquant. Le code du projet est distribuĂ© sous licence MIT. Des versions sont prĂ©parĂ©es pour Linux, Windows et macOS.
La nouvelle version se distingue par la mise en Ćuvre d'un outil expĂ©rimental, Deno Desktop, permettant de crĂ©er des applications utilisateur avec interface graphique, basĂ©es sur des technologies web, Ă l'instar de la plateforme Electron. La logique et l'interface de l'application sont dĂ©finies en JavaScript ou TypeScript en utilisant des frameworks web standards, tandis que le fonctionnement est organisĂ© Ă l'aide du moteur de navigateur. L'application est livrĂ©e sous forme de fichier exĂ©cutable autonome et, en termes d'interaction utilisateur, ne diffĂšre pas des programmes classiques avec interface graphique.
Deno Desktop propose des backends pour fonctionner avec deux moteurs de navigateur : celui fourni par le systÚme d'exploitation WebView et celui intégré dans l'application CEF (Chromium Embedded Framework). Le backend basé sur WebView permet de réduire la taille des fichiers exécutables en s'appuyant sur le moteur de navigateur systÚme WebView2 sous Windows et WebKit sous macOS et Linux, tandis que le backend CEF permet d'obtenir un rendu uniforme de l'interface sur Linux, macOS et Windows, mais au prix d'une augmentation significative de la taille des fichiers exécutables.
La taille du fichier exécutable de l'application test utilisant WebView est estimée à 40 Mo, tandis qu'en utilisant CEF, elle atteint 150 Mo. Pour comparaison, ce chiffre est de 100 Mo pour Electron, 61 Mo pour Electrobun, et entre 2 et 10 Mo pour Tauri (Electron utilise CEF intégré à l'application, tandis qu'Electrobun et Tauri se basent sur WebView systÚme). Un mécanisme de partage du moteur CEF commun entre différentes applications est en développement, ce qui permettra de réduire la taille des fichiers exécutables.
Deno Desktop offre une compatibilitĂ© complĂšte avec Node.js, l'Ă©cosystĂšme NPM et des frameworks web tels que Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start et Vite SSR. Une API est fournie pour accĂ©der aux API de bureau natives, permettant de contrĂŽler la taille, la position et la visibilitĂ© des fenĂȘtres, de crĂ©er des menus, d'attacher ses propres gestionnaires, de dĂ©finir des icĂŽnes pour la barre d'Ă©tat systĂšme et les panneaux, et d'afficher des dialogues natifs pour le systĂšme d'exploitation. Il est possible de compiler des applications web sous forme de programmes de bureau sans modifier leur code, ainsi que d'identifier automatiquement les frameworks web utilisĂ©s et de procĂ©der Ă une compilation croisĂ©e sur un mĂȘme systĂšme pour Linux x64/arm64, Windows x64 et macOS x64/arm64. Pour Linux, des paquets peuvent ĂȘtre gĂ©nĂ©rĂ©s au format AppImage, deb et rpm.
Contrairement à Electron, Electrobun et Tauri, Deno Desktop n'emploie pas de modÚle d'exécution multiprocesseur avec IPC basé sur des sockets, mais un modÚle multithread pour CEF ou un modÚle basé sur des groupes de processus pour WebView, interagissant entre le backend et le code de l'interface graphique via des canaux dans un seul processus. Un mécanisme intégré de vérification et d'installation automatique des mises à jour est disponible, téléchargeant uniquement les données modifiées par rapport à la version précédente pour économiser de la bande passante (patchs binaires basés sur bsdiff) et soutenant le retour à la version précédente en cas d'échec lors de l'exécution de la nouvelle version.
Parmi les autres nouveautés de Deno 2.9 :
- Prise en charge par la commande « deno install » de la lecture directe des fichiers de verrouillage pour faciliter la migration vers Deno depuis npm, pnpm, yarn et Bun.
- Prise en charge de l'importation de modules CSS.
- Mise en Ćuvre de la compatibilitĂ© avec la plateforme Node.js 26.
- Nouvelles commandes « deno link », « deno unlink » et « deno list ».
- Prise en charge de l'API Web Locks pour mettre en place des verrouillages sur les ressources.
- Activation par défaut d'un délai de 24 heures (min-release-age=24h) avant l'installation de nouvelles versions des dépendances pour se protéger contre les attaques par compromission des dépendances.
- Réduction du temps de démarrage (~2x), diminution de la consommation de mémoire (~2.2x) et augmentation du débit lors des opérations HTTP (~1.2x).

Source : opennet.ru

