deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Electron'dan Tauri'ye geçiş, macOS menü çubuğu uygulamasını 289 MB'tan 15 MB'a indiriyor

Bir geliştirici, WatchMe menü çubuğu uygulamasını Tauri 2'ye taşıyan süreci anlatıyor; paket boyutu 289 MB'tan 15 MB'a inerken, daha ağır Rust build'leri ve 499 yeni crate ile karşılaşılıyor.

Electron'dan Tauri'ye geçiş, macOS menü çubuğu uygulamasını 289 MB'tan 15 MB'a indiriyor

Süreçleri listeleyen 289 MB'lık uygulama

Hikayenin merkezindeki uygulama, WatchMe: çalışan süreçleri listeleyen ve önem verdiğiniz bir süreç sonlandığında bildirim gönderen küçük bir macOS menü çubuğu yardımcı programı — uzun bir build sırasında bilgisayardan uzaklaşmak için kullanışlı. dev.to'daki birinci ağızdan anlatıma göre, bu uygulamanın Electron sürümü, işletim sistemine dokunan yalnızca üç şey yapmasına rağmen — süreçleri listelemek, bir tray simgesine sahip olmak ve bildirim göndermek — 289 MB ağırlığındaydı. Geri kalan her şey bir tablo ve iki onay kutusundan ibaret.

Geliştirici motivasyon konusunda dikkatli: "Electron şişkin" argümanının çalışan yazılımı yeniden yazmak için tembel bir gerekçe olduğunu savunuyor. Onun çerçevesiyle Tauri'nin gerçek vaadi, pazarlama metinlerinin ima ettiğinden daha dar: Tauri bir uygulamayı hızlı yapmaz, küçük yapar; çünkü bir Chromium build'i paketlemek yerine işletim sisteminin yerleşik webview'ini kullanır. Menü çubuğunda yaşayan ve bütün gün çalışan bir uygulama için istediği özellik küçüklüktü.

Kodda ne değişti

Electron'ün üç parçalı IPC yapısı — kanal adlarını içeren bir JSON dosyası, bunları köprüleyen bir preload script'i ve main process'teki handler'lar — Tauri 2'de ortadan kalkıyor. Komutlar #[tauri::command] ile işaretlenmiş Rust fonksiyonlarına dönüşüyor ve renderer bunları isimleriyle çağırıyor. ps-list npm paketi de gitti; yerini Rust çekirdeğindeki sysinfo crate'i aldı; frontend her zaman okuduğu pid, name ve cmd alanlarını okumaya devam ediyor.

Main process, 220 satır JavaScript'ten 371 satır Rust'a taşındı. Paketlenmiş uygulama için test harness'i — uygulamayı başlatan, süren ve kapatan 579 satırlık iskelet kod — tamamen silindi; test edilmeye değer mantık zaten her zaman, Electron'dan ayrılmamış düz JavaScript'ti.

Rakamlar

Manşet sonuçlar: .app paketi 289 MB'tan 15 MB'a düştü, .dmg ise 3.7 MB oldu. Bu, 18.9 katlık bir azalma; kullanıcı için %94.7 daha az indirme demek. Lockfile'daki npm paketleri 309'dan 73'e indi.

AI nerede yardımcı oldu, nerede olmadı

Geçiş, 10 Eylül'de tek bir commit olarak tamamlandı — 34 dosya, +12.154 / −4.875 — ve büyük kısmını Claude Code yazdı. Geliştiriciye göre model mekanik çeviride gerçekten iyiydi: işin biçimi biliniyor, hedef API iyi belgelenmiş ve her hata saniyeler içinde bir compiler hatası olarak ortaya çıkıyor. Rust'ın tip denetleyicisi acımasız bir reviewer gibi davranıyor ve AI'nın yazdığı Rust'u katlanılır kılan da tam olarak bu.

Modelin yaptığı en değerli şeyin geçişle hiçbir ilgisi yoktu. UI'yı yeniden inşa ederken, bir sürecin izlendiğini işaretleyen highlighted-row CSS sınıfının hiçbir stylesheet'te tanımlanmamış olduğunu fark etti. Geliştirici repository geçmişine baktı: sınıf 19 Eylül 2024'te eklenmiş ve onun için hiçbir kural hiç var olmamış. Yaklaşık iki yıl boyunca bir sürecin izlendiğine dair tek geri bildirim, kullanıcının az önce işaretlediği onay kutusuydu. Ona göre AI'nın asıl işlevi budur — yıllardır kimsenin okumadığı kodu, hatayı yazarına görünmez kılan varsayımlar olmadan okumak.

AI'nın yetersiz kaldığı yer de aynı derecede spesifik. Yeniden tasarlanan UI'yı Chromium tabanlı bir tarayıcıda sürerek doğrulamış; ama macOS'ta Tauri WKWebView'de render ediliyor, yani doğrulama uygulamanın hiç çalışmadığı bir motoru kapsamıştı. Geliştirici bu açığı elle kapatmak zorunda kaldı.

Tuzaklar

Bağımlılık sayısı azalmadı — arttı. 236 npm paketi kaldırdı ve 499 Rust crate ekledi. Küçülen şey projenin bağımlılıkları değil, paketlenen şey; ve tedarik zinciri yüzeyini küçültmek için göçen herkes başlamadan önce bu rakama bakmalı.

Build maliyeti de geliştiriciye geçti: node_modules 105 MB iken Rust build dizini 5.8 GB ve temiz release build'leri saniyeler değil dakikalar sürüyor. Bunu, kullanıcılar için büyük bir indirme ile kendisi için büyük bir build arasında bir takas olarak tanımlıyor — geliştiricisinden çok kullanıcısı olan bir uygulama için doğru karar, ama yine de bir takas.

Son olarak, tarayıcı paketlememek, bir tarayıcıyı kontrol etmemek demek. Tauri macOS'ta WKWebView, Windows'ta WebView2, Linux'ta WebKitGTK kullanıyor. Tauri'nin kendi dokümantasyonuna göre, desteklenmeyen macOS sürümleri WebKit güncellemeleri almayı bırakıyor; yani minimum sistem sürümü 13.0 olduğundan, uygulamanın CSS tabanı macOS 13 ile gelen Safari sürümü. Electron'da renderer paketlendiği için bu hiçbir zaman sorun değildi.

Neden önemli

Bu, bir Electron'dan Tauri'ye geçişin gerçekte neye mal olduğuna dair somut, rakamların önde olduğu bir anlatı — bir benchmark ekran görüntüsünden fazlası. Küçük masaüstü yardımcı programları için indirme boyutu kazancı gerçek ve büyük; ama yazı takasları konusunda da aynı derecede açık: daha büyük toplam bağımlılık ağacı, çok daha ağır yerel build'ler ve kontrolünüzde olmayan, platformdan platforma değişen bir render motoru. Ayrıca AI destekli geçiş konusunda da yararlı bir veri noktası — mekanik çeviride ve okunmamış koddaki eski hataları ortaya çıkarmada güçlü, ama yayımlanan uygulamanın gerçekte kullandığı webview'deki davranışı doğrulayamıyor. Geliştiricinin hükmü: bir menü çubuğu yardımcı programı için tereddüt etmeden yeniden yapardı; karmaşık, canvas tabanlı bir UI için çok daha uzun düşünürdü.

  • #electron
  • #tauri
  • #rust
  • #desktop-apps
  • #ai-coding

İlgili yazılar