18 puan yazan GN⁺ 2025-10-28 | 1 yorum | WhatsApp'ta paylaş
  • Rust tabanlı GPUI framework ile çapraz platform masaüstü uygulamaları geliştirmeye yönelik bir UI bileşen kütüphanesi
  • 60'tan fazla yerel stil UI bileşeni sunuyor; macOS ve Windows tasarım anlayışını shadcn/ui'nin modern estetiğiyle birleştiriyor
  • Sanal tablo, yüksek performanslı kod editörü, Markdown/HTML render etme, grafik görselleştirme gibi zengin özellikleri yerleşik olarak içeriyor
  • Tema sistemi, çoklu dil desteği (i18n), dock düzeni gibi genişletilebilirlik ve özelleştirmeye odaklanan bir tasarıma sahip
  • Rust ekosisteminde Iced, egui, Qt gibi seçeneklerle karşılaştırıldığında modern UI stili ve büyük ölçekli veri işleme performansıyla ayrışıyor

Proje genel bakışı

  • gpui-component, Rust ile yazılmış bir çapraz platform masaüstü UI bileşen koleksiyonu ve GPUI render motoru üzerinde çalışıyor
  • Apache-2.0 lisansı

Başlıca özellikler

  • Zengin bileşen yapısı: 60'tan fazla UI öğesi içeriyor; buton, liste, tablo, grafik, editör gibi çeşitli bileşenler sunuyor
  • Yerel hissiyat veren tasarım: macOS ve Windows'un varsayılan kontrollerinden ilham alıp shadcn/ui stilini birleştirerek modern bir arayüz sunuyor
  • Sade kullanım: Durumsuz RenderOnce bileşen yapısıyla basit ve sezgisel kod yazımını mümkün kılıyor
  • Tema ve renk sistemi: Theme ve ThemeColor üzerinden çoklu tema ve değişken tabanlı yapılandırmayı destekliyor
  • Esnek düzen: Dock layout ile panel yerleşimi, yeniden boyutlandırma ve serbest döşemeli kurulum yapılabiliyor
  • Yüksek performanslı render: Virtualized Table/List ile büyük veri kümeleri de akıcı biçimde gösterilebiliyor
  • İçerik render etme: Markdown ve basit HTML için yerel destek sunuyor
  • Grafik özellikleri: Yerleşik grafiklerle veri görselleştirmesi yapılabiliyor
  • Kod editörü: 200 bin satıra kadar destekleyen LSP tabanlı yüksek performanslı kod editörü içeriyor
    • Tanılama, otomatik tamamlama, hover gibi özellikleri destekliyor
  • Sözdizimi vurgulama: Tree Sitter ile hem editörde hem de Markdown içinde sözdizimi vurgulama sağlıyor

Teknoloji yığını ve istatistikler

  • Dil dağılımı: Rust %98,2, Tree-sitter Query %0,8, HTML %0,2, Shell %0,2, Python %0,1, C %0,1
  • Depo metrikleri: 5.4k yıldız, 223 fork, 45'ten fazla katkıcı
  • En güncel sürüm: v0.3.1 (27 Ekim 2025)

Kısa değerlendirme

  • gpui-component, Rust ekosisteminde modern UI/UX ile yüksek performanslı render'ı birleştiren yeni bir masaüstü UI framework'ü olarak değerlendiriliyor
  • Mevcut Rust GUI framework'lerinin sınırlamalarını tamamlayarak büyük veri işleme, tema desteği, Markdown entegrasyonu gibi pratik geliştirme odaklı özellikler sunuyor
  • Gelecekte Rust tabanlı çapraz platform uygulama geliştirmenin standartlaşmış UI katmanı adaylarından biri olarak öne çıkıyor

1 yorum

 
GN⁺ 2025-10-28
Hacker News görüşü
  • Rust UI ekosisteminde bunun şimdiye kadar gördüğüm en olgun bileşen koleksiyonu gibi göründüğünü düşünüyorum
    Henüz neredeyse hiç kullanım örneği yok, ama dokümantasyon giderek daha iyi toparlanıyor
    Benzer derecede olgun başka bir örnek olarak fyrox-ui var. Ancak fyrox motorunun dışında neredeyse hiç kullanılmıyor
    Rust UI giderek olgunlaşıyor, ancak iced, egui, dioxus, slint gibi popüler framework'ler bileşen olgunluğu açısından hâlâ yetersiz görünüyor
    Güncellemek gerekirse, bu proje Rust UI ekosisteminde büyük bir ilerleme gösteriyor.
    Tüm bileşenleri görebileceğiniz widget galeri uygulamasını buradan çalıştırabilirsiniz — doğrudan cargo run --release ile mümkün

    • gpui, Zed Editor'dan ayrılmış bir proje olduğu için, gerçek kullanımının diğer Rust UI crate'lerinden çok daha fazla olduğunu tahmin ediyorum
    • Fyrox, Rust ile oyun geliştirme konusunda şüphe uyandıran bir örnek. En olgun motor olmasına rağmen kimse kullanmıyor. Buna karşılık insanlar yalnızca Bevy'nin ECS'sine heyecan duyuyor. Sonuçta asıl ilgi sistemin kendisindeydi, gerçekten oyun yapmakta değil gibi görünüyor
    • Rust UI framework'leri hâlâ hızla değişiyor, bu yüzden olgunlukları düşük görünüyor olabilir. Yine de momentumu kesinlikle var. Sadece benim deneyimim olsa da, Rust ile şimdiden kurumsal düzeyde UI yapabildim
    • Longbridge uygulamasını bizzat kurdum ve gerçekten yerel bir Mac uygulaması gibi doğal çalışıyor. Electron'dan çok daha akıcı çalışıyor
    • Widget galeri uygulaması etkileyici, ancak 900'den fazla bağımlılığı olması biraz endişe verici. GUI uygulamalarında bunun ne kadar normal olduğunu bilmiyorum
  • En basit örnek bile 1000'den fazla bağımlılığa sahip. GTK, GDK, pango gibi toolkit'lere bağımlı. Başka toolkit'lere de bağımlı olan bir yapı biraz garip geliyor

    • GNOME, server-side decoration uygulamadığı için libadwaita'ya bağımlı olmak gerekiyor. Sanırım tüm GTK ile ilgili bağımlılıkları sürükleyen şey bu
    • Linux'ta bu yapı yaygın. Üst seviye pencere ya da menüleri çizmek için GTK veya Qt kullanmak normal
    • Bence küçük ve birleştirilebilir 1000 bağımlılık, devasa tek bir kod tabanından daha iyi. Denetlemek (audit) çok daha kolay
    • Son zamanlarda Rust projelerinin giderek bu kadar büyümesi üzücü
  • Açık kaynağın birçok temel teknolojisinin trading/kripto şirketleri tarafından geliştiriliyor olması buruk hissettiriyor. Yine de topluma bir şeyler kazandırmaları olumlu

    • gpui'nin bakımını Zed.dev ekibi yapıyor ve Longbridge de Longbridge Pro uygulamasını geliştiren sıradan bir aracı kurum gibi görünüyor. Özellikle sorunlu görünen bir durum yok
    • Bitcoin ruhunun hacker kültürüne benzediğini düşünüyorum. Yani “bozuk olanı düzeltelim” tavrı. Kısa vadeli acı, uzun vadeli kazanca dönüşebilir
    • Rust ya da OCaml (Jane Street) gibi bazı ekosistemlerde böyle bir eğilim var, ama genel olarak bu iddia abartılı görünüyor
    • React'ı yapan Facebook, Cambridge Analytica skandalı ya da Rohingya soykırımı gibi olaylarla ilişkilendirildi. Bu açıdan bakınca, trading/kripto şirketlerinin açık kaynağa katkı vermesi ahlaken daha iyi bile sayılabilir
  • Bugünün “modern” UI toolkit'lerinde görsel UI editörü yok mu diye merak ediyorum
    Qt'de QtCreator veya QtDesigner gibi araçlarla sadece sürükle-bırak yaparak UI oluşturabiliyordunuz
    Ayrıca, Qt ile ilgili karşılaştırma tablosundaki bazı maddeler yanlış — örneğin minimum binary boyutu veya QSyntaxHighlighter açıklaması gibi

    • Slint gibi framework'ler Figma entegrasyonunu destekliyor; bu yüzden Qt Design Studio benzeri kullanılabiliyor. Eskinin yerel GUI tasarımcılarının ne kadar güçlü olduğu bugün pek bilinmiyor gibi
    • Olgun bir bileşen kütüphanesini temel alırsanız, böyle bir görsel editör Rust'ta da yapılabilir. XML/markup tabanlı yapıyı makrolarla bağlayıp canlı önizleme uygulaması yaparsanız Glade ya da XAML gibi çalışabilir
    • Qt'nin minimum boyutu aslında 20MB'den küçük, ama pratikte genelde 30~40MB civarında. Core, Gui, QML, Widget modüllerinin her biri yaklaşık 8MB, dolayısıyla Hello World için bile 2~3 tanesi gerekiyor
    • Qt Designer basit UI'larda fena değil, ama özel stillendirme uygulayınca hızla bozuluyor. Bu yüzden sonunda UI dosyalarını elle yazdım. Çok daha temiz ve küçük oldu
    • Qt6'nın tema desteklemediğini söylemek tamamen yanlış
  • Ne yazık ki bu bir framework. Yani kendi event loop'una sahip olmak zorunda
    Zaten başka bir loop'un olduğu ortamlarda entegrasyon zor. Buna karşılık egui, her frame'de çağrılan basit bir kütüphane tipi yapı

  • Görme engelliler için screen reader erişilebilirliğinin iyi çalışıp çalışmadığını merak ediyorum

    • Kendim çalıştırmadım ama resmî dokümantasyona göre ARIA standardını destekliyor. Gerekli etiketleri ve açıklamaları eklemek yeterli
    • Ama Zed Editor, screen reader için tamamen opak durumda. Bu yüzden beklentim yüksek değil
    • Yeni bir UI framework'üne baktığımda ilk sorduğum şey erişilebilirlik oluyor
  • Buradaki “yerel/native” ifadesinin web olmadığı anlamına mı geldiğini, yoksa işletim sisteminin varsayılan widget'larını kullanıp kullanmadığını merak ediyorum. Java dünyası da bu ayrımı çok yaşadı

    • Gerçek anlamda yerel uygulama yapabilen tek platform macOS. Linux GTK/Qt arasında bölünmüş durumda, Windows'ta ise o kadar çok framework karışıyor ki WebView bile yerel gibi görünebiliyor
    • Burada söylenen yerel, “web değil” anlamında. GPU API ile doğrudan çizim yapan bir yapı
    • Yani bu, yerel bir çalıştırılabilir dosya, ama OS widget'larını kullandığı anlamına gelmiyor
    • OS entegrasyonu yok, tamamen kendi render yaklaşımını kullanıyor
  • Bu framework'ün erişilebilirlik (a11y) uygulayıp uygulamadığını merak ediyorum. Rust UI'ları sık sık güzel görünüyor ama erişilebilirlik ihtiyacı çıkınca baştan yazmak gerekiyor

    • Erişilebilirlik önemliyse Dioxus değerlendirilebilir. Ama bu kadar olgun bir bileşen kütüphanesi henüz onda yok
    • GPUI, Zed ekibinin kurduğu temel üzerinde olsa da, screen reader açısından hâlâ opak. Erişilebilirlik önemliyse Slint veya Qt (cxx-qt) daha iyi olabilir; ayrıca System76 Iced'i benimsediği için o tarafta da gelişme olabilir
    • Erişilebilirlik uygulanmış durumda
  • Sanal listeler ve tablolar özelliği gerçekten harika. Birçok UI framework'ünde bunu kendiniz uygulamak zorunda kalıyordunuz, bu da can sıkıcıydı

  • Rust'ta çok sayıda GUI toolkit'i var ama yeniden kullanılabilir bileşen koleksiyonları eksik
    Bu koleksiyon faydalı görünüyor, ama çoğu web framework'ünün bileşen listesine benziyor. Yerel ortama özgü tek şey belki webview. Dosya açma iletişim kutusu gibi şeyler için rfd gibi harici kütüphaneler kullanmak gerekiyor; bu da stil tutarlılığını bozuyor

    • Stil tutarlılığının bozulması aslında iyi bir şey. Kullanıcılar uygulamalar arasında tutarlılık ister. Yani OS'nin yerel iletişim kutuları daha tanıdıktır. Blender ya da Photoshop gibi profesyonel yazılımlar istisna olabilir, ama genel uygulamalarda yerel olan daha iyidir
    • Çoğu UI kütüphanesinin en azından temel düzeyde yerel entegrasyona ihtiyacı var. Kısayollar, sistem menüleri, dosya iletişim kutuları, bağlam menüleri gibi. Bunlar kullanıcıya tanıdıklık hissi verir
    • Dosya seçici mutlaka işletim sisteminin varsayılan iletişim kutusunu kullanmalı. Bunu elle uygulamak iyi bir fikir değil