3 puan yazan GN⁺ 2024-03-29 | 1 yorum | WhatsApp'ta paylaş

Dioxus 0.5: sinyallerin yeniden yazımı, lifetime'ların kaldırılması, CSS hot reloading ve daha fazlası

  • Dioxus Labs'te yılda yalnızca bir yeniden yazıma izin veren gayriresmî bir kural var.
  • Dioxus, Rust ile GUI oluşturmak için kullanılan bir kütüphane ve başlangıçta Yew'in yeniden yazımı olarak ortaya çıktı.
  • Dioxus 0.5, topluluğun talepleri doğrultusunda daha basit, daha sağlam ve daha rafine bir yöne evrildi.

Yeni özellikler

  • dioxus-coreun tamamen yeniden yazılmasıyla tüm unsafe kod kaldırıldı.
  • use_state ve use_ref kullanmadan, kopyasız Signal tabanlı API'ye geçildi.
  • Tüm lifetime'lar ve cx: Scope durumu kaldırıldı.
  • Tüm platformlarda uygulama başlatmak için tek bir launch fonksiyonu eklendi.
  • Tailwind ve Vanilla CSS destekli varlık hot reloading özelliği sunuldu.
  • Etkinlik sisteminin yeniden yazılmasıyla her platformun yerel WebSys etkinlik türlerine erişim mümkün oldu.
  • Bileşen genişletme ile öğe nitelikleri eklenebiliyor (ör. Link artık tüm <a/> niteliklerini alabiliyor).
  • Birleşik error boundary'ler ile sunucu future'ları ve Suspense entegrasyonu eklendi.
  • Masaüstünde uzlaştırma hızı 5 kat arttı ve bayt akışı için özel varlık işleyicileri eklendi.
  • Sunucu fonksiyonu akışı ve tam yığın hot reloading desteği geldi.
  • Çok sayıda QoL iyileştirmesi, hata düzeltmesi ve daha fazlası yapıldı.

Lifetime sorunu

  • Dioxus'u daha basit hale getirmek için tüm lifetime'lar kaldırıldı.
  • Lifetime sorunları Rust'a yeni başlayanları kolayca korkutuyor ve deneyimli Rust geliştiricileri için bile kafa karıştırıcı olabiliyor.
  • Dioxus 0.5, lifetime'ları ve Scopeu kaldırıp Copy durum yönetimi çözümü olan sinyalleri tanıtıyor.

Scope ve lifetime'ların kaldırılması

  • Yeni sürümde scope'lar ve 'bump lifetime'ı kaldırıldı.
  • Bileşen tanımlamak ve bileşen içindeki çalışma zamanı fonksiyonlarını kullanmak çok daha kolay hale geldi.

Tüm unsafe kodun kaldırılması

  • 'bump lifetime'ı ve scope'ların kaldırılmasıyla çok miktarda unsafe kod temizlendi.
  • dioxus-core 0.5 içinde unsafe kod bulunmuyor.

Sinyaller (Signals)

  • Sinyaller, bileşenlerde temel durum yapı taşı olarak tanıtıldı.
  • Signal<T>, içindeki T değeri olmasa bile Copy özelliğine sahip.
  • Sinyaller daha akıllı abonelik sağlar; böylece yalnızca sinyali okuyan bileşenler yeniden render edilir.

CSS hot reloading

  • CSS dosyaları için hot reloading desteği geldi; dx CLI dosyaları izliyor ve güncellemeleri uygulamaya anında akıtıyor.

Etkinlik sisteminin yeniden yazılması

  • Dioxus 0.5, her platformun yerel etkinlik türlerini dışa açıyor ve platformlar arası API sağlayan trait'ler sunuyor.

Çapraz platform çıkışı

  • Yeni çapraz platform API sayesinde aynı uygulamayla birden fazla platformu hedeflemek kolaylaşıyor.

Varlık sistemi beta

  • Yeni varlık sistemi manganis, CLI ile entegre çalışarak uygulama içindeki varlıkları doğruluyor, paketliyor ve optimize ediyor.

Masaüstü render hızında 5 kat artış

  • Render performansını artırmak için çeşitli optimizasyonlar uygulandı.

Nitelik genişletme

  • Belirli öğelere ek işlev kazandırırken kullanışlı oluyor.

Nitelik kısaltma

  • Nitelikleri öğelere ve bileşenlere aktarırken nitelik kısaltma sözdizimi kullanılabiliyor.

Çok satırlı nitelik birleştirme

  • Koşullu nitelikleri kolayca oluşturabilmek için nitelik birleştirme özelliği eklendi.

Sunucu fonksiyonu akışı

  • Sunucu fonksiyonlarının istemciye veri akıtabilmesi destekleniyor.

Full-stack CLI platformu

  • dx komutu kullanılarak full-stack uygulamalar sunulabiliyor.

LiveView router desteği

  • LiveView uygulamalarında router doğrudan çalışıyor.

Özel varlık işleyicileri

  • Masaüstünde özel varlık işleyicileri destekleniyor; böylece tarayıcıya veriler verimli biçimde akıtılabiliyor.

Yerel dosya işleme

  • Masaüstünde dosya sürükleyip bırakma düzgün şekilde destekleniyor.

Hata işleme

  • Error boundary'ler ve throw trait'i ile uygulamalarda hataları yönetmek kolaylaşıyor.

Varsayılan hot reloading ve masaüstü için "geliştirme" modu

  • Hot reloading varsayılan olarak etkinleştirildi ve masaüstü uygulama geliştirme deneyimi büyük ölçüde iyileştirildi.

Dioxus şablon güncellemeleri

  • Yeni çekirdek ekip üyesi Miles, belgeleri ve şablonları kapsamlı biçimde yeniledi.

Dioxus-Community ve Dioxus-std

  • Dioxus Community, önemli ekosistem crate'lerini 0.5 sürümüne uygun olacak şekilde güncelledi.

Yakında gelecek özellikler

  • Varlık sisteminin kararlı hale gelmesi ve entegrasyonu, .wasm için bundle splitting, Islands ve devam ettirilebilir etkileşimler, sunucu bileşenleri, geliştirilmiş geliştirici araçları, mobil ve full-stack tarafında yeniden yapılanma gibi yenilikler yolda.

Dioxus-Blitz'in geri dönüşüne ön bakış

  • "Blitz 2.0" ile Servo entegre edilerek WGPU üzerinden Firefox'u çalıştıran aynı CSS motoruyla yerel render alma mümkün olacak.

Nasıl katkı verilir

  • Belge çevirisi, "good first issue" denemeleri, belgeleri iyileştirme, CLI'ye katkı, Discord topluluğunda soruları yanıtlama gibi alanlarda katkı sunulabilir.

GN⁺ görüşü

  • Dioxus 0.5, Rust tabanlı GUI geliştirme için önemli bir güncelleme ve geliştiricilere daha kolay ve güvenli bir geliştirme ortamı sunuyor.
  • Lifetime ve scope'ların kaldırılması, Rust geliştirmedeki karmaşıklığı azaltırken Signal tabanlı API durum yönetimini daha da basitleştiriyor.
  • CSS hot reloading ve etkinlik sistemindeki iyileştirmeler, frontend geliştirmede üretkenliği artırmaya katkı sağlayacak.
  • Hot reloading ve çapraz platform launch özellikleri, geliştiricilerin farklı platformlarda tutarlı bir geliştirme deneyimi yaşamasını sağlıyor.
  • Bu değişimlerin Rust ve web geliştirme topluluğu üzerinde olumlu etki yaratması bekleniyor; özellikle Rust ile web ve masaüstü uygulamaları geliştirenler için faydalı olacak.

1 yorum

 
GN⁺ 2024-03-29
Hacker News görüşleri
  • Dioxus 0.5 sürümündeki değişikliklere dair ilk kullanıcının deneyimi

    • Geçen yıl Dioxus kullanarak bir Mastodon istemcisi yaptım; genel olarak iyi bir deneyimdi ama hâlâ eksik çok şey vardı.
    • Dioxus 0.5 sürümündeki değişikliklerle, geliştiricinin karşılaştığı karmaşıklığın büyük kısmı ortadan kaldırılmış görünüyor; özellikle lifetime'ların kaldırılması ve bitmek bilmeyen cloning sorununun çözülmesiyle daha keyifli bir geliştirme deneyimi bekleniyor.
    • Yeni sürümü henüz denemedim ama ekibin emeğini tebrik ediyorum.
  • SVG desteği hakkında soru

    • Kullanıcı, SVG ile etkileşim kurulup kurulamayacağını; örneğin Sudoku'yu SVG olarak çizip her hücreye tıklanıp tıklanamayacağını merak ediyor.
  • Rust programlamaya duyulan merak ve generational-box crate'inin nasıl çalıştığına dair soru

    • Rust programcısı değilim ama generational-box crate'inin değerleri kopyalamadan nasıl tuttuğunu ve bunun güvenli olup olmadığını açıklayabilir misiniz?
  • Dioxus ile Freenet ana sayfası geliştirme deneyimi

    • Kullanıcı, Dioxus kullanarak Freenet'in dağıtık ana sayfasını geliştiriyor; bu, insanların Freenet'i kurarken ilk göreceği dağıtık web sitesi olacak.
    • Kotlin web framework'ü Kweb'e benzer state yönetimi ve koddan HTML'e eşleme yapan DSL yaklaşımı hakkında olumlu bir izlenim edinmiş.
  • Dioxus'un React'in başarılı yönlerini yakalaması ve buna yenilik eklemesi hakkındaki değerlendirme

    • Kullanıcı, Dioxus'un React'in başarılı unsurlarını yakalayıp bunların üstüne yenilik koyarak çok hızlı ilerlemesinden büyük heyecan duyuyor.
    • Ekibi tebrik ediyor ve bu sürümdeki signals özelliğini denemeyi sabırsızlıkla bekliyor.
  • SwiftUI ile karşılaştırıldığında RSX hakkındaki görüş

    • Kullanıcı, RSX yerine SwiftUI'ye daha yakın bir şeyi tercih ediyor ve React/JSX'in 2024'te "reaktif UI" kodunun nasıl görünmesi gerektiğine dair kendi vizyonuyla uyuşmadığını söylüyor.
    • SwiftUI kusursuz değil ama React kullanırkenkinden daha temiz organize edilmiş ve bölümlenmiş bir kod yapısı sunduğunu düşünüyor.
    • JSX kullanmanın ana avantajı, web için yapılmış mevcut kütüphaneleri yeniden kullanabilmek; ancak RSX'in, geliştiricinin JSX'e dair kavramsal bilgisini RSX'e aktarmasına izin vermesi dışında neredeyse hiç "aktarılabilir değer" sunmadığını savunuyor.
    • Kullanıcı, "SwiftUI but cross-platform" türü bir projenin olmamasından yakınıyor; Tokamak/TokamakUI'den bahsediyor ancak bunun henüz tamamlanmadığını ve etkinliğinin azalmış göründüğünü belirtiyor.
  • Dioxus'ta lifetime'ların kaldırılmasıyla ilgili endişe

    • Kullanıcı, Dioxus'ta lifetime'ları kaldıran çözüm konusunda kafasının karışık olduğunu ve bunun performansı nasıl etkilediğini merak ediyor.
  • Web component'lerle entegrasyon hakkında soru

    • Kullanıcı, Yew kullanırken Shoelace component'lerini düzgün çalıştırmakta zorlandığını ve projeyi başka bir Rust framework'üyle yeniden denemek istediğini söylüyor.
  • Native uygulama render etme yöntemi hakkında soru

    • Kullanıcı, Dioxus'un native uygulamaları bir tarayıcı örneği içinde mi render ettiğini merak ediyor.