On välja antud Deno 2.9 platvormi versioon, mis on mõeldud serveri ja lauaarvuti rakenduste eraldiseisvaks käitamiseks JavaScripti ja TypeScripti keeltes V8 mootori abil, mida kasutatakse Chromiumi põhistel brauseritel. Projekti arendab Ryan Dahl, Node.js looja, eesmärgiga pakkuda turvalisemat keskkonda ja kõrvaldada Node.js arhitektuuris tehtud kontseptuaalsed vead. Turvalisuse suurendamiseks on V8 mootori ümber kirjutatud Rusti keeles ning mitteblokkeeriva nõudluse töötlemiseks kasutatakse Tokio platvormi. Projekti kood on litsentsitud MIT alusel. Kogumid on ette valmistatud Linuxi, Windowsi ja macOS-i jaoks.
Uus versioon paistab silma Deno Desktopi eksperimentaalse tööriistakogumi rakendamisega, mis võimaldab luua kasutajaliidese rakendusi, mille on ehitatud veebitehnoloogiate abil, sarnaselt Electron platvormile. Rakenduse loogika ja liides on määratud JavaScripti või TypeScripti keeles, kasutades tüüpilisi veebiraamistikke, ning selle toimimine põhineb brauserimootoril. Rakendus tarnitakse iseseisva täidetava failina ja kasutaja interaktsioon ei erine klassikalistest graafilise liidese programmidest.
Deno Desktop pakub taustsüsteeme, mis töötavad kahe brauserimootori — operatsioonisüsteemi poolt pakutava WebView ja rakendusse inteeritud CEF (Chromium Embedded Framework) – peal. WebView baasil töötav taustsüsteem võimaldab vähendada täidetavate failide suurust, töötades Windowsis süsteemi brauserimootor WebView2 ja macOS ning Linuxis WebKit peal, samas kui CEF taustsüsteem võimaldab saavutada ühtlast liidese joonistamist Linuxi, macOS ja Windowsi platvormidel, kuid sellega kaasneb täidetavate failide märkimisväärne suurenemine.
Testrakenduse täitmisfaili suurus WebView kasutamisel on 40 MB ja CEF-i puhul 150 MB. Võrdluseks: Electroni puhul on see 100 MB, Electrobun 61 MB ja Tauri 2-10 MB (Electronis kasutatakse sisemiselt rakendusele integreeritud CEF-i, Electrobun ja Tauri puhul aga süsteemset WebView-d). Töötamisel on CEF-i ühise mootori jagamise mehhanism erinevates rakendustes, mis võimaldab vähendada täitmisfailide suurust.
Deno Desktop toetab täielikult Node.js-i, NPM-ökosüsteemi ja veebiraamistikke nagu Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start ja Vite SSR. Pakutakse API-d juurdepääsuks natiivsetele lauaarvuti API-dele, sealhulgas on võimalik haldada akna suurust, asukohta ja nähtavust, luua menüüsid, kinnitada oma käitlejaid, seadistada süsteemikausse ja paneele ikoonide jaoks ning avada OS-i natiivdialooge. Veebirakenduste kogumine lauaarvutirakendusteks toimub ilma koodi muutmata ning toetatakse automaatset kasutatavate veebiraamistike tuvastamist ja ristkompileerimist ühel süsteemil Linux x64/arm64, Windows x64 ja macOS x64/arm64. Linuxi jaoks võib genereerida pakette formaatides AppImage, deb ja rpm.
Erinevalt Electronist kasutab Electrobun ja Tauri Deno Desktopis mitme protsessi mudeli asemel IPC, mis põhineb soketitel, ühte protsessi kasutavat multitegelaste mudelit CEF-i jaoks või rühmade protsesside mudelit WebView jaoks, kus tagasiside bänneri ja kasutajaliidese koodi vahel toimub ühe protsessi kanali kaudu. Sisseehitatud värskenduste kontrollimise ja automaatse installimise mehhanism säästab liiklust, laadides alla ainult need andmed, mis on varasemate versioonidega võrreldes muutunud (rakendatakse bsdiff-põhiseid binaarselt plaaste) ja toetab eelmise versiooni taastamist, kui uue versiooni käivitamine ebaõnnestub.
Muudatused Deno 2.9 hulgas:
- Meeskonna «deno install» toetus lukufailide otse lugemisele npm, pnpm, yarn ja Bun'ist Deno migratsiooni lihtsustamiseks.
- CSS-moodulite importimise toetus.
- Node.js 26 ühilduvuse rakendamine.
- Uued käsud «deno link», «deno unlink» ja «deno list».
- API Web Locks toetus ressursside lukustamiseks.
- Uute sõltuvuste versioonide installimise eelõhtuks 24-tunnise viivituse (min-release-age=24h) vaikevalik, et kaitsta sõltuvuste terviklikkuse rünnakute eest.
- Käivitusaja lühenemine (~2x), mälu tarbimise vähenemine (~2.2x) ja läbilaskevõime suurenemine HTTP-teenustes (~1.2x).

Allikas: opennet.ru

