Sürümler Nedir?
Mayis 2015’te Rust 1.0’in yayinlanmasi, Rust’in temel ilkelerinden biri olarak “duraganlik olmadan kararlilik” anlayisini yerlesik hale getirdi. O gunden bu yana Rust su onemli kurala bagli kaliyor: Bir ozellik kararli kanal uzerinden yayinlandiginda, gelecekteki tum surumlerde de desteklenmeye devam edilir.
Yine de bazen dile geriye uyumsuz degisiklikler yapmak faydali olabilir. Bunun
yaygin bir ornegi yeni bir anahtar kelime eklenmesidir. Ornegin Rust’in ilk
surumlerinde async ve await anahtar kelimeleri yoktu.
Rust bu yeni anahtar kelimeleri bir anda ekleseydi bazi kodlar bozulurdu:
let async = 1; artik calismazdi.
Rust bu sorunu cozmek icin surumleri kullanir. Geriye uyumsuz degisiklikler
gerektiginde bunlar bir sonraki surume alinir. Surumler istege bagli oldugu
icin, var olan crate’ler acikca yeni surume tasinmadikca bu degisiklikleri
kullanmaz. Ornegin Rust’in en guncel surumu, 2018 veya sonrasi bir surum
secilmedigi surece async kelimesini anahtar kelime olarak ele almaz.
Her crate, kendi Cargo.toml dosyasi icinde
hangi surumu kullanacagini secer. Cargo ile yeni bir crate olusturuldugunda,
kararli durumdaki en yeni surum otomatik olarak secilir.
Sürümler ekosistemi bölmez
Surumler tasarlanirken en kritik kural sudur: bir surumdeki crate’ler, diger surumlerle derlenmis crate’lerle sorunsuz bicimde birlikte calismalidir.
Baska bir deyişle, her crate yeni bir surume ne zaman gececegine bagimsiz olarak karar verebilir. Bu karar “ozel“dir; ekosistemdeki diger crate’leri etkilemez.
Rust acisindan bu uyumluluk, bir surumde yapilabilecek degisikliklerin turune de belli sinirlar koyar. Bu yuzden yeni Rust surumlerindeki degisiklikler genelde “yuzeysel” kalir. Rust kodunun tamami, hangi surum kullanilirsa kullanilsin, sonunda derleyici icinde ayni ic temsile donusur.
Sürüm taşıma işlemi kolaydır ve büyük ölçüde otomatiktir
Rust, yeni bir surume gecisi kolay bir surece donusturmeyi hedefler. Yeni bir
surum yayinlandiginda crate yazarlar, cargo icindeki otomatik tasima
araclarini
kullanarak gecis yapabilir. Cargo daha sonra kodu yeni surumle uyumlu hale
getirmek icin kucuk duzeltmeler uygular.
Ornegin Rust 2018’e geciste, async adini tasiyan her sey ham tanimlayici
sozdizimi
ile r#async bicimine donusturulur.
Cargo’nun otomatik tasimalari kusursuz degildir; bazi kose durumlarda elle degisiklik yapmak yine de gerekebilir. Bu araclar, kodun dogrulugunu ya da performansini etkileyebilecek anlamsal degisikliklerden kacinmayi hedefler.
Bu rehber neleri kapsar?
Bu Rust Surum Rehberi, araclara ek olarak her surumun parcasi olan degisiklikleri de kapsar. Her degisikligi aciklar ve varsa ek ayrintilara baglanti verir. Ayrica crate yazarlarinin dikkat etmesi gereken kose durumlari ve zor ayrintilari da ele alir.
Crate yazarlarinin burada su basliklari bulmasi beklenir:
- Surumlere genel bakis
- Belirli surumler icin tasima rehberi
- Otomatik araclar yetersiz kaldiginda hizli bir sorun giderme basvurusu