Megjelent a Deno 2.9 platform kiadása, amely a JavaScript és TypeScript nyelveken írt szerver és asztali alkalmazások elszigetelt végrehajtására készült, a Chromium alapú böngészőkben használt V8 motor használatával. A projektet Ryan Dahl, a Node.js megalkotója fejleszti, azzal a céllal, hogy biztonságosabb környezetet nyújtson és kiküszöbölje a Node.js architekturájában elkövetett koncepcionális hibákat. A V8 motor körüli köntös Rust nyelven íródott a biztonság növelése érdekében, míg a nem blokkoló kérésfeldolgozáshoz a Tokio platformot használják. A projekt kódja MIT licenc alatt kerül kiadásra. A build-ek Linux, Windows és macOS rendszerekre készültek.
Az új verziót a Deno Desktop kísérleti eszközkészletének megvalósítása jellemzi, amely lehetővé teszi webtechnológiák segítségével készült grafikus felhasználói felülettel rendelkező alkalmazások létrehozását, hasonlóan az Electron platformhoz. Az alkalmazás logikáját és felhasználói felületét JavaScript vagy TypeScript nyelven definiálják a tipikus webkeretrendszerek használatával, és működését böngészőmotor segítségével szervezik. Az alkalmazás egy önálló végrehajtható fájl formájában van forgalmazva, és a felhasználóval való interakcióban nem különbözik a klasszikus grafikus felhasználói felülettel rendelkező programoktól.
A Deno Desktop két böngészőmotor — az operációs rendszer által biztosított WebView és az alkalmazásba integrált CEF (Chromium Embedded Framework) — feletti működéshez szükséges háttérszoftverekkel rendelkezik. A WebView alapú háttérszoftver lehetővé teszi a végrehajtható fájlok méretének csökkentését azáltal, hogy a Windows rendszerben a WebView2 böngészőmotorra és a macOS és Linux rendszerekben a WebKit nyújtására épít. A CEF háttérszoftver lehetőséget biztosít arra, hogy a felhasználói felületek megjelenítése az Linux, macOS és Windows platformokon egyenlő legyen, ám ez a végrehajtható fájlok méretének jelentős növekedésével jár.
A tesztalkalmazás végrehajtási fájlának mérete WebView használatakor 40 MB, míg CEF használata esetén 150 MB. Összehasonlításképpen az Electron esetében ez a szám 100 MB, az Electrobun 61 MB, míg a Tauri 2-10 MB (az Electron a beépített CEF-et, míg az Electrobun és Tauri a rendszer WebView-ját alkalmazza). Fejlesztés alatt áll a közös CEF motor megosztási mechanizmusa különböző alkalmazások között, ami lehetővé teszi a végrehajtási fájlok méretének csökkentését.
A Deno Desktop teljes kompatibilitást valósít meg a Node.js-sel, az NPM ökoszisztémával, és olyan webkeretrendszerekkel, mint a Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start és Vite SSR. API-t biztosít a natív asztali API-khoz való hozzáféréshez, például a programból szabályozható az ablak mérete, pozíciója és láthatósága, menük hozhatók létre, saját kezelők rögzíthetők, ikonok állíthatók be a rendszer tálcához és panelekhhez, valamint natív OS párbeszédpanelek jeleníthetők meg. Webalkalmazások asztali programokká alakítása lehetséges kódmódosítás nélkül, és automatikusan meghatározhatók a használt webkeretrendszerek a Linux x64/arm64, Windows x64 és macOS x64/arm64 rendszerre való keresztkompilálással. Linux esetén csomagok hozhatók létre AppImage, deb és rpm formátumokban.
Az Electron-tól eltérően az Electrobun és a Tauri a Deno Desktop-ban nem több folyamatú IPC alapú modellt alkalmaz CEF esetén, hanem szálalapú modellt, vagy WebView esetén csoportos folyamat-alapú modellt, ahol az interfész és a háttérkód közötti interakciók egy folyamaton belül csatornákon keresztül zajlanak. Beépített frissítési ellenőrző és automatikus telepítési mechanizmus áll rendelkezésre, ami csökkenti az adatforgalmat, csak a korábbi verzióhoz képest megváltozott adatokat tölti le (a bsdiff alapú bináris javítások alkalmazásával), és támogatja a visszaállítást a korábbi verzióra, ha az új verzió indítása során hiba lép fel.
A Deno 2.9 egyéb újdonságai:
- A 'deno install' parancsban közvetlen lock-fájl olvasás támogatása, megkönnyítve a Deno-ra való migrációt npm, pnpm, yarn és Bun használatával.
- CSS-modulok importálásának támogatása.
- Kompatibilitás a Node.js 26 platformmal.
- Új 'deno link', 'deno unlink' és 'deno list' parancsok.
- API Web Locks támogatása az erőforrások zárolásának beállításához.
- Alapértelmezett 24 órás késleltetés (min-release-age=24h) a függőségek új verzióinak telepítése előtt, hogy megvédjük a függőségek kompromittálása miatti támadásoktól.
- A betöltési idő csökkentése (~2x), a memóriafogyasztás csökkentése (~2.2x) és a HTTP feldolgozási teljesítmény növelése (~1.2x).

Forrás: opennet.ru

