On Yıllık Bekleyişin Sonu: Rust 1.100.0 ile Never Tipi Artık Kararlı
Kaynak: Hacker News
İçindekiler 3 başlık
Rust derleyicisinde 10 yıldır süren ve 5 başarısız denemeyle sonuçlanan "never" (!) tipi çalışması, 12 Kasım 2026'da yayımlanan Rust 1.100.0 sürümüyle kararlı hale geldi. Kod içinde ! olarak yazılan bu yapı, hiçbir zaman bir değere dönüşmeyen (diverging) hesaplamaları ve sonrasındaki kodun erişilemez olduğu durumları temsil ediyor.
Hata İhtimali Olmayan Kodları İfade Etmek#
Daha önce return, break ve std::process::exit gibi kontrol akışını sonlandıran ifadelerin tipi zaten ! olarak çalışıyordu. Hatta fonksiyonların dönüş tipinde (-> !) bu işareti kullanabiliyordun. Bir match veya if kolundan değer döndürmeden çıkmak istediğinde derleyici ! tipini beklenen tipe otomatik olarak dönüştürüyordu (never-to-any coercion):
fn mrrrow(option: Option<u32>) {
let value = match option {
Some(x) => x,
None => return,
};
}
Buradaki return ifadesi ! tipindedir ve derleyici onu u32 tipine dönüştürerek match bloğunun tip kontrolünden geçmesini sağlar. Ancak ! tipini generic parametrelerde ya da keyfi tür konumlarında doğrudan yazamıyordun.
Rust 1.100.0 bu kısıtlamayı kaldırıyor. Artık ! tipini kodun her yerinde açıkça isimlendirebilirsin. Örneğin, hata döndürmesi imkansız bir Result türünü doğrudan Result<T, !> şeklinde tanımlamak mümkün:
fn infallible_unwrap<T>(res: Result<T, !>) -> T {
let Ok(v) = res;
v
}
Bu adımla birlikte standart kütüphanedeki Infallible türü de doğrudan ! tipinin bir takma adı (alias) haline getirildi. Böylece geçmişte Infallible kullanan tüm eski API'ler, ekstra bir dönüşüme gerek kalmadan ! ile tam uyumlu çalışıyor. Zaten Infallible ilk eklendiğinden beri hedeflenen plan buydu; süreci zorlaştıran temel nedenlerden biri de bu geçişti.
Eski Sürümlerdeki Fallback Değişikliği ve Olası Etkileri#
Infallible türünü ! için bir takma ad yapabilmek, geriye dönük uyumluluğu kıran (breaking change) bir değişikliği zorunlu kıldı. Daha önce 2024 edition içinde yapılan düzenlemeye benzer biçimde, 2024 öncesi sürümlerde (2015, 2018 ve 2021 editions) "never type fallback" davranışı () yerine ! olarak değiştirildi.
Çoğu projede bu geçiş fark edilmeyecektir. Yine de generic parametre döndüren bir fonksiyonun sonucunu yok saydığın nadir durumlarda mevcut kodun etkilenebilir. Ayrıca derleyici artık daha fazla kodu "erişilemez" (unreachable) olarak tespit edebilir. Rust ekibi bu kırılmanın etkisini en aza indirmek için çok önceden uyumluluk uyarıları ekledi ve etkilenen açık kaynaklı paketlere (crate) düzeltmeler gönderdi. Projende ! tipiyle ilgili bir bağımlılık hatası alırsan, ilgili paketin yeni sürümü yayımlanmış olabileceği için bağımlılıklarını güncellemeyi deneyebilirsin.
Rust 1.100.0 Sürümündeki Diğer Başlıklar ve Güncelleme#
Yeni sürüm sadece ! tipiyle sınırlı değil. Dil ve araç tarafında öne çıkan diğer başlıklar şunlar:
- Kütüphane ve Bellek Yönetimi: Allocator API, DropGuard API ve sıfır boyutlu tipler oluşturma (conjuring zero-sized types) özellikleri kararlı sürüme geçti.
- Cargo İyileştirmeleri: Kullanılmayan bağımlılıkların raporlanması, Cargo önbellek (cache) çakışmalarının azaltılması ve
min-publish-agedesteği eklendi.
Sisteminde rustup üzerinden kurulu bir Rust sürümü varsa, aşağıdaki komutla doğrudan 1.100.0 kararlı sürümüne geçebilirsin:
$ rustup update stable
Gelecek sürümleri test ederek geliştirme sürecine katkı sağlamak istersen, yerel ortamını beta kanalına (rustup default beta) veya nightly kanalına (rustup default nightly) geçirip karşılaştığın hataları bildirebilirsin.
Kaynak ve atıf
Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- blog.rust-lang.org/2026/11/12/Rust-1.100.0