Die Veröffentlichung der Deno-Plattform 2.9 ist erfolgt, die für die isolierte Ausführung von Server- und Desktopanwendungen in JavaScript und TypeScript unter Verwendung der V8-Engine, die in Chromium-basierten Browsern eingesetzt wird, konzipiert ist. Das Projekt wird von Ryan Dahl, dem Schöpfer von Node.js, weiterentwickelt, 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 Umhüllung um die V8-Engine in Rust geschrieben, und zur Verarbeitung von Anfragen im nicht-blockierenden Modus 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 Deno Desktop-Tools aus, mit dem benutzerdefinierte Anwendungen mit grafischer Benutzeroberfläche erstellt werden können, die auf Web-Technologien basieren, ähnlich der Electron-Plattform. Die Logik und das Interface der Anwendung werden in JavaScript oder TypeScript unter Verwendung gängiger Web-Frameworks definiert, während die Verarbeitung mit einem Browser-Engine erfolgt. Die Anwendung wird als eigenständige ausführbare Datei geliefert und verhält sich in der Interaktion mit dem Benutzer wie klassische Programme mit grafischer Benutzeroberfläche.
Deno Desktop bietet Backends, die auf zwei Browser-Engines basieren – der vom Betriebssystem bereitgestellten WebView und dem in die Anwendung integrierten CEF (Chromium Embedded Framework). Das Backend auf Basis von WebView ermöglicht die Reduzierung der Größe der ausführbaren Dateien, indem es über die systemeigene Browser-Engine WebView2 in Windows und WebKit in macOS und Linux läuft. Das CEF-Backend hingegen gewährleistet eine konsistente Rendering von Interfaces auf den Plattformen Linux, macOS und Windows, allerdings auf Kosten einer erheblichen Erhöhung der Größe der ausführbaren Dateien.
Die Größe der ausführbaren Datei der Testanwendung mit WebView beträgt etwa 40 MB, während sie bei Verwendung von CEF 150 MB beträgt. Zum Vergleich liegt dieser Wert bei Electron bei 100 MB, bei Electrobun bei 61 MB und bei Tauri zwischen 2 und 10 MB (Electron verwendet einen im App integrierten CEF, während Electrobun und Tauri das systemeigene WebView nutzen). Es wird an einem Mechanismus gearbeitet, der die gemeinsame Nutzung einer CEF-Engine in verschiedenen Anwendungen ermöglicht und so die Größe der ausführbaren Dateien reduzieren kann.
Deno Desktop bietet 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 stellt eine API für den Zugriff auf native Desktop-APIs bereit, so dass Sie aus der Anwendung heraus die Größe, Position und Sichtbarkeit des Fensters steuern, Menüs erstellen, eigene Handler anheften, Symbole für die Systemablage und -leisten festlegen und nativen Betriebssystem-Dialoge ausgeben können. Webanwendungen können als Desktop-Anwendungen ohne Änderung des Codes kompiliert werden, und es ist möglich, verwendete Web-Frameworks automatisch zu erkennen und das Cross-Compilation auf einem System für Linux x64/arm64, Windows x64 und macOS x64/arm64 durchzuführen. Für Linux können Pakete in den Formaten AppImage, deb und rpm generiert werden.
Im Gegensatz zu Electron verwenden Electrobun und Tauri in Deno Desktop kein multiplattform-basiertes Modell mit IPC über Sockets, sondern ein mehrschichtiges Modell für CEF oder ein prozessgruppenbasiertes Modell für WebView, wobei die Interaktion zwischen Backend und der grafischen Benutzeroberfläche über Kanäle innerhalb eines Prozesses erfolgt. Es gibt einen integrierten Mechanismus zur Überprüfung und automatischen Installation von Updates, der nur die sich im Vergleich zur vorherigen Version ändernden Daten herunterlädt (es werden binäre Patches auf Basis von bsdiff verwendet) und einen Rollback zur vorherigen Version im Falle eines Fehlers beim Start der neuen Version unterstützt.
Unter den weiteren Neuerungen von Deno 2.9:
- Unterstützung für das direkte Lesen von Lock-Dateien im Befehl „deno install“, um die Migration auf Deno von npm, pnpm, yarn und Bun zu erleichtern.
- Unterstützung für den Import von CSS-Modulen.
- Implementierung der Kompatibilität mit der Plattform Node.js 26.
- Neue Befehle „deno link“, „deno unlink“ und „deno list“.
- Unterstützung für die API Web Locks zur Sperrung von Ressourcen.
- Standardmäßig wird eine 24-stündige Verzögerung (min-release-age=24h) vor der Installation neuer Versionen von Abhängigkeiten aktiviert, um Angriffe durch Kompromittierung von Abhängigkeiten zu verhindern.
- Reduzierung der Startzeit (~2x), Senkung des Speicherverbrauchs (~2,2x) und Erhöhung der Bandbreite bei der Arbeit mit HTTP (~1,2x).

Quelle: opennet.ru

