Rust Nedir? Çöp Toplayıcısız Bellek Güvenliği Sağlayan Sistem Programlama Dili
Rust, C ve C++ kadar hızlı çalışırken bellek hatalarını derleme anında ortadan kaldıran bir sistem programlama dilidir. Sahiplik (ownership) ve ödünç alma (borrowing) kuralları sayesinde çöp toplayıcı olmadan bellek güvenliği ve korkusuz eşzamanlılık sunar. Bugün Linux çekirdeğinden bulut altyapılarına kadar üretimde kullanılıyor.
Rust, sistem programlama dünyasında uzun süredir çözülemeyen bir ikilemi ortadan kaldırma iddiasıyla ortaya çıktı: Bir yandan C ve C++ kadar hızlı ve donanıma yakın çalışmak, diğer yandan bu dillerin yıllardır üretim sistemlerini meşgul eden bellek hatalarından tamamen kurtulmak. Rust'ın bunu nasıl başardığının merkezinde, çalışma anında değil derleme anında devreye giren bir güvenlik modeli yatıyor.
Mozilla'nın desteğiyle büyüyen ve bugün bağımsız Rust Vakfı tarafından yönetilen dil, Stack Overflow'un yıllık geliştirici anketinde üst üste yıllardır "en sevilen dil" seçiliyor. Artık Linux çekirdeğine, Windows'un bazı bileşenlerine ve büyük bulut altyapılarına girmiş durumda. Peki Rust'ı teknik olarak farklı kılan nedir?
Rust'ı farklı kılan nedir?
Çoğu modern dil, bellek yönetimini programcıdan gizler. Java, Go, Python ve JavaScript bir çöp toplayıcıya (garbage collector) sahiptir: Artık kullanılmayan belleği arka planda otomatik olarak temizleyen bir mekanizma. Bu güvenlidir ama bir bedeli vardır — çöp toplayıcı çalışırken programın duraklaması, öngörülemeyen gecikmeler ve ek bellek tüketimi.
C ve C++ ise diğer uçtadır: Bellek yönetimi tamamen programcının elindedir. Bu en yüksek performansı verir, ancak serbest bırakılan belleğe erişim (use-after-free), iki kez serbest bırakma (double-free) veya dizinin sınırını aşma (buffer overflow) gibi hataların kapısını açar. Bu hatalar hem çökmelere hem de dünyadaki ciddi güvenlik açıklarının büyük bölümüne yol açar.
Rust üçüncü bir yol sunar: Çöp toplayıcı yok, ama bellek güvenliği derleyici tarafından garanti altına alınır. Bu garantinin bedeli çalışma anında değil, kodu yazarken ödenir — derleyici, güvenli olmayan bir koda izin vermez.
Sahiplik (Ownership): Rust'ın kalbi
Rust'ın tüm güvenlik modeli sahiplik adı verilen üç basit kurala dayanır:
- Her değerin bir sahibi (owner) vardır.
- Aynı anda yalnızca bir sahip olabilir.
- Sahip kapsam dışına çıktığında (scope sona erdiğinde), değer otomatik olarak bellekten düşürülür (drop edilir).
Bu kurallar sayesinde "bu belleği ne zaman serbest bırakacağım?" sorusu ortadan kalkar; cevabı derleyici kesin olarak bilir. Bir değeri başka bir değişkene atadığınızda ya da bir fonksiyona verdiğinizde, sahiplik taşınır (move). Eski değişken artık geçersizdir ve ona erişmeye çalışırsanız program derlenmez bile. Böylece iki ayrı yerin aynı belleği yönettiğini sanması — klasik double-free kaynağı — mümkün olmaz.
Ödünç alma (Borrowing) ve borrow checker
Her şeyi sürekli taşımak pratik olmazdı. Bu yüzden Rust ödünç alma (borrowing) kavramını sunar: Bir değerin sahipliğini devretmeden ona referans (&) ile geçici erişim. Burada da iki temel kural devreye girer:
- İstediğiniz kadar değiştirilemez (immutable) referansınız olabilir, ya da
- Yalnızca bir tane değiştirilebilir (mutable,
&mut) referansınız olabilir.
İkisi aynı anda olamaz. Bir veriyi birisi değiştirirken başka birinin aynı veriyi okuması ya da değiştirmesi engellenir. Bu kuralı uygulayan derleyici bileşenine borrow checker denir ve Rust deneyiminin en ayırt edici — ilk başta en yorucu — parçasıdır.
Borrow checker'ın asıl gücü eşzamanlılıkta ortaya çıkar: Bu kurallar, çok iş parçacıklı (multi-threaded) programlarda veri yarışlarını (data race) derleme anında imkânsız hale getirir. Rust topluluğunun "korkusuz eşzamanlılık" (fearless concurrency) dediği şey budur — paralel kod yazarken en sinsi hata sınıfı derleyici tarafından baştan elenir.
Null yok, istisna yerine açık hata yönetimi
Rust'ın güvenlik yaklaşımı bellekle sınırlı değildir. Dilde null değeri yoktur. Bir değerin var olmayabileceği durumlar Option<T> tipiyle ifade edilir; programcı değeri kullanmadan önce "var mı yok mu" durumunu ele almak zorundadır. Benzer şekilde hata verebilecek işlemler Result<T, E> tipiyle temsil edilir. Böylece null pointer hataları ve sessizce yutulan hatalar dil düzeyinde engellenir.
Çöp toplayıcı yok, yine de hızlı
Rust'ın tüm bu güvenlik kontrolleri sıfır maliyetli soyutlamalar (zero-cost abstractions) ilkesiyle tasarlanmıştır: Yazdığınız üst düzey, güvenli kod, elle yazılmış düşük seviyeli koddan daha yavaş çalışmaz. Sahiplik ve ödünç alma denetimleri yalnızca derleme anında yapılır; derlenen ikili dosyada bu kontrollerin çalışma anı karşılığı yoktur. Sonuç, C ve C++ ile yarışabilen, öngörülebilir gecikmeli bir performanstır — gerçek zamanlı sistemler, oyun motorları ve gömülü cihazlar için kritik bir özellik.
Rust nerelerde kullanılıyor?
Rust artık bir deney değil, üretim dili:
- Linux çekirdeği, C'nin yanında Rust ile sürücü yazımını resmen desteklemeye başladı.
- Firefox, performans açısından kritik bileşenlerini Rust ile yeniden yazdı; dil zaten Mozilla'da doğmuştu.
- Bulut altyapısı: Amazon'un Firecracker sanallaştırma motoru, Cloudflare'in yoğun trafik işleyen servisleri ve Microsoft'un bazı Windows bileşenleri Rust ile yazıldı.
- Komut satırı araçları ve WebAssembly:
ripgrep,fdgibi hızlı CLI araçları ve tarayıcıda yüksek performans gerektiren WebAssembly modülleri Rust'ın güçlü olduğu alanlar.
Nereden başlamalı?
Rust'ın resmi ve ücretsiz kaynağı, topluluğun "The Book" olarak andığı The Rust Programming Language kitabıdır. Dili kurmak için rustup aracı kullanılır; bu araç derleyiciyi (rustc), paket ve derleme yöneticisi Cargo'yu ve belgeleri birlikte getirir. Cargo, Rust'ın en çok övülen yanlarından biridir: Bağımlılık yönetimi, derleme, test ve belge üretimini tek ve tutarlı bir araçta toplar.
Yeni başlayanlar genellikle borrow checker ile ilk haftalarda "kavga eder"; bu normaldir ve zamanla derleyicinin aslında sizi gelecekteki hatalardan koruduğu görülür. Rust'ın öğrenme eğrisi diktir, ama karşılığında çalışma anında değil, derleme anında yakalanan bir güvenlik ağı sunar — bir kez derlenen Rust programının "çalışıyorsa muhtemelen doğrudur" güvenini, dili sevdiren asıl şey budur.
Benzer İçerikler
Python 3.15 Yayınlandı: Lazy Import, frozendict ve Daha Hızlı JIT
Python 3.15, 9 Ekim 2026'da yayınlandı. Açık lazy import söz dizimi, yerleşik frozendict ve sentinel tipleri, varsayılan UTF-8 kodlaması, yeni profiling paketi ve belirgin biçimde hızlanan deneysel JIT derleyici sürümün öne çıkan başlıkları.
27 Eki 20263 kaynakCODE1 DKPython Öğrenmek İçin Kaynaklar ve Deneyler
Python programlama dilini öğrenmek isteyenler için çeşitli kaynaklar ve deneyler sunulmaktadır. Hangi kaynakların nasıl kullanılacağına dair bilgiler içeren makale, yazılıma yeni başlayanlar için yol gösterici olacaktır.
31 Ağu 20268 kaynakCODE1 DKPHP Sürümleri ve Yayın Süreci
PHP, sürekli gelişen ve güncellenen bir programlama dilidir. Bu yazıda, PHP sürümlerinin nasıl yönetildiği ve yayın süreçlerinin nasıl işlediği ele alınacaktır.
18 Ağu 20268 kaynak