« Tüm yayınlar

hot-lib-reloader ile Rust kodunu yeniden başlatmadan güncelleyin

hot-lib-reloader, dylib tabanlı fonksiyonları çalışan bir Rust programına yeniden derleme yapmadan yükler. Geliştirme döngüsünü hızlandırır ama bazı sınırlamaları var.

hot-lib-reloader, libloading üzerine inşa edilmiş bir Rust geliştirme aracı olarak, çalışan bir programın fonksiyonlarını yeniden başlatmaya gerek kalmadan güncellemeyi mümkün kılıyor. Yaklaşım, hot-reload edilecek kodun ayrı bir dylib crate'inde tutulmasını ve hot_module makrosuyla bu fonksiyonların ana uygulamaya sarmalanmış şekilde aktarılmasını gerektiriyor. Bu sayede geliştirici lib.rs içindeki bir fonksiyonu değiştirdiğinde, cargo watch ile arka planda derlenen kütüphane otomatik olarak yeniden yüklenip etkisi anında görülebiliyor.

Araç, LibReloadObserver ve was_updated gibi mekanizmalarla yeniden yükleme öncesi/sonrası olaylara abone olma imkanı sunuyor; bu da state serialize/deserialize etme gibi senaryolarda kritik önem taşıyor. Ancak yaklaşımın ciddi sınırları var: fonksiyon imzası değişirse çökme riski oluşuyor, paylaşılan struct/enum tipleri dikkatsizce değiştirilirse undefined behavior ortaya çıkabiliyor, generic fonksiyonlar no_mangle kısıtı nedeniyle desteklenmiyor ve global state'in reload sonrası yeniden başlatılması gerekiyor.

Bu sınırlamaları yönetmek için proje, feature flag'lerle hot-reload ve statik derleme arasında geçiş yapmayı, release modunda no-mangle'ı devre dışı bırakmayı ve tip değişikliklerinde serialization kullanmayı öneriyor. macOS'ta dylib'in codesign ile imzalanması gerekiyor; diğer platformlarda ekstra kurulum gerekmiyor. Sonuç olarak araç, özellikle oyun geliştirme ve state makineleri gibi hızlı geri bildirim döngüsü isteyen Rust projelerinde derleme-bekleme süresini büyük ölçüde azaltabiliyor.

» KaynakHashnode #15