← Radar

Konu: Kodlama2 dk okuma

Electron'a alternatif: Zed'in arayüz kütüphanesi GPUI ile masaüstü uygulaması yazmak

Bu neden önemli?

Basit bir araç için bile Electron'la yüzlerce MB'lık, bir tarayıcıyı içinde taşıyan bir uygulama çıkıyor. GPUI, web arayüzü yazma alışkanlığını koruyup tarayıcıyı tamamen çıkaran bir yol sunuyor. Web geliştiricisi olarak masaüstüne nasıl açılabileceğini görmek için iyi bir örnek.

Ne oldu?

Syntax’ın 1043. bölümünde Scott Tolinski, küçük masaüstü uygulamaları için artık GPUI kullandığını anlatıyor. GPUI, Zed editörünü yapan ekibin, editörün arayüzünü çizmek için yazdığı Rust kütüphanesi. Zed’in ekibi bunu herkesin kullanabileceği bir kütüphane olarak yayınlıyor.

Electron ve Tauri’de sorun ne?

İkisi de arayüzü bir web view içinde çiziyor, yani uygulamanın içinde bir tarayıcı motoru çalışıyor. Electron bu motoru kendisi taşıdığı için uygulama büyüyor. Tauri sistemin hazır web view’ını kullanıyor, ama sonuçta yine web sayfası gösteriyor. Bölümdeki çıkış noktası şu: Bir dosya taşıma aracı gibi küçük bir uygulama için tarayıcı katmanı fazla.

GPUI nedir?

README’ye göre GPUI, ekran kartından yararlanan (GPU accelerated), hem “immediate” hem “retained” mod özelliklerini birleştiren bir Rust arayüz çerçevesi. macOS’ta Metal, Windows’ta Win32 ve DirectWrite, Linux’ta Wayland/X11 kullanıyor. Yani uygulama tarayıcı olmadan, doğrudan işletim sisteminin çizim katmanlarıyla konuşuyor.

Kod yazışı web geliştiricisine tanıdık gelecek şekilde tasarlanmış:

  • Arayüz div() gibi elemanlardan kuruluyor, .flex(), .gap_2(), .bg(...) gibi zincirleme metotlarla biçimleniyor. Bu, Tailwind sınıflarına çok benziyor.
  • Bileşenler, props ve state kavramları React’takine yakın. Bölümde Render (durumu olan bileşen) ile RenderOnce (durumsuz, tek seferlik bileşen) farkı anlatılıyor.
  • Uygulama mantığı ile arayüz aynı Rust programında olduğu için ikisi arasında ayrı bir RPC katmanı kurmaya gerek kalmıyor.
  • Bölümde ayrıca “GPUI Kit” adlı hazır bileşen setinden (shadcn’in GPUI karşılığı) ve topluluğun ayrı bir fork’undan bahsediliyor.

Bedeli ne?

Scott’ın kendi anlattığı eksikler:

  • Yerel (native) arayüz elemanları yok. Düğmeleri, menüleri sistemin kendisi çizmiyor, GPUI çiziyor.
  • Tarayıcı DOM’u yok. Var olan web kodunu ya da web kütüphanelerini olduğu gibi kullanamazsın.
  • CSS’in tamamı yok. Flexbox var, CSS Grid bölümde eksik olarak anılıyor.
  • Henüz 1.0 değil. README, sürümler arasında sık sık kırıcı değişiklik olacağını açıkça söylüyor.
  • Mobil destek deneysel. Bölümde “çalışıyor ama deneysel” deniyor.

Scott’ın vardığı sonuç: GPUI, kişisel masaüstü yazılımları için iyi bir seçim. Bir ekibin ürünü için pre-1.0 olduğunu unutmamak gerek.

Senin için anlamı

  • Küçük, tek işlik bir araç yazacaksan “Electron mu, başka bir şey mi?” sorusunu yeniden sorabilirsin.
  • Rust bilmiyorsan giriş eşiği yüksek. Arayüz kısmı tanıdık, ama dilin kendisi yeni.
  • Denemek istersen resmî sitedeki “Hello, World” örneği iyi bir başlangıç.

Düşün

  • Kullandığın masaüstü uygulamalarının kaçı aslında bir web sayfası?
  • Uygulamanın hızlı açılması mı, yoksa web kodunu yeniden kullanabilmek mi senin için daha önemli?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (3, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.