Rust programlama dili sürümü 2021 (1.56)

Mozilla projesi tarafından kurulan ancak şu anda bağımsız kar amacı gütmeyen kuruluş Rust Foundation'ın himayesinde geliştirilen sistem programlama dili Rust 1.56'nın sürümü yayınlandı. Normal sürüm numarasına ek olarak sürüm aynı zamanda Rust 2021 olarak da adlandırıldı ve son üç yılda önerilen değişikliklerin istikrara kavuşturulduğuna işaret ediyor. Rust 2021 aynı zamanda, Rust 2018'in piyasaya sürülmesinin son üç yılda dilin gelişiminin temeli haline gelmesine benzer şekilde, önümüzdeki üç yıl içinde işlevselliğin artırılmasının temelini oluşturacak.

Uyumluluğu korumak için geliştiriciler programlarında "2015", "2018" ve "2021" etiketlerini kullanabilir ve programların Rust'un seçilen sürümlerine karşılık gelen dil durumu dilimlerine bağlanmasına olanak tanır. Uyumsuz değişiklikleri ayırmak için sürümler getirildi ve kargo paketlerinin meta verilerinde “[paket]” bölümündeki “baskı” alanı aracılığıyla yapılandırıldı. Örneğin “2018” sürümü, 2018 sonu itibarıyla stabil hale getirilen işlevselliklerin yanı sıra, uyumluluğu bozmayan tüm değişiklikleri de kapsıyor. 2021 sürümü ayrıca mevcut 1.56 sürümünde önerilen ve gelecekteki uygulama için onaylanan, birlikte çalışabilirliği çığır açan özellikleri de içeriyor. Editörler, dilin yanı sıra araçların ve belgelerin durumunu da dikkate alır.

Rust 2021'de kaydedilen başlıca uyumsuzluklar:

  • Kapanışlarda Ayrı Yakalama - Kapanışlar artık tanımlayıcının tamamı yerine tek tek alan adlarını yakalayabilir. Örneğin, "|| balta + 1", "a" yerine yalnızca "balta"yı yakalayacaktır.
  • Diziler için IntoIterator özelliği: array.into_iter(), dizi öğelerini referanslar yerine değerlere göre yinelemenize olanak tanır.
  • macro_rules'da “|” ifadelerinin işlenmesi değiştirildi (Boole OR) kalıplarda - Eşleşmelerdeki ":pat" belirleyicisi artık "A | B".
  • Kargo paketi yöneticisi, varsayılan olarak Rust 1.51'de desteği sunulan özellik çözümleyicinin ikinci sürümünü içerir.
  • TryFrom, TryInto ve FromIterator özellikleri prelude standart kütüphane modülüne eklendi.
  • Panik!(..) ve iddia!(ifade, ..) makroları artık dizeleri biçimlendirmek için println!()'a benzer şekilde her zaman format_args!(..) işlevini kullanıyor.
  • ident#, ident»..." ve ident'...' ifadeleri dil sözdiziminde saklıdır.
  • bare_trait_objects ve ellipsis_clusive_range_patterns uyarıları hatalara taşındı.

Rust 1.56'daki yenilikler:

  • Cargo.toml'deki "[paket]" bölümüne, sandık paketi için desteklenen minimum Rust sürümünü belirleyebileceğiniz pas versiyonu alanı eklendi. Mevcut sürüm belirtilen parametreye uymuyorsa Cargo bir hata mesajı vererek çalışmayı durduracaktır.
  • "Bağlama @ desen" ifadeleri kullanılarak desen eşleşirken, ek bağlamaların belirtilmesi için destek sağlanır (örneğin, "let matris @ Matrix { satır_len, .. } = get_matrix();").
  • API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
    • std::os::unix::fs::chroot
    • GüvensizCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • Dize::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Fonksiyonlarda sabitler yerine herhangi bir bağlamda kullanılma olasılığını belirleyen “const” özelliği kullanılır.
    • std::mem::transmute
    • [T]::ilk
    • [T]::split_first
    • [T]::son
    • [T]::split_last
  • Derleyici, LLVM sürüm 13'ü kullanacak şekilde değiştirildi.
  • aarch64-apple-ios-sim platformu için ikinci düzey, powerpc-unknown-freebsd ve riscv32imc-esp-espidf platformları 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.

Rust'un bellek güvenliğine odaklandığını, otomatik bellek yönetimi sağladığını ve bir çöp toplayıcı veya çalışma zamanı kullanmadan (çalışma zamanı standart kütüphanenin temel başlatılmasına ve bakımına indirgenmiştir) iş yürütmede yüksek paralellik elde etmek için bir araç sağladığını hatırlayın.

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.

Kaynak: opennet.ru

Yorum ekle