Pas 1.96.0

Basın bülteni yayınlandı. Pas 1.96.0 — Rust programlama dilinin en son kararlı sürümü. Güncelleme yayınlandı. 28 Mayıs 2026 yılBu, standart `rustup update stable` komutu kullanılarak kurulabilir. Başlıca değişiklikler arasında `core::range`'de yeni aralık türleri, desen eşleştirme makrolarının stabilizasyonu, WebAssembly derleme davranışının sıkılaştırılması ve Cargo'daki iki güvenlik açığının düzeltilmesi yer almaktadır.

Büyük değişiklikler

  • Yeni aralık türleri: core::range::Range*.
    Standart kütüphanede yeni aralık türleri sabitlendi: core::range::Range, RangeFrom, RangeInclusive ve bunlarla ilişkili yineleyiciler. core::ops'tan gelen eski türlerin aksine, yeni aralıklar doğrudan Iterator'ı uygulamaz, ancak IntoIterator aracılığıyla yineleyiciye dönüştürülür. Bu, bu aralıkların Kopyalanabilir olmasını sağlar; bu da örneğin bir aralığı yapı alanı olarak saklarken kullanışlıdır. Şu anda 0..1 gibi sözdizimi eski aralık türlerini oluşturur, ancak dilin gelecekteki bir sürümünde yeni türlere geçiş yapılması planlanmaktadır.

  • `assert_matches!` ve `debug_assert_matches!` eklendi.
    Yeni makrolar, bir değerin belirli bir kalıpla eşleşip eşleşmediğini kontrol etmenizi sağlar. Bu, kavram olarak assert!(matches!(…))'e benzer, ancak bir hata durumunda, değerin hata ayıklama gösterimi yazdırılır ve bu da teşhis işlemlerini basitleştirir. Bu makrolar, popüler üçüncü taraf kütüphanelerle çakışmaları önlemek için Prelude'a eklenmemiştir, bu nedenle core veya std'den açıkça içe aktarılmaları gerekir.

  • WebAssembly hedeflerinin davranışı değiştirildi.
    Rust artık WebAssembly derlemeleri için bağlayıcıya --allow-undefined parametresini iletmiyor. Tanımlanmamış semboller artık otomatik olarak "env" modülünden içe aktarmalara dönüştürülmek yerine, bağlama sırasında hata olarak ele alınıyor. Bu, derleme hatalarını ve geçersiz sembol adlarını daha erken yakalamayı sağlayacaktır. Gerekirse, RUSTFLAGS=-Clink-arg=--allow-undefined kullanarak veya #[link(wasm_import_module = "env")] kullanarak içe aktarılan wasm modülünü açıkça belirterek eski davranışa geri dönülebilir.

  • Cargo güvenlik yamalarını aldı.
    Rust 1.96.0, üçüncü taraf kayıt defterlerini kullananları etkileyen iki güvenlik açığını düzeltiyor. CVE-2026-5223 Crate tarball'ları içindeki sembolik bağlantıların işlenmesiyle ilgili olarak: üçüncü taraf bir kayıt defterinden gelen kötü amaçlı bir paket, aynı kayıt defterinden gelen başka bir paketin önbelleğini geçersiz kılabilir. Rust 1.96.0'dan itibaren Cargo, sembolik bağlantı içeren crate arşivlerini reddeder. CVE-2026-5222 Bu sorun, seyrek kayıt defterindeki URL normalleştirmesiyle ilgilidir ve nadir durumlarda bir Cargo token'ının kötü amaçlı bir kayıt defterine gönderilmesine neden olabilir. Rust ekibine göre, crates.io kullanıcıları bu sorunlardan etkilenmemektedir.

  • Dildeki değişiklikler.
    Bu sürüm şunları içermektedir: Birkaç küçük düzeltme ve iyileştirme: Makroların expr meta değişkenlerinin cfg'ye geçirilmesine izin verildi, demet ifadelerindeki never-type dönüştürme hatası düzeltildi, fonksiyon argümanları için yanlış tür çıkarım ipuçlarının nadir durumları düzeltildi, satır içi derlemede s390x vektör kayıtları için destek eklendi ve ManuallyDrop sabitlerinin şablon olarak kullanılmasına tekrar izin verildi - bu, Rust 1.94.0'da ortaya çıkan bir hatayı düzeltiyor.

  • Derleyici ve platformlardaki değişiklikler.
    için LinuxLoongArch hedefleri için bağlantı gevşetme desteği etkinleştirildi; bu, kod dağıtımından sonra bazı geçişleri ve çağrıları basitleştiren bir bağlantı optimizasyonudur. riscv64gc-unknown-fuchsia için temel yapılandırma, vektör uzantıları desteğiyle RVA22 profiline güncellendi.

  • Standart kütüphane güncellemeleri.
    Sıfır olmayan tamsayı aralıkları üzerinde yineleme desteği eklendi. SGX'te ToSocketAddr aracılığıyla ana bilgisayar adreslerinin tembel işlenmesi de düzeltildi ve "okunabilir/yazılabilir" bellek tanımı dokümantasyonda ve dahili sözleşmelerde açıklığa kavuşturuldu: genel tanımdan boş işaretçi kaldırıldı ve istisnalar artık belirli yöntemler için ayrı ayrı belirtiliyor.

  • Stabilize edilmiş API'ler.
    Stabilize edilmiş arayüzler arasında assert_matches!, debug_assert_matches! ve From uygulamaları yer almaktadır. AssertUnwindSafe için LazyCell ve LazyLock Ayrıca, core::range'den gelen yeni aralık türleri ve yineleyiciler de dahil olmak üzere, Range, RangeFrom, RangeToInclusive ve bunların yineleyicileri.

  • Kargo: Bağımlılıklarda ve dokümantasyonda yapılan değişiklikler.
    Artık bir bağımlılık hem bir Git deposunu hem de alternatif bir kayıt defterini belirtebilir: Git sürümü yerel olarak kullanılacak ve kayıt defteri sürümü yayınlama sırasında kullanılacaktır; bu, crates.io'daki davranışa benzer. Cargo yapılandırmasında target.'cfg(..)'.rustdocflags desteği de eklendi.

  • Rustdoc artık dokümantasyonu daha doğru bir şekilde ele alıyor.
    Kullanımdan kaldırılmış API notları artık, daha önce white-space: pre-wrap aracılığıyla yapılan özel işlem olmadan, normal dokümantasyon olarak görüntüleniyor. Ayrıca, rustdoc artık impl içindeki öğeler için missing_doc_code_examples'ı denetlemiyor ve metotlar ile ilgili fonksiyonlar artık dokümantasyon kenar çubuğunda ayrı olarak gösteriliyor.

  • Olası uyumsuzluklar.
    Bu sürüm, standart dışı kodlarda ortaya çıkabilecek birkaç değişiklik içermektedir: bazı #[repr(Int)] enum'larının düzeni aşırı durumlarda düzeltildi ve Pin'deki bazı gereksiz boyutlandırma dışı dönüştürmeler devre dışı bırakıldı. WebAssembly derlemeleri artık tanımlanmamış sembollerde çöküyor, yanlışlıkla stabilize edilen #![reexport_test_harness_main] özniteliği tekrar özellik kısıtlamasına tabi tutuldu, -Csoft-float seçeneği kaldırıldı ve minimum harici LLVM sürümü 21'e yükseltildi. AVR için, C çift duyarlıklı sayılar bu hedeflerde varsayılan olarak 32 bit olduğundan, c_double türü f32 olarak değiştirildi.

Kaynak: linux.org.ru

DDoS korumalı siteler, VPS VDS sunucuları için güvenilir hosting satın alın 🔥 DDoS korumalı, güvenilir VPS ve VDS sunucu barındırma hizmeti satın alın | ProHoster