È stato pubblicato il rilascio della piattaforma Deno 2.9, progettata per l'esecuzione isolata di applicazioni server e desktop in JavaScript e TypeScript, utilizzando il motore V8, impiegato nei browser basati su Chromium. Il progetto è sviluppato da Ryan Dahl, creatore di Node.js, con l'obiettivo di fornire un ambiente più sicuro e di correggere errori concettuali presenti nell'architettura di Node.js. Per migliorare la sicurezza, il wrapper attorno al motore V8 è scritto in Rust, mentre la piattaforma Tokio è utilizzata per la gestione delle richieste in modalità non bloccante. Il codice del progetto è distribuito sotto la licenza MIT. Le versioni sono disponibili per Linux, Windows e macOS.
La nuova versione si distingue per l'implementazione di uno strumento sperimentale chiamato Deno Desktop, che consente di creare applicazioni personalizzate con interfaccia grafica, costruite con tecnologie web, simile alla piattaforma Electron. La logica e l'interfaccia dell'applicazione sono definite in JavaScript o TypeScript utilizzando framework web standard, mentre il funzionamento è organizzato tramite un motore del browser. L'applicazione viene distribuita come un file eseguibile autonomo e, nell'interazione con l'utente, non si differenzia dai classici programmi con interfaccia grafica.
In Deno Desktop vengono offerti backend per operare su due motori di browser — quello fornito dal sistema operativo WebView e il CEF (Chromium Embedded Framework) integrato nell'applicazione. Il backend basato su WebView consente di ridurre le dimensioni dei file eseguibili, sfruttando il motore di navigazione del sistema, WebView2 su Windows e WebKit su macOS e Linux, mentre il backend CEF permette di ottenere una resa uniforme dell'interfaccia su Linux, macOS e Windows, ma a costo di un notevole aumento delle dimensioni dei file eseguibili.
La dimensione del file eseguibile dell'applicazione di test utilizzando WebView è stimata in 40 MB, mentre utilizzando CEF è di 150 MB. A titolo di confronto, per Electron questo valore è di 100 MB, per Electrobun è di 61 MB e per Tauri è di 2-10 MB (in Electron viene utilizzato CEF integrato nell'applicazione, mentre in Electrobun e Tauri si usa WebView di sistema). È in fase di sviluppo un meccanismo per la condivisione del motore CEF comune tra diverse applicazioni, che consentirà di ridurre la dimensione dei file eseguibili.
In Deno Desktop è stata implementata la piena compatibilità con Node.js, l'ecosistema NPM e framework web come Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start e Vite SSR. È fornita un'API per accedere alle API desktop native, ad esempio, è possibile gestire le dimensioni, la posizione e la visibilità della finestra, creare menu, collegare i propri gestori, impostare le icone per il vassoio di sistema e le barre degli strumenti, e visualizzare i dialoghi nativi del sistema operativo. È possibile costruire applicazioni web sotto forma di programmi desktop senza modificare il loro codice, oltre all'automazione nella rilevazione dei framework web utilizzati e alla cross-compilazione su un'unica piattaforma per Linux x64/arm64, Windows x64 e macOS x64/arm64. Per Linux possono essere generati pacchetti nei formati AppImage, deb e rpm.
A differenza di Electron, Electrobun e Tauri, Deno Desktop utilizza un modello di esecuzione a thread singolo per CEF o un modello basato su gruppi di processi per WebView, interagendo tra il backend e il codice dell'interfaccia grafica tramite canali all'interno dello stesso processo. È presente un meccanismo integrato per il controllo e l'installazione automatica degli aggiornamenti, che scarica solo i dati modificati rispetto alla versione precedente per risparmiare traffico (utilizza patch binarie basate su bsdiff) e supporta il ripristino alla versione precedente in caso di errore durante l'avvio della nuova versione.
Tra le altre novità di Deno 2.9:
- Supporto nella squadra «deno install» per la lettura diretta dei lock file per semplificare la migrazione a Deno da npm, pnpm, yarn e Bun.
- Supporto per l'importazione dei moduli CSS.
- Implementazione della compatibilità con la piattaforma Node.js 26.
- Nuovi comandi «deno link», «deno unlink» e «deno list».
- Supporto per l'API Web Locks per impostare locking sulle risorse.
- Attivazione per impostazione predefinita di un ritardo di 24 ore (min-release-age=24h) prima di installare nuove versioni delle dipendenze per proteggere dalle attacchi tramite compromissione delle dipendenze.
- Riduzione del tempo di avvio (~2x), diminuzione del consumo di memoria (~2.2x) e aumento della capacità di throughput durante l'utilizzo di HTTP (~1.2x).

Fonte: opennet.ru

