1.84.0 sürümü, projenin belirtilen Minimum Desteklenen Rust Sürümüne (MSRV) uyumlu bağımlılık sürümlerini tercih eden MSRV farkındalığına sahip çözümleyiciyi stabil hale getiriyor. MSRV farkındalığına sahip sürüm seçimi sayesinde, eski araç zincirlerini desteklemek için her bir bağımlılık için manuel olarak eski sürümleri seçme gereksinimi ortadan kalkıyor ve bu da bakımcılar için iş yükünü azaltıyor.

Daha fazlası...
Rust ekibi, Rust'ın yeni sürümü olan 1.83.0'ı duyurmaktan mutluluk duyar. Rust, herkesin güvenilir ve verimli yazılımlar oluşturmasını sağlayan bir programlama dilidir.

Yeni Sabit (const) Özellikleri​

Bu sürüm, sabit bağlamlarda çalışan kodların yapabileceği birçok büyük genişletmeyi içeriyor. Bu, derleyicinin derleme zamanında değerlendirmek zorunda olduğu tüm kodları ifade eder: sabit (const) ve statik (static) öğelerin başlangıç değerleri, dizi uzunlukları, enum ayrıştırıcı değerleri, sabit genel argümanlar ve bu tür bağlamlardan çağrılabilen işlevler (const fn).

Statiklere Referanslar​

Şimdiye kadar, sabit bağlamlar (bir statik öğenin başlatıcı ifadesi hariç) statik öğelere referans verilmiyordu. Bu kısıtlama artık kaldırıldı:

Kod:
static S: i32 = 25;
const C: &i32 = &S;

Ancak, değiştirilebilir (mutable) veya içsel olarak değiştirilebilir (interior mutable) bir statiğin değerini okumak, sabit bağlamlarda hâlâ izin verililmiyor. Ayrıca, bir sabitin son değeri, herhangi bir değiştirilebilir veya içsel olarak değiştirilebilir statiğe referans veremez:

Kod:
static mut S: i32 = 0;

const C1: i32 = unsafe { S };
// hata: sabit, değiştirilebilir global belleğe erişiyor

const C2: &i32 = unsafe { &S };
// hata: `const` içinde değiştirilebilir belleğe referans bulundu

Bu sınırlamalar sabitlerin hala “sabit” olmasını sağlar: değerlendirildikleri değer ve bir kalıp olarak anlamları (referansları dereferencing içerebilir), tüm program yürütmesi boyunca aynı olacaktır.

Bununla birlikte, bir sabitin değişebilir veya iç değişebilir bir statik değeri işaret eden ham bir işaretçiye değerlendirilmesine izin veriliyor:

Kod:
static mut S: i32 = 64;
const C: *mut i32 = &raw mut S;

Değiştirilebilir Referanslar ve İşaretçiler​

Artık değiştirilebilir referanslar, sabit bağlamlarda kullanılabilir:

Kod:
const fn inc(x: &mut i32) {
    *x += 1;
}

const C: i32 = {
    let mut c = 41;
    inc(&mut c);
    c
};

Değiştirilebilir ham işaretçiler ve içsel değiştirilebilirlik de destekleniyor:

Kod:
use std::cell::UnsafeCell;

const C: i32 = {
    let c = UnsafeCell::new(41);
    unsafe { *c.get() += 1 };
    c.into_inner()
};

Ancak, değiştirilebilir referanslar ve işaretçiler yalnızca bir sabitin hesaplanması içinde kullanılabilir, sabitin nihai değerinin bir parçası olamazlar:

Kod:
const C: &mut i32 = &mut 4;
// hata[E0764]: değiştirilebilir referanslara sabitlerin son değerinde izin verilmez

Daha fazlası...
Rust ekibi, Rust'un yeni bir sürümü olan 1.82.0'ı duyurmaktan mutluluk duyuyor. Rust, herkesin güvenilir ve verimli yazılımlar geliştirmesini sağlayan bir programlama dilidir.

1.82.0 sürümündeki yenilikler neler?​

Bu sürümle birlikte Cargo'ya önemli bir özellik eklendi: "cargo info" komutu. Bu komut sayesinde, bir paket hakkında detaylı bilgiye kolayca ulaşabilirsiniz. Örneğin, bir paketin en son sürümünün kaç olduğu gibi sorularınıza yanıt bulabilirsiniz. Bu özellik, daha önce üçüncü taraf uzantılarla sağlanıyordu ancak şimdi Cargo'nun temel bir parçası haline geldi.

Genellikle bu komut, projenizin "cargo.lock" dosyasındaki paket bilgilerini gösteriyor. Yani bir paketin daha yeni bir sürümü mevcutsa bu bilgiyi de size sunar. Örneğin, "cargo info [email protected]" komutu, "cc" kütüphanesinin yüklü olan sürümünün 1.1.30 olup olmadığını kontrol eder ve sonucu size sunar.

Daha fazlası...