Rust
- Okunuşu
- rast
Kısaca
Rust, sahiplik kurallarını derleme zamanında denetleyerek çöp toplayıcı olmadan bellek güvenliği sağlayan, derlenen ve statik tipli bir sistem dilidir.
Rust programlama dili nedir?
Rust, Graydon Hoare'in kişisel projesi olarak başlayan, sonradan Mozilla tarafından desteklenen ve 2015'te 1.0 sürümüne ulaşan, genel amaçlı bir sistem programlama dilidir. Bugün açık kaynaklı Rust projesi tarafından, bağımsız Rust Foundation'ın desteğiyle geliştirilmektedir. Amacı, C ve C++'ın hızını ve düşük seviyeli kontrolünü sunarken bütün bir bellek hataları sınıfını önlemektir.
Rust statik ve güçlü tiplidir ve kapsamlı tip çıkarımı yapar. Bellek modeli sahipliğe (ownership) dayanır: her değerin tam olarak bir sahibi vardır ve sahibi kapsamdan çıktığında değer otomatik olarak serbest bırakılır. Diğer kodlar bir değeri referanslar aracılığıyla ödünç alabilir (borrow) ve derleyicinin ödünç denetleyicisi (borrow checker), aynı anda ya birçok okuyucunun ya da tek bir yazarın olabileceği, ikisinin asla birlikte olamayacağı kuralını uygular. Rust'ta ayrıca null ve istisna yoktur; eksik değerler için Option tipi, kurtarılabilir hatalar için Result tipi kullanılır.
Rust; komut satırı araçlarında, web sunucularında, WebAssembly modüllerinde, gömülü cihazlarda, tarayıcı bileşenlerinde ve Linux çekirdeğindeki sürücüler dahil işletim sistemlerinin bazı kısımlarında kullanılır. Ödünç denetleyici bir kütüphaneye benzer: birçok kişi bir kitabı aynı anda okuyabilir veya tek bir kişi içine yazmak üzere ödünç alabilir, ama ikisi asla aynı anda olamaz; kütüphane de kitabın ne zaman geri geleceğini her zaman bilir.
Sık görülen bir kafa karışıklığı, Rust'ın bellek güvenliğini nasıl sağladığıdır. Java ya da Go'dan farklı olarak çalışma zamanında çöp toplayıcı kullanmaz; derleyici sahiplik kurallarını program hiç çalışmadan denetler, bu nedenle toplama duraklamaları olmaz. Bunun bedeli daha dik bir öğrenme eğrisidir; çünkü C'de derlenecek kod, sahiplik netleşene kadar reddedilebilir. Derleyicinin doğrulayamadığı düşük seviyeli işler için Rust, açıkça işaretlenmiş unsafe blokları sunar.
Önemli noktalar
- Rust, C ve C++ ile kıyaslanabilir performansla yerel makine koduna derlenir.
- Sahiplik ve ödünç alma kuralları, çöp toplayıcı olmadan bellek güvenliği sağlar.
- Derleyici güvenli kodda veri yarışlarını (data race) önler; bu da eşzamanlılığı daha güvenli kılar.
- Hatalar istisnalarla değil
Resultile, eksik değerlernullile değilOptionile ele alınır.
Örnek
fn main() {
let greeting = String::from("Hello");
// Borrow the string with & so main keeps ownership
print_twice(&greeting);
let moved = greeting; // Ownership moves to the new variable
// println!("{}", greeting); // Compile error: greeting was moved
println!("{} still works", moved);
}
fn print_twice(text: &str) {
println!("{text} {text}");
}Sık sorulan sorular
Rust neden bellek güvenli kabul edilir?
Derleyici, program çalışmadan önce sahiplik ve ödünç alma kurallarını denetler; bu da güvenli kodda serbest bırakıldıktan sonra kullanma (use-after-free), çift serbest bırakma (double free) ve veri yarışı gibi yaygın hataları dışarıda bırakır. Denetlenemeyen düşük seviyeli işlemler, açıkça işaretlenmiş unsafe bloklarıyla sınırlıdır.
Rust öğrenmek zor mu?
Rust, esas olarak sahiplik ve ödünç denetleyici yüzünden dik bir öğrenme eğrisiyle tanınır. Derleyicisinin hata mesajları ayrıntılıdır ve çoğu zaman çözüm önerir; bu da yeni başlayanlara yardımcı olur.
Rust'ın çöp toplayıcısı var mı?
Hayır. Rust, bir değerin sahibi kapsamdan çıktığında belleği deterministik olarak serbest bırakır; bu yüzden çöp toplama duraklamaları yaşanmaz.
Sık karşılaştırılanlar
İlgili sayfalar
- CProgramlama Dilleri, s. 3C, belleğe doğrudan erişim sağlayan, derlenen ve düşük seviyeli bir programlama dilidir; işletim sistemlerinde, sürücülerde ve gömülü yazılımlarda kullanılır.
- C++Programlama Dilleri, s. 5C++, C'yi sınıflar ve şablonlarla genişleten; bellek ve performans üzerinde düşük seviyeli kontrolü koruyan, derlenen ve statik tipli bir dildir.
- Memory Leakİşletim Sistemleri, s. 20Memory leak, bir programın artık ihtiyaç duymadığı belleği tutmayı sürdürdüğü hatadır; bellek kullanımı zamanla artar, sistem yavaşlayabilir ya da çökebilir.
- EşzamanlılıkProgramlamanın Temelleri, s. 19Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerleyebilme yeteneğidir; örneğin birçok kullanıcıya aynı anda hizmet vermek gibi.
- WebAssemblyWeb Geliştirme, s. 59WebAssembly, web tarayıcılarında yerele yakın hızda çalışan ve C++, Rust, Go gibi dillerle hızlı web kodu yazılmasını sağlayan kompakt bir ikili kod biçimidir.
- Çöp toplamaProgramlamanın Temelleri, s. 9Çöp toplama, dil çalışma zamanının programın artık kullanamadığı verileri bulup bu belleği yeniden kullanıma açtığı otomatik bellek yönetimidir.
- GoProgramlama Dilleri, s. 13Go, sadelik ve hızlı derleme için tasarlanmış; çöp toplama ve goroutine'lerle yerleşik eşzamanlılık sunan, derlenen ve statik tipli bir dildir.
- ZigProgramlama Dilleri, s. 33Zig, elle bellek yönetimi sunan ve gizli kontrol akışı içermeyen, C'nin daha basit ve güvenli bir halefi olmayı hedefleyen düşük seviyeli bir sistem dilidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin