A fost publicat versiunea 2.9 a platformei Deno, destinată executării izolate a aplicațiilor server și desktop scrise în JavaScript și TypeScript, utilizând motorul V8, folosit în browserele bazate pe Chromium. Proiectul este dezvoltat de Ryan Dahl, creatorul Node.js, cu scopul de a oferi un mediu mai securizat și de a corecta erorile conceptuale din arhitectura Node.js. Pentru a spori securitatea, wrapper-ul din jurul motorului V8 este scris în Rust, iar pentru procesarea cererilor în mod neblocat se folosește platforma Tokio. Codul proiectului este distribuit sub licența MIT. Versiunile sunt pregătite pentru Linux, Windows și macOS.
Noua versiune se remarcă prin implementarea instrumentelor experimentale Deno Desktop, care permite crearea de aplicații personalizate cu interfață grafică, construite folosind tehnologii web, similar cu platforma Electron. Logica și interfața aplicației sunt definite în JavaScript sau TypeScript, utilizând framework-uri web standard, iar funcționarea este organizată cu ajutorul motorului browserului. Aplicația este livrată sub formă de fișier executabil autonom și nu se diferențiază în interacțiunea cu utilizatorul de aplicațiile clasice cu interfață grafică.
Deno Desktop oferă backend-uri pentru a funcționa peste două motoare de browser — cel furnizat de sistemul de operare WebView și cel integrat în aplicație CEF (Chromium Embedded Framework). Backend-ul bazat pe WebView permite reducerea dimensiunii fișierelor executabile prin utilizarea motorului de browser sistemic WebView2 în Windows și WebKit în macOS și Linux, iar backend-ul CEF permite obținerea unui aspect uniform al interfeței pe platformele Linux, macOS și Windows, dar cu un cost semnificativ al mărimii fișierelor executabile.
Dimensiunea fișierului executabil al aplicației de testare folosind WebView este estimată la 40 MB, iar utilizând CEF — 150 MB. Spre comparație, pentru Electron această valoare este de 100 MB, pentru Electrobun — 61 MB, iar Tauri — 2-10 MB (în Electron se folosește CEF integrat în aplicație, iar în Electrobun și Tauri, WebView sistemic). Este în dezvoltare un mecanism de partajare a motorului CEF comun între diferite aplicații, care va reduce dimensiunea fișierelor executabile.
Deno Desktop garantează compatibilitate completă cu Node.js, ecosistemul NPM și cu framework-uri web precum Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start și Vite SSR. Oferă API pentru accesarea API-urilor desktop native, permițând, de exemplu, gestionarea dimensiunii, poziției și vizibilității ferestrei din aplicație, crearea de meniuri, atașarea propriilor manipulatoare, definirea pictogramelor pentru bara de sistem și panouri, precum și afișarea dialogurilor native pentru OS. Este posibilă construirea aplicațiilor web sub formă de programe desktop fără modificarea codului acestora, precum și detectarea automată a framework-urilor web utilizate și compilarea încrucișată pe aceeași sistem pentru Linux x64/arm64, Windows x64 și macOS x64/arm64. Pentru Linux, se pot genera pachete în formatele AppImage, deb și rpm.
Spre deosebire de Electron, Electrobun și Tauri, Deno Desktop folosește un model multi-thread pentru CEF sau un model bazat pe grupuri de procese pentru WebView, interacționând între backend și codul interfeței grafice prin canale în cadrul unui singur proces, în loc de modelul multiproces cu IPC bazat pe socket-uri. Dispune de un mecanism integrat pentru verificarea și instalarea automată a actualizărilor, care, pentru a economisi trafic, descarcă doar datele care s-au schimbat față de versiunea anterioară (se utilizează patch-uri binare bazate pe bsdiff) și suportă reinstalarea versiunii anterioare în caz de eșec la lansarea noii versiuni.
Printre alte noutăți, Deno 2.9 include:
- Suport pentru comanda „deno install” de a citi direct fișierele lock pentru a simplifica migrarea la Deno din npm, pnpm, yarn și Bun.
- Suport pentru importul modulelor CSS.
- Implementarea compatibilității cu platforma Node.js 26.
- Noi comenzi „deno link”, „deno unlink” și „deno list”.
- Suport pentru API-ul Web Locks pentru aplicarea de blocaje pe resurse.
- Activarea implicită a întârzierii de 24 de ore (min-release-age=24h) înainte de instalarea noilor versiuni ale dependențelor, pentru a proteja împotriva atacurilor ce vizează compromiterea dependențelor.
- Reducerea timpului de pornire (~2x), scăderea consumului de memorie (~2.2x) și îmbunătățirea capacității de procesare a cererilor HTTP (~1.2x).

Sursa: opennet.ro

