Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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