11 Punkte von GN⁺ 2024-12-13 | 3 Kommentare | Auf WhatsApp teilen
  • Veröffentlichung von Dioxus 0.6

    • Dioxus ist ein Rust-basiertes Framework, mit dem sich Web-, Desktop- und Mobile-Apps mit einer einzigen Codebasis erstellen lassen.
    • Ziel ist es, ein besseres Framework als Flutter zu sein.
    • Der Fokus liegt auf Full-Stack-Web-Unterstützung und typsicherer Server-/Client-Kommunikation sowie auf hoher Performance und einer besseren Developer Experience.
    • Diese Version 0.6 konzentriert sich darauf, Dioxus einfacher nutzbar zu machen, die Developer Experience zu verbessern und Bugs zu beheben.
  • Wichtige Funktionsverbesserungen

    • Unterstützung für mobile Simulatoren: Es wurde die Möglichkeit hinzugefügt, Apps auf Android- und iOS-Simulatoren sowie auf Geräten auszuführen.
    • Magic Hot Reloading: Unterstützung für Hot Reloading von formatierten Strings, Attributen und verschachteltem rsx!{}.
    • Interaktive CLI: Die Dioxus CLI wurde mit einer neuen UX neu geschrieben, um die Benutzerfreundlichkeit zu verbessern.
    • Inline-Stack-Traces: Erfasst WASM-Panics und Logs direkt im Terminal.
    • Native Server Functions: Unterstützung für inline Server-RPC für Desktop- und Mobile-Apps.
  • Verbesserungen der Developer Experience

    • Toasts und Ladebildschirme: Neue Toasts und Ladebildschirme während der Entwicklung von Web-Apps hinzugefügt.
    • Verbesserte Autovervollständigung: Die Autovervollständigung für RSX wurde deutlich verbessert.
    • Stabilisierung des Asset-Systems: Stabilisierung des integrierten, linkbasierten Asset-Systems für native Apps.
    • Streaming-HTML: Unterstützung für das Streamen von Suspense und Error Boundaries vom Server zum Client.
    • SSG und ISG: Unterstützung für Static Site Generation und Incremental Static Generation.
    • Fehlerbehandlung: Fehlerbehandlung in Event-Handlern, Tasks und Komponenten mit ?.
    • Meta-Elemente: Neue Elemente Head, Title, Meta und Link zum Setzen von Dokumenteigenschaften hinzugefügt.
    • Synchrones prevent_default: Ereignisse auf allen Plattformen synchron verarbeiten.
    • onresize-Event-Handler: Die Größe von Elementen ohne IntersectionObserver verfolgen.
    • onvisible-Event-Handler: Die Sichtbarkeit von Elementen ohne IntersectionObserver verfolgen.
    • WGPU-Integration: Dioxus als Overlay über WGPU-Oberflächen und Child Windows rendern.
    • dx bundle: Vollständige Unterstützung von dx bundle für Web, iOS und Android.
    • JSON-Modus: CLI-Meldungen als JSON ausgeben, um sie in Drittanbieter-Tools und CI/CD-Pipelines zu nutzen.
    • Neue Templates: Drei neue Starter-Templates für plattformübergreifende Apps.
    • Nightly-Tutorials und Guides: Neue Tutorials und Guides für Dioxus 0.6 und spätere Versionen.
    • Prototyp für Binary Patching: Ein Prototyp einer neuen Hot-Reloading-Engine in reinem Rust.
  • Release-Informationen

    • Dioxus 0.6 ist das bisher größte Release mit über 350 gemergten Pull Requests und Hunderten gelösten Issues.
    • Ziel ist es, die Qualität von Hot Reloading, Autovervollständigung und Asset-Bundling deutlich zu verbessern.
    • Die Dioxus CLI soll robuster und einfacher nutzbar werden.
    • Mobile-Tools sollen inline in die dioxus CLI integriert werden, um erstklassige Mobile-Unterstützung bereitzustellen.
  • Interaktives Kommandozeilen-Tool

    • Dioxus 0.6 bietet eine vollständig überarbeitete CLI-Erfahrung.
    • Die neue CLI unterstützt Live-Fortschrittsbalken, Animationen, ein interaktives Filtersystem und die Möglichkeit, Log-Level in Echtzeit zu ändern.
  • Unterstützung für Android und iOS

    • In Dioxus 0.6 unterstützt die dioxus CLI standardmäßig dx serve --platform ios/android.
    • Es bietet erstklassige Unterstützung für mobile Plattformen, und die Ziele für Android- und iOS-Simulatoren unterstützen dieselben Funktionen wie Desktop.
  • Überarbeitung der Hot-Reloading-Engine

    • In die Hot-Reloading-Engine von Dioxus wurden umfassende Verbesserungen eingeführt.
    • Unterstützung für Hot Reloading von formatierten Strings, verschachtelten rsx-Blöcken, Komponenten-Props und einfachen Rust-Ausdrücken.
  • Überarbeitung der Autovervollständigung

    • Die Autovervollständigung für rsx! {} wurde erheblich verbessert.
    • Die Integration mit Rust-analyzer wurde verbessert, um eine bessere Autovervollständigungs-Erfahrung zu bieten.
  • Inline-WASM-Stack-Traces und Tracing-Integration

    • Bietet Tracing-Integration für WASM-Apps, um Panics und Logs zu erfassen und an das Terminal zu senden.
  • Toasts und Ladebildschirme

    • Bietet einen Ladebildschirm, der den Build-Fortschritt während der Entwicklung von Web-Apps anzeigt, sowie Toasts, die den Build-Status darstellen.
  • Full-Stack für Desktop und Mobile

    • Integriert native Apps und Server Functions, sodass Server Functions auf Desktop- und Mobile-Zielen standardmäßig funktionieren.
  • Stabilisierung des Manganis-Asset-Systems

    • Das neue Asset-System Manganis wurde stabilisiert, und verschiedene Bugs sowie Performance-Probleme wurden behoben.
  • Suspense und HTML-Streaming

    • Führt Suspense Boundaries als neue zentrale Primitive für asynchrone UI ein.
    • Dioxus Fullstack streamt jede Suspense Boundary vom Server und liefert jeden Chunk aus, ohne auf das Laden der gesamten Seite zu warten.
  • Static Site Generation und ISG

    • Verbessert SEO und verkürzt die Ladezeiten für Nutzer durch Unterstützung für Static Site Generation und Incremental Static Generation.
  • Dokumentelemente: Title {}, Link {}, Stylesheet, Meta {}

    • Bietet spezielle Elemente zur Interaktion mit dem HTML-Dokumentobjekt, sodass sich Dokumenteigenschaften ohne zusätzliches JavaScript setzen lassen.
  • Fehlerbehandlung mit Fragezeichen

    • Element wurde nun von Option auf Result umgestellt, sodass die übliche Fehlerbehandlung von Rust in Komponenten verwendet werden kann.
  • Synchrones prevent_default

    • Die Verarbeitung aller Events wurde so verbessert, dass sie synchron erfolgen kann und das Attribut dioxus_prevent_default nicht mehr erforderlich ist.
  • onresize- und onvisible-Event-Handler

    • Bietet spezielle Handler zur Verfolgung von Größe und Sichtbarkeit von Elementen, sodass sich reichhaltige Interaktionen ohne JavaScript umsetzen lassen.
  • Hybrides WGPU-Overlay

    • Über die Funktion „Child Windows“ von Dioxus Desktop lassen sich native Dioxus-Apps als Overlay in bestehende Fenster integrieren.
  • Unterstützung für Web-, iOS- und Android-Bundles

    • Fügt Web- und Mobile-Unterstützung zu dx bundle hinzu, sodass für verschiedene Ziele gebündelt werden kann.
  • JSON-Ausgabe für CI / CLI

    • Bietet einen JSON-Ausgabemodus der CLI, um Logging im JSON-Format zu erhalten.
  • Neue Starter-Templates

    • Bietet drei neue Starter-Templates für plattformübergreifende Apps.
  • Nightly-Dokumentation, Tutorials und neue Guides

    • Dokumentation und Tutorials wurden umfassend überarbeitet, um Grundlagen abzudecken und einen Schwerpunkt auf Deployment zu setzen.
  • Vorschau auf In-Place-Binary-Patching

    • Es wird an einem Experiment gearbeitet, um Hot Reloading für Rust-Code hinzuzufügen.
  • Kleine Änderungen

    • Enthält verschiedene kleinere Änderungen wie Unterstützung für die System Tray, benutzerdefinierte Event Loops, die Trennung von dioxus-document und dioxus-history sowie eine vereinfachte eval API.
  • Upgrade von 0.5 auf 0.6

    • Es gibt einige API-Änderungen, die sich in den meisten Fällen jedoch leicht beheben lassen.
  • Fazit

    • Dieses Release behebt viele Probleme und verbessert zahlreiche Funktionen, wodurch Dioxus 0.6 zum bislang ausgereiftesten Release wird.
    • Künftig will man sich stärker auf Tutorial-Videos, Dokumentation, Bugfixes, Performance-Verbesserungen und die Zusammenarbeit mit der Community konzentrieren.

3 Kommentare

 
devsepnine 2024-12-17

Ich habe in letzter Zeit Tauri verwendet, aber das sollte ich auch mal ausprobieren.

 
GN⁺ 2024-12-13
Hacker-News-Kommentare
  • Ein Nutzer teilte seine Erfahrung mit dem Ausprobieren des neuen Releases: Er erstellte ein Projekt mit cargo install und führte dx serve aus, stieß dabei jedoch auf Compiler-Fehler. Er meint, mit einem standardmäßigen Rust-Workflow wäre das Debugging einfacher gewesen. Mit v lassen sich ausführliche Logs aktivieren, diese lieferten jedoch keine zusätzlich klaren Informationen.

  • Ein anderer Nutzer erwähnte, dass er alle sechs Monate Rust-GUI-Frameworks ausprobiert, beim Herunterladen von Demos oder Playgrounds jedoch auf Fehler stößt. Er ist der Meinung, dass man langfristige Investitionsentscheidungen sorgfältig treffen sollte.

  • Es wird erwähnt, dass Dioxus das einzige Webplattform-Tool sei, das Cross-Plattform-Funktionalität mit minimalem Einsatz von JavaScript bieten könne. Die Fortschritte des WGPU-Rendering-Stacks werden positiv bewertet.

  • Es wird erwähnt, dass Dioxus ein schwaches Ökosystem habe und es an Komponentenbibliotheken fehle. Auch vom Virtual DOM sei man nicht überzeugt. Der Konkurrent Leptos werde beobachtet und genutzt.

  • Dioxus wird serverseitig eingesetzt, und die Art, Komponenten zu schreiben, sowie die Developer Experience werden als sehr gut bewertet.

  • Nachdem Lustre entdeckt und übernommen wurde, wolle man außer The Elm Architecture nichts anderes mehr verwenden. Mit Rusts Iced werde derzeit ein Prototyp für einen Szenario-Editor gebaut; da System76 damit Cosmic entwickelt, habe man Vertrauen darin.

  • Das neue Technologie-Framework wird als das vielversprechendste bewertet; falls es erfolgreich ist, könnte es alle anderen Frameworks ersetzen. Der Fokus liege auf Performance, und Rust liefere die Grundlage für Sicherheit und Performance.

  • Es wird erwähnt, dass Dioxus Venture Capital erhalten habe, weshalb man vorsichtig sein sollte, bevor man seine Zukunft darauf aufbaut. Es gebe zu wenige Informationen darüber, ob eine Copyright-Abtretung oder ein CLA erforderlich sei und wie viele Mitwirkende bezahlt würden.

  • Es wird vorgeschlagen, den Kontrast des Post-Titels zu verbessern, damit er besser zum Seitenhintergrund passt. Außerdem wird nach einem Vergleich mit dem aktuellen Stand von Qt, dessen Zugänglichkeit und dem Umgang mit HiDPI-Bildschirmen gefragt. Es wird angemerkt, dass es an hochwertigen Bindings für andere Sprachen als C++ und Python fehle und Qt mit besseren Bindings und Tools populärer sein könnte.

  • Die neue Hot-Reloading-Funktion wird als erstaunlich bewertet; bei anderen Rust-Web-Frameworks sei das Warten auf UI-Updates ein großes Problem gewesen.