Rust 1.100 çıktı: never type 10 yıl sonra kararlı, Cargo'ya tedarik zinciri saldırılarına karşı "dependency cooldown" geldi
Rust ekibi 12 Kasım'da Rust 1.100.0'ı yayımladı. Sürümde never type ve allocator API'nin çekirdeği kararlı hale geldi. Cargo artık yeni yayımlanmış bağımlılık sürümlerini belirli bir süre bekletebiliyor.
Rust ekibi 12 Kasım'da programlama dilinin 1.100.0 sürümünü yayımladı. Sürüm, rustup ile kurulu sistemlerde kararlı kanal güncellenerek alınabiliyor. Hacker News ön sayfasına da çıkan duyuruda öne çıkan başlıklar dil tarafında never type ve allocator API, Cargo tarafında ise tedarik zinciri güvenliğine yönelik yeni bir özellik.
Dilde neler değişti?
- Never type (
!) kararlı: Rust ekibine göre on yıl ve beş başarısız denemenin ardından never type kararlı hale geldi. Hiçbir zaman değer üretmeyen hesaplamaları temsil eden bu tür artık doğrudan kullanılabiliyor.Infalliblede never type'ın takma adı oldu. Ekip, bunun için 2024 öncesi edition'larda "never type fallback" davranışının değiştiğini ve nadir durumlarda mevcut kodu bozabileceğini belirtiyor. Bağımlılıklarda bu yüzden hata alanlara güncellemeyi öneriyor. - Allocator API'nin çekirdeği: Kütüphane yazarları artık
VecveBoxile kullanılabilen özel bellek ayırıcılar (allocator) tanımlayabiliyor. DropGuard: Fonksiyondan hangi yolla çıkılırsa çıkılsın bir closure'ın çalışmasını sağlayan yeni yardımcı tür. Hata durumunda değişiklikleri geri almak gibi işler kolaylaşıyor.unsafekodda sıfır boyutlu türler üretmek içinstd::mem::conjure_zstadlı ayrı bir fonksiyon eklendi.
Cargo: yeni sürümleri bekletme
Güvenlik açısından en dikkat çekici yenilik min-publish-age, diğer adıyla dependency cooldown. Rust ekibi, zararlı paket sürümlerinin çoğunlukla yayımlandıktan sonraki saatler ya da günler içinde tarayıcılar veya topluluk tarafından yakalandığını hatırlatıyor. Cargo artık yapılandırmada belirtilen süreden daha yeni yayımlanmış sürümleri bağımlılık çözümlemesinde atlayabiliyor ve hangi sürümü geri tuttuğunu raporluyor. Ekip üç sınırlamanın altını çiziyor: Yayın zamanı kaydı olmayan sürümler bekletilmiyor. cargo install bu ayarı yok sayıyor. Cooldown da tedarik zinciri saldırılarına karşı tek başına yeterli bir savunma değil.
Cargo ayrıca artık kullanılmayan bağımlılıklar için uyarı veriyor. Build dizini düzeni de farklı yapılandırmaların birbirinin önbelleğini ezmeyeceği şekilde değişti. Ekip, bu değişikliğin bazı build süreçlerini ve testleri bozabileceğini belirtiyor.
Neden önemli?
npm ve PyPI'da sık görülen tedarik zinciri saldırıları, paket yöneticilerini "yeni sürümü hemen çekme" mantığına yöneltiyor. Bu özelliğin Cargo'nun kendisine girmesi, Rust projelerinde aynı korumanın ek araç olmadan uygulanabileceği anlamına geliyor.
Kimin işine yarar / ne yapabilirsiniz?
- Geliştirme makinelerinde ve CI imajlarında kurulu derleyici sürümünü (rustc ve cargo sürüm çıktısı) envanterinize kaydedin.
- Yükseltmeden önce CI'da 2024 öncesi edition kullanan projeleri derleyip never type fallback değişikliğinden etkilenen kod olup olmadığına bakın.
- Kurumsal Rust projelerinde Cargo yapılandırmasına birkaç günlük minimum yayın yaşı eklemeyi değerlendirin. Acil güvenlik güncellemeleri için tek paketlik istisnanın nasıl verileceğini ekip içinde yazılı hale getirin.
- Build dizini yoluna dayanan özel betikleriniz varsa duyurudaki Cargo notlarını inceleyin.