· kaynak dev.to (home feed)
Tauri plugin'i, geliştiricilerin uygulama backend'lerini Rust yerine JavaScript ile yazmasını sağlıyor
Yeni bir plugin olan tauri-plugin-bare-kit, Bare JavaScript runtime'ını Tauri uygulamalarına gömerek backend mantığının JavaScript ile yazılabilmesini sağlıyor; npm modüllerinin çoğu kutudan çıktığı gibi çalışıyor.

Rust'sız bir Tauri backend'i
Bir geliştirici, dev.to'da yayımlanan bir yazıya göre, Tauri uygulamalarının içine bağımsız bir JavaScript runtime'ı gömen tauri-plugin-bare-kit adlı bir plugin yayımladı. Bunun sayesinde bir masaüstü veya mobil uygulamanın backend'i tamamen JavaScript ile yazılabiliyor ve bir geliştiricinin dokunması gereken tek Rust satırı, plugin'i etkinleştiren o satır — ancak istenirse mantık JavaScript ile Rust arasında bölünebiliyor.
Bare ve BareKit nedir
Plugin, Holepunch tarafından oluşturulan ve维持ilen Bare adlı bir JavaScript runtime'ının üzerine inşa edildi. Yazıya göre Bare, libuv ve V8 üzerinde çalışıyor — Node.js ile aynı temeller — ancak gömülebilirlik ve cihazlar arası desteği sonradan eklenen özellikler değil temel tasarım hedefleri olarak ele alıyor ve bir telefonda bir dizüstü bilgisayardaki kadar iyi çalışmayı hedefliyor. V8 motoru, JavaScriptCore veya QuickJS gibi alternatiflerle değiştirilebiliyor.
N-API addon'ları kutudan çıktığı gibi destekleniyor; npm'deki modüllerin çoğunun değiştirilmeden çalışmasının nedeni de bu. Bare, Node'un yerleşik modülleri olmadan geliyor, ancak yazı bunlar için resmi替代lerin bulunduğunu belirtiyor.
BareKit, Bare'ı diğer uygulamalara gömmeyi kolaylaştıran, several diller için binding'ler sunan yardımcı toolkit. İzole thread'leri — worklet adı verilen — başlatıp yönetmek için web worker benzeri bir API sağlıyor ve bunlar bir IPC soyutlaması ortaya koyuyor. Bu IPC düz bir duplex stream olduğundan, Tauri'nin yerel IPC'sine daha yakın bir deneyim isteyen geliştiriciler bare-rpc gibi bir kütüphaneye başvurabilir.
Plugin ikisini nasıl birbirine bağlıyor
Tauri bir uygulamayı webview frontend'i ve Rust backend'i arasında böldüğünden, Tauri veya React Native gibi runtime'ların başka bir runtime'ı barındırmak için ekstra tesisata ihtiyacı var. Plugin, BareKit C-API'sini FFI üzerinden çağırıyor — yazarın istikrarlı ama henüz tamamen kamuya açık olmadığını描述diği bir arayüz — ve böylece BareKit'i Tauri'ye derinlemesine bağlıyor. Webview'den bir worklet başlatıyor, üzerinde JavaScript kodunuzu çalıştırıyor ve webview'de çalışan kod ile Bare üzerinde çalışan kod arasında iki yönlü iletişim elde ediyorsunuz.
Plugin, göz alıcı olmayan kısımları da hallediyor. Native addon'lar, şu anda desteklenen tüm platformlarda — Windows, macOS, Linux, iOS ve Android — uygulama derlemesi sırasında otomatik olarak bağlanıyor. Backend mantığı isteğe bağlı olarak frontend'in basitçe import ettiği bir Bare bundle'ına paketlenebilir ve elle paketleme, bare-pack adlı bir araçla mümkün. Yazar, yönetilecek esasen hiçbir yapılandırma olmadığını söylüyor — postinstall ve build script'leri her şeyi hallediyor, ancak postinstall adımı, kurulum sırasında script'lerin çalıştırılmasına izin verilmesini gerektiriyor.
Güvenlik uyarıları
Bare üzerinde çalışan backend kodu, webview'deki frontend kodunun tabi olduğu kısıtlamalara tabi değil — native addon'lar üzerinden dosya sistemine ve işletim sistemi API'lerine erişebiliyor. Yazar bunu açıkça belirtiyor: bir worklet üzerinde asla kendinizin yazmadığı kodu çalıştırmayın. Uzaktan kodu bir backend'e yüklemek yaygın bir uygulama değil, diye ekliyor yazı, ama zaten kötü bir fikir olurdu.
Rust'ın hâlâ gerekli olduğu yerler
Plugin, Tauri'nin kendi API'lerini Bare'a açmıyor; dolayısıyla daha derin işletim sistemi entegrasyonuna veya daha karmaşık davranışa ihtiyaç duyan uygulamalar muhtemelen yine en azından bir miktar Rust kodu gerektirecek. Ancak daha basit uygulamalar için Rust yüzeyi, plugin'i kaydeden tek satıra küçülüyor.
Neden önemli
Tauri'nin çekiciliği — Electron tarzı uygulamalara kıyasla daha küçük bundle'lar ve yerel performans — her zaman bir şerla geldi: backend mantığı Rust'ta yaşıyor ve bu, JavaScript'ten gelen geliştiriciler için dik bir tırmanış. Bu plugin, uygulamaların geniş bir sınıfı için bu tırmanışı ortadan kaldırıyor ve npm paketlerinin çoğu değişmeden çalıştığından, mevcut JavaScript becerileri ve kütüphaneleri doğrudan aktarılıyor. Ayrıca ideolojik değil pratik bir motivasyonu yansıtıyor: yazar, öncelikle JavaScript'te var olan ve henüz tam bir Rust karşılığı bulunmayan Holepunch stack'ine bel bağladığı için bunu geliştirmiş. Ödünleşmeler gerçek — sınırsız dosya sistemi ve işletim sistemi erişimi olan bir backend, üzerinde ne çalıştığına dikkatle dikkat edilmesini gerektiriyor ve orta derecede basit uygulamaların ötesindeki her şey hâlâ Rust'a değinecek. Ancak Tauri'nin ayak izini önce bir sistem dili öğrenmeden isteyen web geliştiricileri için giriş engelini anlamlı biçimde düşürüyor.
- #tauri
- #javascript
- #rust
- #desktop-apps
- #plugins