Sistem Programlama

Neden C++ Yerine Rust? Bellek Güvenliği Üzerine Bir İnceleme

05 Kasım 20236 dk okuma

C ve C++ uzun yıllar boyunca sistem programlamanın kralları oldu. Ancak performansı kontrol altında tutmak için belleği (heap ve stack) manuel yönetme zorunluluğu, sayısız "Segmentation Fault" ve "Use After Free" zafiyetine yol açtı.

Ownership (Sahiplik) Modeli

Rust, "Garbage Collector" (çöp toplayıcı) kullanmadan, arka planda performansı düşürmeden bellek güvenliğini sağlayan eşsiz bir sisteme sahiptir. Üç temel kuralı vardır:

  • Rust'taki her değerin bir sahibi (owner) vardır.
  • Aynı anda sadece bir sahip olabilir.
  • Sahip, kapsamdan (scope) çıktığında, değer otomatik olarak bellekten atılır (drop).

Borrow Checker'ın Gücü

Rust'ın derleyicisi sizin adınıza bir avukat gibi çalışır. Veriyi kopyalamadan başkasına ödünç verdiğinizde (Borrowing), veri üzerinde aynı anda hem okuma hem yazma yetkisine sahip birden fazla referans olmasını engeller.

fn main() {
    let mut s = String::from("hello");
    let r1 = &s; // Sorun yok, okuma referansı
    let r2 = &s; // Sorun yok, okuma referansı
    // let r3 = &mut s; // HATA! Aynı anda hem okuma hem mutable referans olamaz.
}

Eğer böyle bir güvenliği C++'ta sağlamaya çalışsaydınız, çok fazla mutex veya akıllı işaretçi (smart pointer) kullanmanız gerekebilirdi. Rust, bunu size sıfır maliyetle (Zero-cost abstraction) sunar.

F
Ferivonus
Sistem Mimarisini İnşa Ediyor.
RustSystem ProgrammingMemory Safety