Rust 1.44 Proqramlaşdırma Dili Buraxılışı

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.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── ammonyak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-əgər v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── işarələmə5ever v0.9.0
    │ │ ├── log v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [quraşdırmadan asılılıqlar] │ │ │ └── versiya yoxlanışı v0.1.5
    ...

  • 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.
    • Unicode 13 üçün əlavə dəstək.
    • String-də həyata keçirilir From<&mut str>.
    • IoSlice xüsusiyyəti həyata keçirir Surəti.
    • Vec həyata keçirilir From<[T; N]>.
    • 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ı.

Mənbə: opennet.ru

Добавить комментарий