Die Ausgabe der Deno-Plattform 2.9 wurde veröffentlicht, die fĂŒr die isolierte AusfĂŒhrung von Server- und Desktopanwendungen in den Programmiersprachen JavaScript und TypeScript unter Verwendung der V8-Engine, die in Chromium-basierten Browsern eingesetzt wird, vorgesehen ist. Das Projekt wird von Ryan Dahl, dem Schöpfer von Node.js, entwickelt, um eine sicherere Umgebung zu bieten und konzeptionelle Fehler in der Architektur von Node.js zu beseitigen. Um die Sicherheit zu erhöhen, wurde die UmschlieĂung um die V8-Engine in der Programmiersprache Rust geschrieben, und fĂŒr nicht-blockierende Anfragen wird die Tokio-Plattform verwendet. Der Code des Projekts wird unter der MIT-Lizenz veröffentlicht. Die Builds sind fĂŒr Linux, Windows und macOS vorbereitet.
Die neue Version zeichnet sich durch die Implementierung des experimentellen Werkzeugs Deno Desktop aus, das es ermöglicht, benutzerdefinierte Anwendungen mit grafischer BenutzeroberflĂ€che zu erstellen, die mit Web-Technologien in Anlehnung an die Electron-Plattform entwickelt wurden. Die Logik und das Interface der Anwendung werden in JavaScript oder TypeScript unter Verwendung gĂ€ngiger Web-Frameworks definiert, wĂ€hrend die AusfĂŒhrung mit der Browser-Engine organisiert wird. Die Anwendung wird in Form einer eigenstĂ€ndigen ausfĂŒhrbaren Datei geliefert und unterscheidet sich im Umgang mit dem Benutzer nicht von klassischen Programmen mit grafischer BenutzeroberflĂ€che.
Deno Desktop bietet Backends zur Nutzung von zwei Browser-Engines â der von dem Betriebssystem bereitgestellten WebView und der in die Anwendung integrierten CEF (Chromium Embedded Framework). Das Backend auf Basis von WebView ermöglicht eine Reduzierung der DateigröĂe von ausfĂŒhrbaren Dateien, da es auf der systemeigenen Browser-Engine WebView2 in Windows und WebKit in macOS und Linux basiert, wĂ€hrend das CEF-Backend die Möglichkeit bietet, eine einheitliche Darstellung der BenutzeroberflĂ€che auf den Plattformen Linux, macOS und Windows zu erreichen, allerdings zu Lasten einer erheblichen VergröĂerung der DateigröĂe von ausfĂŒhrbaren Dateien.
Die GröĂe der ausfĂŒhrbaren Datei der Testanwendung unter Verwendung von WebView wird auf 40 MB geschĂ€tzt, wĂ€hrend sie bei Verwendung von CEF 150 MB betrĂ€gt. Zum Vergleich liegt dieser Wert fĂŒr Electron bei 100 MB, fĂŒr Electrobun bei 61 MB und fĂŒr Tauri zwischen 2-10 MB (in Electron wird ein in die Anwendung eingebettetes CEF verwendet, wĂ€hrend in Electrobun und Tauri das systemeigene WebView genutzt wird). Ein Mechanismus zur gemeinsamen Nutzung der gemeinsamen CEF-Engine in verschiedenen Anwendungen befindet sich in der Entwicklung, der es ermöglichen wird, die GröĂe der ausfĂŒhrbaren Dateien zu reduzieren.
In Deno Desktop besteht vollstĂ€ndige KompatibilitĂ€t mit Node.js, dem NPM-Ăkosystem und Web-Frameworks wie Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start und Vite SSR. Es wird eine API bereitgestellt, um auf native Desktop-APIs zuzugreifen, wie z. B. die Steuerung von GröĂe, Position und Sichtbarkeit des Fensters aus dem Programm heraus, das Erstellen von MenĂŒs, das Anheften eigener Handler, das Festlegen von Symbole fĂŒr das Systemtray und die Panels sowie das Anzeigen nativer Dialoge fĂŒr das OS. Webanwendungen können in Form von Desktop-Anwendungen ohne Ănderung ihres Codes gebĂŒndelt werden, und es gibt eine automatische Erkennung der verwendeten Web-Frameworks und die Cross-Kompilierung auf einem System fĂŒr Linux x64/arm64, Windows x64 und macOS x64/arm64. FĂŒr Linux können Pakete in den Formaten AppImage, deb und rpm generiert werden.
Im Gegensatz zu Electron, Electrobun und Tauri verwendet Deno Desktop kein Multithreading-Modell mit IPC auf der Basis von Sockets, sondern ein Multithreading-Modell fĂŒr CEF oder ein Modell auf der Basis von Prozessgruppen fĂŒr WebView, wobei die Interaktion zwischen dem Backend und dem BenutzeroberflĂ€chen-Code ĂŒber KanĂ€le innerhalb eines Prozesses erfolgt. Es gibt einen integrierten Mechanismus zur ĂberprĂŒfung und automatischen Installation von Updates, der zur Einsparung von Bandbreite nur die sich im Vergleich zur vorherigen Version geĂ€nderten Daten herunterlĂ€dt (binĂ€re Patches basierend auf bsdiff werden verwendet) und einen Rollback auf die vorherige Version im Falle eines Fehlers beim Start der neuen Version unterstĂŒtzt.
Unter anderem neue Funktionen in Deno 2.9:
- UnterstĂŒtzung des direkten Lesens von Lock-Dateien im Befehl âdeno installâ zur Vereinfachung der Migration auf Deno von npm, pnpm, yarn und Bun.
- UnterstĂŒtzung fĂŒr den Import von CSS-Modulen.
- Implementierung der KompatibilitÀt mit der Node.js-Plattform 26.
- Neue Befehle âdeno linkâ, âdeno unlinkâ und âdeno listâ.
- UnterstĂŒtzung der API Web Locks zum Setzen von Sperren auf Ressourcen.
- StandardmĂ€Ăig eine 24-stĂŒndige Verzögerung (min-release-age=24h) vor dem Installieren neuer Versionen von AbhĂ€ngigkeiten zum Schutz vor Angriffen durch Kompromittierung von AbhĂ€ngigkeiten.
- Verringerung der Startzeit (~2x), Reduzierung des Speicherverbrauchs (~2.2x) und Erhöhung der Durchsatzleistung bei der Arbeit mit HTTP (~1.2x).

Quelle: opennet.ru

