Rust programlama dili 1.58 sürümü

Mozilla projesi tarafından kurulan ancak şu anda bağımsız kar amacı gütmeyen kuruluş Rust Foundation'ın himayesinde geliştirilen genel amaçlı programlama dili Rust 1.58'in sürümü yayınlandı. Dil, bellek güvenliğine odaklanır, otomatik bellek yönetimi sağlar ve bir çöp toplayıcı veya çalışma zamanı kullanmadan yüksek görev paralelliği elde etmek için araçlar sağlar (çalışma zamanı, standart kitaplığın temel başlatılmasına ve bakımına indirgenir).

Rust'un otomatik bellek yönetimi, işaretçileri değiştirirken oluşan hataları ortadan kaldırır ve serbest bırakıldıktan sonra bir bellek bölgesine erişim, boş işaretçi referansları, arabellek taşmaları vb. gibi düşük seviyeli bellek manipülasyonundan kaynaklanan sorunlara karşı koruma sağlar. Kütüphaneleri dağıtmak, montajı sağlamak ve bağımlılıkları yönetmek için proje, Kargo paket yöneticisini geliştiriyor. Crates.io deposu, kitaplıkları barındırmak için desteklenir.

Ana yenilikler:

  • Satır biçimlendirme bloklarında, bir satırdan sonra açıkça listelenen değişkenleri numara ve isimle değiştirme olanağına ek olarak, satıra "{tanımlayıcı}" ifadesini ekleyerek isteğe bağlı tanımlayıcıları değiştirme yeteneği uygulanır. Örneğin: // Daha önce desteklenen yapılar: println!("Merhaba, {}!", get_person()); println!("Merhaba, {0}!", get_person()); println!("Merhaba {kişi}!", kişi = get_person()); // şimdi belirtebilirsiniz let kişi = get_person(); println!("Merhaba {kişi}!");

    Tanımlayıcılar doğrudan biçimlendirme seçeneklerinde de belirtilebilir. let (genişlik, hassasiyet) = get_format(); for (name, puan) in get_scores() { println!("{name}: {score:width$.precision$}"); }

    Yeni değiştirme, "panik!" makrosu hariç, dize biçimi tanımını destekleyen tüm makrolarda çalışır. Rust dilinin 2015 ve 2018 sürümlerinde panik!("{ident}") normal bir dize olarak kabul edilir (Rust 2021'de değiştirme işe yarar).

  • Windows platformundaki std::process::Command yapısının davranışı değiştirildi; böylece komutlar yürütülürken güvenlik nedeniyle artık geçerli dizindeki yürütülebilir dosyaları aramayacak. Geçerli dizin, programların güvenilmeyen dizinlerde çalıştırılması durumunda kötü amaçlı kod yürütmek için kullanılabileceğinden hariç tutuldu (CVE-2021-3013). Yeni yürütülebilir algılama mantığı, Rust dizinlerinde, uygulama dizininde, Windows sistem dizininde ve PATH ortam değişkeninde belirtilen dizinlerde arama yapmayı içerir.
  • Standart kitaplık, dönüş değeri göz ardı edilirse bir uyarı yayınlamak için "#[must_use]" olarak işaretlenen işlevlerin sayısını genişletti; bu, bir işlevin yeni bir değer döndürmek yerine değerleri değiştireceğini varsaymanın neden olduğu hataları tanımlamaya yardımcı olur.
  • API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
    • Meta veriler::is_symlink
    • Yol::is_symlink
    • {integer}::saturating_div
    • Seçenek::unwrap_unchecked
    • Sonuç::unwrap_unchecked
    • Sonuç::unwrap_err_unchecked
  • Sabitler yerine herhangi bir bağlamda kullanılma olasılığını belirleyen "const" niteliği işlevlerde kullanılır:
    • Süre::yeni
    • Süre::checked_add
    • Süre::saturating_add
    • Süre::checked_sub
    • Süre::saturation_sub
    • Süre::checked_mul
    • Süre::saturating_mul
    • Süre::checked_div
  • "Const" bağlamlarında "*const T" işaretçilerinin referansının kaldırılmasına izin verildi.
  • Cargo paket yöneticisinde paket metadatasına Rust_version alanı eklenmiş olup, “cargo install” komutuna “--message-format” seçeneği eklenmiştir.
  • Derleyici, her dolaylı çağrıdan önce, normal yürütme sırasının (kontrol akışı) ihlal edilmesine yol açabilecek bazı tanımlanmamış davranış biçimlerini tespit etmek için kontroller ekleyen CFI (Kontrol Akışı Bütünlüğü) koruma mekanizması desteğini uygular. işlevlerde bellekte saklanan işaretçileri değiştiren istismarların kullanılması.
  • Derleyici, test sırasında kod kapsamını değerlendirmek için kullanılan LLVM kapsam karşılaştırma formatının 5. ve 6. sürümleri için destek ekledi.
  • Derleyicide, LLVM'nin minimum sürümüne yönelik gereksinimler LLVM 12'a yükseltildi.
  • x86_64-unknown-none platformu için üçüncü düzey destek uygulandı. Üçüncü düzey temel desteği içerir ancak otomatik testler, resmi yapıların yayınlanması veya kodun oluşturulup oluşturulamayacağının kontrol edilmesi söz konusu değildir.

Ek olarak, Microsoft tarafından Windows işletim sistemi için uygulamalar geliştirmek üzere Rust dilini kullanmanıza olanak tanıyan Rust for Windows 0.30 kitaplıklarının yayımlandığını da not edebiliriz. Set, Rust programlarındaki Win API'sine erişebileceğiniz iki sandık paketi (windows ve windows-sys) içerir. API desteği kodu, API'yi tanımlayan meta verilerden dinamik olarak oluşturulur; bu, yalnızca mevcut Win API çağrıları için değil, gelecekte görünecek çağrılar için de destek uygulamanıza olanak tanır. Yeni sürüm, UWP (Evrensel Windows Platformu) hedef platformu için destek ekler ve Tanıtıcı ve Hata Ayıklama türlerini uygular.

Kaynak: opennet.ru

Yorum ekle