Tauri 2.0 resmi olarak yayınlandı
(v2.tauri.app)- Tauri, tüm büyük masaüstü (macOS, Linux, Windows) ve mobil (iOS, Android) platformlar için küçük ve hızlı ikili dosyalar oluşturmayı sağlayan bir framework
- HTML, JavaScript ve CSS’ye derlenen her türlü frontend framework’ünü entegre edebilir; gerektiğinde backend mantığı için Rust, Swift, Kotlin gibi dilleri kullanabilirsiniz
- Kapsamlı bir JavaScript API sunar; bu nedenle çoğu durumda Rust, Swift veya Kotlin ile kod yazmanız gerekmez
Tauri ne zaman kullanılmalı?
- Tüm platformlar için tek bir UI kod tabanı istiyorsanız
- Mümkün olduğunca çok kullanıcıya kendi platformlarında (ör. Windows, macOS, Linux, Android, iOS) ulaşmak istiyorsanız
- Bir frontend web geliştiricisiyseniz ve native uygulamalar yazmak istiyorsanız
- Bir Rust geliştiricisiyseniz ve isterse Rust ile de yazabileceğiniz, harika bir UI’ye sahip uygulamalar geliştirmek istiyorsanız
- Bir web geliştirici ekibiniz varsa ve düşük başlangıç yatırımıyla native uygulama pazarına açılmak istiyorsanız
- Bir Rust geliştirici ekibiniz varsa ve her şeyi Rust ile yazmak istiyorsanız
2.0’ın avantajları ve iyileştirmeleri
Başlangıç deneyiminin iyileştirilmesi
- Geliştirici deneyimine (DX) önem veriyor ve bu ilk süreci, nihai uygulamayı oluşturup dağıtmak kadar akıcı hale getirmeye çalışıyor
- create-tauri-app (CTA) adlı bir proje oluşturarak geliştiricilerin sıfırdan başlayıp saatler değil dakikalar içinde çalışan bir Tauri uygulaması elde etmesini sağlıyor
Hot-Module Replacement
- 1.x döneminde geliştirme sürecini iyileştirmek için zaten düşünülen hot module replacement (HMR), artık mobil cihazlara ve emülatörlere de genişletildi
- Uygulamanın frontend’inde yapılan tüm değişiklikler için tüm uygulamayı yeniden derlemeye gerek kalmıyor; geliştirme yapılan cihazda veya işletim sisteminde nasıl görüneceğini gerçek zamanlı olarak önizleyebilirsiniz
Eklentiler
- Tauri 2.0 ile daha gelişmiş bir eklenti sistemi kuruldu. Önceki işlevlerin büyük bölümü resmi eklentilere taşındı; böylece topluluğun Tauri’ye katkı sunması kolaylaştı
- Eklenti sistemi mobil eklentileri de destekliyor. iOS’ta Swift, Android’de Kotlin ile native kod yazabilir veya yeniden kullanabilir; açıklamalar (
@Commandon Android) kullanabilir ya da alt sınıf (YourPluginClass: Pluginon iOS) uygulayabilir veya Rust tabanlı Tauri komutlarından Swift ya da Kotlin kodu çağırarak işlevleri doğrudan Tauri frontend’ine açabilirsiniz - Sunulan resmi eklentiler Tauri’nin ana sürümünü takip eder
- Autostart: Uygulamayı sistem açılışında otomatik çalıştırma
- Barcode Scanner: Mobil uygulamalarda QR kod, EAN-13 ve benzeri barkodları tarama
- Biometric: Android ve iOS’ta biyometrik kimlik doğrulama istemi
- Clipboard: Sistem panosuna okuma ve yazma
- Command Line Interface (CLI): Komut satırı arayüzünde argüman ayrıştırma
- Deep Linking: Tauri uygulamasını URL’ler için varsayılan işleyici olarak ayarlama
- Dialog: Dosya açma ve kaydetme, mesaj kutuları için native sistem diyalogları
- File System: Dosya sistemine erişim
- Global Shortcut: Global kısayol kaydetme
- HTTP Client: Rust ile yazılmış HTTP istemcisine erişim
- Localhost: Prodüksiyon uygulamalarında localhost sunucusu kullanımı
- Logging: Yapılandırılabilir loglama
- NFC: Android ve iOS’ta NFC etiketlerini okuma ve yazma
- Notifications: Kullanıcılara native bildirim gönderme
- OS Information: İşletim sistemi hakkında bilgi okuma
- Persisted Scope: Çalışma zamanındaki kapsam değişikliklerini dosya sisteminde kalıcı tutma
- Positioner: Pencereyi yaygın konumlara taşıma
- Process: Geçerli sürece erişim
- Shell: Dosya ve URL’leri varsayılan uygulamalarla yönetmek ve alt süreçler oluşturmak için sistem shell’ine erişim
- Single Instance: Aynı anda yalnızca tek bir Tauri uygulaması örneğinin çalışmasını sağlama
- SQL: sqlx üzerinden frontend’in SQL veritabanlarıyla iletişim kurmasını sağlayan Tauri eklentisi
- Store: Kalıcı anahtar-değer depolama
- Stronghold: Şifreli güvenli veritabanı
- System Tray
- Updater: Tauri uygulamaları için uygulama içi güncelleme
- Upload: HTTP üzerinden dosya yükleme
- Websocket: JavaScript’ten Rust istemcisi kullanarak WebSocket bağlantısı açma
- Window Customization
- Window State: Pencere boyutu ve konumunu koruma
Allowlist’in sonu, yaşasın Allowlist
allowlistartık yok. Çünkü bu sistemin sınırlarına hızla ulaşılıyordu- Yalnızca Tauri çekirdek özellikleri için tasarlanmıştı, ancak Tauri’nin tüm API’lerini kapsamıyordu
- Yeni sistem yalnızca Tauri’nin tüm çekirdek API yüzeyini kapsamakla kalmıyor, aynı zamanda uygulama ve eklenti geliştiricilerinin birleşik bir yaklaşımla kendi erişim kontrollerini ve kapsamlandırmalarını uygulamasına da olanak tanıyor
permissions- "Tauri komutları için aç/kapat anahtarı",scopes- "Tauri komutları için parametre doğrulama",capabilities- "Windows ve WebView’e izinler ile kapsamları bağlama" kullanılarak esnek ama kullanımı kolay bir erişim kontrol sistemi oluşturuldu- Adlandırılmış izin veya kapsam dosyaları oluşturabilir, bunları başka adlandırılmış izinler ya da kapsamlarla yeniden kullanabilir ve birleştirebilirsiniz
- Bu sayede, birden fazla basit ya da karmaşık izin ve kapsam içeren daha ayrıntılı ve açıklayıcı kümeler oluşturmak mümkün
- Bu ek işlev sayesinde Tauri çekirdeği artık frontend WebView’den gelen komut çağrısı mesajının komut fonksiyonuna ulaşmasına izin verilip verilmeyeceğini anlayabiliyor
Süreçler arası iletişimin (IPC) yeniden yazılması
- IPC katmanı yeniden yazıldı; böylece uzun süredir istenen Raw Payload özelliği destekleniyor ve sistemin iç işleyişi değişiyor
- Önceden tüm IPC payload’ları JSON olarak serileştirilip geri çözümleniyordu; bu da ek yük oluşturuyordu. Özellikle frontend ile backend arasında birkaç kilobayttan fazla veri taşındığında bu durum fark edilir hale geliyordu
- Yeni sistem Raw Request’i destekliyor. Bu sayede ham baytlar doğrudan kullanılabiliyor veya kendi (de)serileştirme süreciniz (ör. bson, protobuf, avro vb.) kullanılarak backend’den frontend’e ya da ters yönde büyük veri aktarımı hızlandırılabiliyor
Dağıtım rehberi
- Tauri 2.0 ile mobil ekosistem ve topluluk katkıları sayesinde dağıtım çeşitliliği büyük ölçüde arttı
- Apple Appstore, Google Play, Microsoft Store, CrabNebula Cloud, Flathub, Snapcraft, AUR ve diğer dağıtım formatlarına nasıl dağıtım yapılacağını anlatan resmi rehberler dağıtım dokümantasyonuna dahil edildi
4 yorum
https://github.com/DioxusLabs/dioxus
Eğer sadece Rust ile geliştireceksem, bu daha iyi görünüyor. Ben de az önce öğrendim. Tauri'ye odaklanmayı düşünüyordum ama her şeyi yalnızca Rust adlı tek bir dille geliştirebildiğini duyunca bunu seçiyorum~* IPC'den daha hızlı şekilde native'e doğrudan erişim sağlanabildiği söyleniyor.
Dioxus - React'ten esinlenen Rust için UI kütüphanesi
Daha önce bunu bir kez paylaştığımda, sanırım 0.3 sürümü olduğu için biraz zorluklar olduğuna dair yorumlar vardı.
Dioxus 0.5: Rust ile geliştirilen web, masaüstü ve mobil uygulamalar
Şimdi 0.5 olduğuna göre, belki değişmiştir.
Gerçekten inanılmaz bir haber. Windows için yerel uygulama geliştirmede de faydalı olacak gibi görünüyor ve mobilde de gerçekten çok kullanışlı bir şekilde değerlendirilecek gibi duruyor.
IPC'nin baştan yazılması demek ha.... Video gibi büyük verileri göndermek için iyi olur gibi.