-
Rilis Dioxus 0.6
- Dioxus adalah framework berbasis Rust yang memungkinkan pembuatan aplikasi web, desktop, dan mobile dengan satu codebase tunggal
- Bertujuan menjadi framework yang lebih baik daripada Flutter
- Berfokus pada dukungan web full-stack dan komunikasi server/klien yang type-safe, dengan penekanan pada performa cepat dan peningkatan pengalaman pengembang
- Rilis 0.6 kali ini berfokus pada kemudahan penggunaan Dioxus, peningkatan pengalaman pengembang, dan perbaikan bug
-
Peningkatan fitur utama
- Dukungan simulator mobile: Menambahkan kemampuan untuk menjalankan aplikasi di simulator dan perangkat Android maupun iOS.
- Magic hot reloading: Mendukung hot reloading untuk string berformat, atribut, dan
rsx!{} yang bersarang.
- CLI interaktif: Menulis ulang Dioxus CLI dengan UX baru untuk meningkatkan kemudahan penggunaan.
- Inline stack trace: Menangkap panic dan log WASM langsung ke terminal.
- Native server function: Mendukung inline server RPC untuk aplikasi desktop dan mobile.
-
Peningkatan pengalaman pengembang
- Toast dan layar pemuatan: Menambahkan toast dan layar pemuatan baru saat pengembangan aplikasi web.
- Peningkatan autocomplete: Fitur autocomplete di RSX ditingkatkan secara besar-besaran.
- Stabilisasi sistem aset: Menstabilkan sistem aset berbasis tautan yang terintegrasi untuk aplikasi native.
- Streaming HTML: Mendukung streaming suspense dan error boundary dari server ke klien.
- SSG dan ISG: Mendukung static site generation dan incremental static regeneration.
- Penanganan error: Menangani error di event handler, task, dan komponen dengan menggunakan
?.
- Elemen meta: Menambahkan elemen Head, Title, Meta, dan Link baru untuk mengatur properti dokumen.
prevent_default sinkron: Menangani event secara sinkron di semua platform.
- Event handler
onresize: Melacak ukuran elemen tanpa IntersectionObserver.
- Event handler
onvisible: Melacak visibilitas elemen tanpa IntersectionObserver.
- Integrasi WGPU: Merender Dioxus sebagai overlay di atas surface WGPU dan child window.
- Bundle
dx: Dukungan bundle dx lengkap untuk web, iOS, dan Android.
- Mode JSON: Menghasilkan pesan CLI dalam JSON agar dapat digunakan oleh tool pihak ketiga dan pipeline CI/CD.
- Template baru: Tiga template awal baru untuk aplikasi lintas platform.
- Tutorial dan panduan nightly: Tutorial dan panduan baru untuk Dioxus 0.6 dan versi setelahnya.
- Prototipe binary patching: Prototipe engine hot reloading baru berbasis Rust murni.
-
Informasi rilis
- Dioxus 0.6 adalah rilis terbesar, dengan lebih dari 350 pull request digabungkan dan ratusan issue diselesaikan.
- Bertujuan meningkatkan kualitas hot reloading, autocomplete, dan asset bundling secara signifikan.
- Bertujuan membuat Dioxus CLI lebih tangguh dan lebih mudah digunakan.
- Bertujuan menghadirkan dukungan mobile kelas satu dengan mengintegrasikan tool mobile langsung ke dioxus CLI.
-
Alat baris perintah interaktif
- Dioxus 0.6 menghadirkan pengalaman CLI yang sepenuhnya diperbarui.
- CLI baru mendukung progress bar langsung, animasi, sistem filter interaktif, serta kemampuan mengubah level log secara real-time.
-
Dukungan Android dan iOS
- Di Dioxus 0.6, dioxus CLI kini mendukung
dx serve --platform ios/android secara bawaan.
- Memberikan dukungan kelas satu untuk platform mobile, dan target simulator Android maupun iOS mendukung fitur yang sama seperti desktop.
-
Perombakan engine hot reloading
- Memperkenalkan peningkatan besar pada engine hot reloading Dioxus.
- Mendukung hot reloading untuk string berformat, blok
rsx bersarang, properti komponen, dan ekspresi Rust sederhana.
-
Perombakan fitur autocomplete
- Fitur autocomplete untuk
rsx! {} ditingkatkan secara besar-besaran.
- Meningkatkan integrasi dengan Rust-analyzer untuk menghadirkan pengalaman autocomplete yang lebih baik.
-
Inline WASM stack trace dan integrasi tracing
- Menyediakan integrasi tracing untuk aplikasi WASM agar dapat menangkap panic dan log lalu mengirimkannya ke terminal.
-
Toast dan layar pemuatan
- Menyediakan layar pemuatan yang menampilkan progres build serta toast yang menunjukkan status build selama pengembangan aplikasi web.
-
Full-stack desktop dan mobile
- Mengintegrasikan aplikasi native dan server function sehingga server function bekerja secara bawaan pada target desktop dan mobile.
-
Stabilisasi sistem aset Manganis
- Menstabilkan sistem aset baru Manganis serta memperbaiki berbagai bug dan masalah performa.
-
Suspense dan streaming HTML
- Memperkenalkan suspense boundary sebagai primitive inti baru untuk UI asinkron.
- Dioxus full-stack melakukan streaming setiap suspense boundary dari server, sehingga tiap chunk dapat dikirim tanpa menunggu seluruh halaman dimuat.
-
Static site generation dan ISG
- Mendukung static site generation dan incremental static generation untuk meningkatkan SEO dan mempercepat waktu muat pengguna.
-
Elemen dokumen: Title {}, Link {}, Stylesheet, Meta {}
- Menyediakan elemen khusus yang dapat berinteraksi dengan objek dokumen HTML sehingga properti dokumen bisa diatur tanpa JavaScript tambahan.
-
Penanganan error dengan tanda tanya
Element kini beralih dari Option ke Result, sehingga penanganan error umum Rust dapat digunakan di dalam komponen.
-
prevent_default sinkron
- Ditingkatkan agar semua penanganan event dapat dilakukan secara sinkron, sehingga atribut
dioxus_prevent_default tidak lagi diperlukan.
-
Event handler onresize dan onvisible
- Menyediakan handler khusus untuk melacak ukuran dan visibilitas elemen, sehingga interaksi kaya dapat diimplementasikan tanpa JavaScript.
-
Overlay WGPU hibrida
- Melalui fitur "child window" di Dioxus desktop, aplikasi native Dioxus dapat diintegrasikan sebagai overlay di atas jendela yang sudah ada.
-
Dukungan bundle web, iOS, dan Android
- Menambahkan dukungan web dan mobile ke
dx bundle, sehingga dapat melakukan bundling untuk berbagai target.
-
Output JSON untuk CI / CLI
- Menyediakan mode output JSON di CLI sehingga logging dapat diterima dalam format JSON.
-
Template awal baru
- Menyediakan tiga template awal baru untuk aplikasi lintas platform.
-
Dokumentasi nightly, tutorial, dan panduan baru
- Melakukan perombakan besar pada dokumentasi dan tutorial agar mencakup hal-hal dasar dan berfokus pada deployment.
-
Pratinjau in-place binary patching
- Melakukan eksperimen untuk menambahkan hot reloading pada kode Rust.
-
Perubahan kecil
- Mencakup berbagai perubahan kecil seperti dukungan system tray, custom event loop, pemisahan
dioxus-document dan dioxus-history, serta penyederhanaan API eval.
-
Upgrade dari 0.5 ke 0.6
- Ada beberapa perubahan API, tetapi dalam kebanyakan kasus dapat diperbaiki dengan mudah.
-
Kesimpulan
- Rilis ini menyelesaikan banyak masalah dan meningkatkan berbagai fitur, menjadikan Dioxus 0.6 sebagai rilis yang paling matang.
- Ke depan, fokusnya adalah pada pembuatan video tutorial, penulisan dokumentasi, perbaikan bug, peningkatan performa, dan kolaborasi dengan komunitas, alih-alih menambah fitur baru.
3 komentar
Akhir-akhir ini saya sedang memakai tauri, sepertinya yang ini juga perlu saya coba.
Dioxus - pustaka UI lintas platform untuk Rust yang terinspirasi oleh React
Dioxus 0.5 - aplikasi web, desktop, dan mobile yang dikembangkan dengan Rust
Opini Hacker News
Seorang pengguna membagikan pengalamannya mencoba rilis baru ini, menyebut bahwa ia membuat proyek dengan
cargo installdan menjalankandx serve, tetapi mengalami error compiler. Ia merasa bahwa jika alur kerja Rust standar digunakan, proses debugging akan lebih mudah. Menekanvdapat mengaktifkan log yang lebih rinci, tetapi tidak memberikan informasi tambahan yang jelas.Pengguna lain menyebut bahwa ia mencoba framework GUI Rust setiap 6 bulan, tetapi mengalami error saat mengunduh demo atau playground. Ia merasa keputusan untuk investasi jangka panjang harus dipertimbangkan dengan hati-hati.
Disebutkan bahwa Dioxus adalah satu-satunya alat teknologi platform web yang dapat menyediakan kemampuan lintas platform dengan penggunaan JavaScript seminimal mungkin. Perkembangan stack rendering WGPU dinilai positif.
Disebutkan bahwa Dioxus kekurangan ekosistem dan tidak memiliki library komponen. Keyakinan terhadap virtual DOM juga masih kurang. Ia mengikuti dan menggunakan pesaingnya, Leptos.
Disebutkan bahwa Dioxus sedang digunakan di sisi server, dan cara menulis komponen serta pengalaman pengembangnya dinilai sangat baik.
Setelah menemukan dan mengadopsi Lustre, disebutkan bahwa ia tidak berniat menggunakan apa pun selain The Elm Architecture. Ia sedang membangun prototipe editor skenario dengan Rust Iced, dan mempercayainya karena digunakan oleh System76 untuk membangun Cosmic.
Framework teknologi baru ini dinilai paling menjanjikan, dan jika berhasil, disebut dapat menggantikan semua framework lainnya. Fokusnya ada pada performa, dan Rust menyediakan fondasi untuk keamanan serta performa.
Disebutkan bahwa karena Dioxus telah menarik modal ventura, perlu berhati-hati sebelum mempertaruhkan masa depan padanya. Informasi tentang apakah diperlukan pengalihan hak cipta atau CLA, serta berapa banyak kontributor yang dibayar, dinilai masih kurang.
Disarankan agar kontras judul posting lebih ditingkatkan agar lebih selaras dengan latar belakang halaman. Ditanyakan juga perbandingannya dengan posisi Qt saat ini, aksesibilitas, dan penanganan layar HiDPI. Disebutkan bahwa binding berkualitas untuk bahasa selain C++ dan Python masih kurang, dan jika ada binding serta alat yang lebih baik, Qt akan lebih populer.
Fitur hot reloading baru dinilai luar biasa, dan disebutkan bahwa menunggu pembaruan UI di framework web Rust lain merupakan masalah besar.