nəşr edilmişdir sistem proqramlaşdırma dili buraxılışı Pas 1.44, Mozilla layihəsi tərəfindən yaradılmışdır. Bu dil yaddaşın təhlükəsizliyinə diqqət yetirir, yaddaşın avtomatik idarə edilməsini təmin edir və zibil toplayıcıdan istifadə etmədən yüksək tapşırıq paralelliyinə nail olmaq üçün alətlər təqdim edir. uzunluğu.
Rust-un avtomatik yaddaş idarəetməsi göstəriciləri idarə edərkən səhvləri aradan qaldırır və aşağı səviyyəli yaddaş manipulyasiyasından yaranan problemlərdən qoruyur, məsələn, boşaldıqdan sonra yaddaş bölgəsinə daxil olmaq, null göstərici referensiyaları, bufer aşması və s. Kitabxanaları yaymaq, montajı təmin etmək və layihə tərəfindən asılılıqları idarə etmək üçün paket meneceri hazırlanır. Yük, proqram üçün lazım olan kitabxanaları bir kliklə əldə etməyə imkan verir. Kitabxanaların saxlanması üçün repozitoriya dəstəklənir crates.io.
Yeni buraxılışın elanının mətnində Rust tərtibatçıları siyasətə qarışdılar və polis zorakılığına qarşı etirazçılarla həmrəylik əlaməti olaraq Rust 1.44-də dəyişikliklərin tam icmalını dərc etməkdən qəti şəkildə imtina etdilər və bu məsələnin daha vacib olduğunu göstərdilər. texniki biliklərin mübadiləsindən daha çox. Əsas yeniliklər:
Yük paketi meneceri ağaca bənzər asılılıq qrafikini göstərən “yük ağacı” əmrini birləşdirir. Eyni paketin müxtəlif versiyalarında asılılıqları qiymətləndirməyə imkan verən “—dublikatlar” (“yük ağacı -d”) seçimi də əlavə edilib.
Std ("#![no_std]") ilə bağlı olmayan proqramlar üçün asinxron proqramlaşdırma üsullarına dəstək "async" funksiyası, asinxron hərəkət { ... } bloku və ".await" operatoru əsasında həyata keçirilir. bloklanmayan işləyicilərin əsas əmr axınının yazılmasını sadələşdirin.
Genişlənən modul iyerarxiyasının tərifi sxemi üçün dəstək təhlilçiyə əlavə edildi. Məsələn, "foo/bar/baz.rs" modulunun faktiki olmamasına baxmayaraq, aşağıdakı konstruksiya xəta yaratmayacaq (konstruksiya hələ də semantik cəhətdən etibarsızdır və xətaya səbəb ola bilər, lakin dəyişiklikləri burada görmək və təhlil etmək olar. makro və şərti tərtib səviyyəsi):
#[cfg(YANLIŞ)] mod foo {
mod paneli {
mod baz;
}
}
Rustc tərtibçisi artım rejimində “-C codegen-units” bayrağından istifadə etmək imkanı əlavə etmişdir. catch_unwind tətbiqi yenidən işlənmişdir ki, açma prosesi qeyri-aktiv edildikdə və heç bir istisna atılmadıqda onun heç bir performansa təsiri olmayacaq.
Səviyyə 64 dəstəyi aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos və x64_XNUMX-apple-tvos platformaları üçün təmin edilmişdir. Üçüncü səviyyə əsas dəstəyi nəzərdə tutur, lakin avtomatlaşdırılmış sınaq və rəsmi quruluşların dərci olmadan.
API-lərin yeni hissəsi stabilləşdirilmişlər də daxil olmaqla stabil kateqoriyaya köçürülüb
PathBuf::tutumlu,
PathBuf :: tutum,
PathBuf::clear,
PathBuf::rezerv,
PathBuf::reserve_dəqiq,
PathBuf :: sığdırmaq üçün küçültmək,
{f32|f64}::to_int_unchecked,
Layout::align_to,
Layout::pad_to_align,
Layout::massiv və
Layout::uzatmaq.
Standart kitabxananın genişləndirilmiş funksiyaları:
Vec::new()-də birbaşa əks olunan xüsusi "vec![]" variantı əlavə edildi ki, bu da "vec![]"-nin kontekstdə kontekstdə sabitlərin yerinə istifadə edilməsinə imkan verir.
Dönüştürmək üçün xüsusiyyətin tətbiqi (impl) əlavə edilmişdir::Infallible Sükut.
OsString ağıllı göstəriciləri tətbiq edir DerefMut и IndexMut, "&mut OsStr" geri qaytarılır.
proc_macro::LexError fmt::Display və Xəta tətbiq edir.
Sabitlərin əvəzinə hər hansı kontekstdə istifadə oluna biləcəyini müəyyən edən “const” atributu bütün tam ədədlər üçün from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes və to_ne_bytes üsullarında istifadə olunur.
Windows-da GNU platformaları üçün ".lib" əvəzinə ".a" formatında statik kitabxanaların yaradılması üçün əlavə dəstək.
LLVM üçün minimum tələblər LLVM versiyası 8-ə qaldırıldı.