Mozilla projesi tarafından kurulan ancak şu anda kar amacı gütmeyen bağımsız bir kuruluş olan Rust Foundation'ın himayesinde geliştirilen Rust 1.66 genel amaçlı programlama dilinin sürümü yayınlandı. Dil, bellek güvenliğine odaklanır ve bir çöp toplayıcı ve çalışma zamanı kullanımından kaçınırken yüksek iş paralelliği elde etmenin yollarını sağlar (çalışma zamanı, standart kitaplığın temel başlatma ve bakımına indirgenir).
Rust'ın bellek işleme yöntemleri, geliştiriciyi işaretçileri işlerken hatalardan korur ve serbest bırakıldıktan sonra bir bellek alanına erişme, boş işaretçilerin başvurusunu kaldırma, arabellek taşmaları vb. gibi düşük seviyeli bellek manipülasyonundan kaynaklanan sorunlara karşı koruma sağlar. Kitaplıkları dağıtmak, derlemeler sağlamak ve bağımlılıkları yönetmek için proje Kargo paketi yöneticisini geliştirir. Crates.io deposu kitaplıkları barındırmak için desteklenir.
Rust'ta bellek güvenliği, derleme zamanında referans kontrolü, nesne sahipliğinin izlenmesi, nesne ömürlerinin (kapsamların) izlenmesi ve kod yürütme sırasında bellek erişiminin doğruluğunun değerlendirilmesi yoluyla sağlanır. Rust ayrıca tamsayı taşmalarına karşı koruma sağlar, kullanımdan önce değişken değerlerinin zorunlu olarak başlatılmasını gerektirir, standart kitaplıkta hataları daha iyi işler, değişmez referanslar ve değişkenler kavramını varsayılan olarak uygular, mantıksal hataları en aza indirmek için güçlü statik yazım sunar.
Ana yenilikler:
- Tamsayı temsillerine sahip numaralandırmalarda (“#[repr(Int)]” özelliği), numaralandırma alanlar içerse bile, diskriminantın (numaralandırmadaki seçeneğin numarası) açık bir şekilde belirtilmesine izin verilir. #[repr(u8)] enum Foo { A(u8), # diskriminant 0 B(i8), # diskriminant 1 C(bool) = 42, # diskriminant 42 }
- Basitçe alınan değeri döndüren core::hint::black_box işlevi eklendi. Derleyici belirli bir işlevin belirli bir şey yaptığına inandığından, kod performans testi gerçekleştirirken veya oluşturulan makine kodunu incelerken derleyicinin döngü optimizasyonunu devre dışı bırakmak için black_box işlevi kullanılabilir (böylece derleyici kodu kullanılamaz olarak değerlendirmez ve kaldırmaz). BT). Örneğin, aşağıdaki örnekte black_box(v.as_ptr()) belirtilmesi, derleyicinin v vektörünün kullanımda olmadığını varsaymasını engeller. std::hint::black_box; kullanın fn push_cap(v: &mut Vec) { for i in 0..4 { v.push(i); black_box(v.as_ptr()); } }
- "Cargo" paket yöneticisi, Cargo.toml bildirimindeki bağımlılıkları komut satırından kaldırmanıza olanak tanıyan "remove" komutunu sunar.
- API'nin yeni bir bölümü kararlı kategorisine taşındı ve özelliklerin yöntemleri ve uygulamaları kararlı hale getirildi:
- proc_macro::Span::source_text
- u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, sarma_add_signed}
- i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, sarma_add_unsigned}
- i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, sarma_sub_unsigned}
- BTreeSet::{ilk, son, pop_first, pop_last}
- BTreeMap::{first_key_value, last_key_value,first_entry, last_entry, pop_first, pop_last}
- WASI kullanırken stdio kilit türleri için AsFd uygulamalarını ekleyin.
- impl TryFrom > Kutu<[T için; N]>
- çekirdek::hint::black_box
- Süre::try_from_secs_{f32,f64}
- Seçenek::sıkıştırmayı aç
- std::os::fd
- Şablonlarda “..X” ve “..=X” aralıklarının kullanımına izin verilir.
- Rusc derleyicisinin ön ucunu ve LLVM'nin arka ucunu birleştirirken, elde edilen kodun performansını artırmaya ve bellek tüketimini azaltmaya olanak tanıyan LTO (Bağlantı Süresi Optimizasyonu) ve BOLT (İkili Optimizasyon ve Düzen Aracı) optimizasyon modları kullanılır.
- Armv5te-none-eabi ve Thumbv5te-none-eabi 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.
- MacOS evrensel kitaplıklarına bağlanma desteği eklendi.
Ek olarak, Rust dil derleyicisinin (gccrs) ön ucunun GCC kod tabanına dahil edildiğini de not edebiliriz. Ön uç, Mayıs 13'te yayınlanacak olan GCC 2023 şubesine dahil edilmiştir. GCC 13'ten başlayarak, yerel GCC araçları, LLVM geliştirmeleri kullanılarak oluşturulan Rustc derleyicisini yüklemeye gerek kalmadan Rust dilindeki programları derlemek için kullanılabilir. Rust'un GCC 13 uygulaması, varsayılan olarak etkin olmayan bir beta sürüm olacaktır.
Kaynak: opennet.ru
