Bola vydaná platforma Deno 2.9 určená na samostatné spúšťanie serverových a desktopových aplikácií napísaných v jazykoch JavaScript a TypeScript s použitím enginu V8, ktorý sa používa v prehliadačoch založených na prehliadači Chromium. Projekt vyvíja Ryan Dahl, tvorca Node.js, s cieľom poskytnúť bezpečnejšie prostredie a eliminovať koncepčné chyby v architektúre Node.js. Pre zlepšenie bezpečnosti je framework V8 napísaný v jazyku Rust a na neblokujúce spracovanie požiadaviek sa používa platforma Tokio. Kód projektu je distribuovaný pod licenciou MIT. Zostavy sú pripravené na... Linux, Windows и macOS.
Nová verzia je pozoruhodná implementáciou experimentálnej sady nástrojov Deno Desktop, ktorá umožňuje vytváranie vlastných aplikácií s grafickým rozhraním (GUI) vytvorených pomocou webových technológií, podobných platforme Electron. Logika a rozhranie aplikácie sú definované v jazyku JavaScript alebo TypeScript pomocou štandardných webových frameworkov a aplikácia sa spúšťa pomocou prehliadačového enginu. Aplikácia je dodávaná ako samostatný spustiteľný súbor a ponúka používateľské rozhranie podobné klasickým programom s grafickým rozhraním.
Deno Desktop ponúka backendy pre spustenie na dvoch prehliadačoch: WebView operačného systému a CEF (Chromium Embedded Framework) integrovanom do aplikácie. Backend založený na WebView umožňuje menšie veľkosti spustiteľných súborov tým, že beží nad prehliadačom WebView2 systému. Windows a WebKit v macOS и Linuxa backend CEF umožňuje dosiahnuť rovnaké vykresľovanie rozhrania naprieč platformami Linux, macOS и Windows, ale za cenu výrazného zväčšenia veľkosti spustiteľných súborov.
Veľkosť spustiteľného súboru testovacej aplikácie sa odhaduje na 40 MB pri použití WebView a 150 MB pri použití CEF. Pre porovnanie, táto hodnota je 100 MB pre Electron, 61 MB pre Electrobun a 2 – 10 MB pre Tauri (Electron používa vstavaný CEF, zatiaľ čo Electrobun a Tauri používajú systém WebView). Mechanizmus na zdieľanie spoločného CEF enginu medzi aplikáciami je vo vývoji, čo zníži veľkosť spustiteľných súborov.
Deno Desktop je plne kompatibilný s Node.js, ekosystémom NPM a webovými frameworkami, ako sú Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start a Vite SSR. Na prístup k natívnym desktopovým API je k dispozícii API. Môžete napríklad ovládať veľkosť, polohu a viditeľnosť okien, vytvárať ponuky, pripájať vlastné obslužné programy, nastavovať ikony pre systémovú lištu a panely a zobrazovať natívne dialógové okná operačného systému. Webové aplikácie je možné vytvárať ako desktopové programy bez zmeny ich kódu a použité webové frameworky je možné automaticky detekovať a krížovo kompilovať na jednom systéme pre... Linux x64/arm64, Windows x64 a macOS x64/arm64. Pre Linux Balíky je možné generovať vo formátoch AppImage, deb a rpm.
Na rozdiel od Electron, Electrobun a Tauri, Deno Desktop nepoužíva viacprocesový model vykonávania s IPC založeným na socketoch. Namiesto toho používa viacvláknový model pre CEF alebo model založený na skupinách procesov pre WebView s komunikáciou medzi backendom a grafickým rozhraním prostredníctvom vnútroprocesových kanálov. Má vstavaný mechanizmus kontroly aktualizácií a automatickej inštalácie, ktorý pre úsporu šírky pásma sťahuje iba údaje, ktoré sa zmenili od predchádzajúcej verzie (pomocou binárnych záplat založených na bsdiff) a podporuje návrat k predchádzajúcej verzii v prípade zlyhania pri spustení novej verzie.
Medzi ďalšie nové funkcie v Deno 2.9 patria:
- Podpora pre priame čítanie súborov zámkov v príkaze „deno install“ pre zjednodušenie migrácie do Deno z npm, pnpm, yarn a Bun.
- Podpora importu CSS modulov.
- Implementácia kompatibility s platformou Node.js 26.
- Nové príkazy „deno link“, „deno unlink“ a „deno list“.
- Podpora rozhrania Web Locks API na nastavenie zámkov zdrojov.
- Pred inštaláciou nových verzií závislostí povoľte predvolené 24-hodinové oneskorenie (min-release-age=24h), aby ste ich ochránili pred útokmi na ohrozenie závislostí.
- Skrátený čas spustenia (~2x), znížená spotreba pamäte (~2.2x) a zvýšená priepustnosť pri práci s HTTP (~1.2x).

Zdroj: opennet.ru

