Rust 2021 proqramlaşdırma dilinin buraxılışı (1.56)

Mozilla layihəsi tərəfindən əsası qoyulmuş, lakin indi Rust Foundation müstəqil qeyri-kommersiya təşkilatının himayəsi altında hazırlanmış Rust 1.56 sistem proqramlaşdırma dilinin buraxılışı nəşr olunub. Adi versiya nömrəsinə əlavə olaraq, buraxılış həm də Rust 2021 olaraq təyin olunur və son üç il ərzində təklif olunan dəyişikliklərin sabitləşməsini qeyd edir. Rust 2021, eyni zamanda, Rust 2018-in buraxılışının son üç ildə dilin inkişafı üçün əsas olduğu kimi, növbəti üç il ərzində funksionallığın artırılması üçün əsas olacaq.

Uyğunluğu qorumaq üçün tərtibatçılar öz proqramlarında "2015", "2018" və "2021" etiketlərindən istifadə edə bilərlər ki, bu da proqramları Rust-un seçilmiş nəşrlərinə uyğun dil dövlət dilimləri ilə əlaqələndirməyə imkan verir. Nəşrlər ayrı-ayrı uyğun olmayan dəyişikliklər üçün təqdim edilib və “[paket]” bölməsindəki “nəşr” sahəsi vasitəsilə yük paketlərinin metaməlumatlarında konfiqurasiya edilir. Məsələn, “2018” nəşri 2018-ci ilin sonuna stabilləşdirilmiş funksionallığı ehtiva edir və həmçinin uyğunluğu pozmayan bütün əlavə dəyişiklikləri əhatə edir. 2021-ci il nəşrinə əlavə olaraq cari 1.56 buraxılışında təklif olunan və gələcək tətbiq üçün təsdiq edilmiş qarşılıqlı fəaliyyət qabiliyyətini pozan funksiyalar daxildir. Dilin özündən əlavə, redaktorlar alətlərin və sənədlərin vəziyyətini də nəzərə alırlar.

Rust 2021-də qeydə alınan əsas uyğunsuzluqlar:

  • Bağlamalarda Ayrı Çəkmə - Bağlamalar indi bütün identifikator əvəzinə fərdi sahə adlarını çəkə bilər. Məsələn, "|| ax + 1" yalnız "a" əvəzinə "balta" tutacaq.
  • Massivlər üçün IntoIterator xüsusiyyəti: array.into_iter() massiv elementlərini istinadlara görə deyil, dəyərlərə görə təkrarlamağa imkan verir.
  • Makro_qaydalarda “|” ifadələrinin işlənməsi dəyişdirildi (Boolean OR) nümunələrdə - Uyğunluqlardakı ":pat" təyinedicisi indi "A | B".
  • Yük paketi meneceri standart olaraq Rust 1.51-də dəstəklənən funksiya həlledicisinin ikinci versiyasını ehtiva edir.
  • TryFrom, TryInto və FromIterator xüsusiyyətləri prelüd standart kitabxana moduluna əlavə edilmişdir.
  • Panik!(..) və assert!(ifadə, ..) makroları indi həmişə println!() kimi sətirləri formatlaşdırmaq üçün format_args!(..) istifadə edir.
  • İdent#, ident»..." və ident'...' ifadələri dil sintaksisində qorunur.
  • bare_trait_objects və ellipsis_inclusive_range_patterns xəbərdarlıqları xətalara köçürüldü.

Rust 1.56-da yenilik:

  • Cargo.toml-da, “[paket]” bölməsində pas versiyası sahəsi əlavə edilmişdir, onun vasitəsilə qutu paketi üçün Rust proqramının minimum dəstəklənən versiyasını müəyyən edə bilərsiniz. Cari versiya göstərilən parametrə uyğun gəlmirsə, Cargo xəta mesajı ilə işləməyi dayandıracaq.
  • "bağlayıcı @ naxış" ifadələrindən istifadə edərək nümunə uyğunluğu zamanı əlavə bağlamaların təyin edilməsi üçün dəstək verilir (məsələn, "matrix @ Matrix { row_len, .. } = get_matrix();").
  • API-nin yeni hissəsi stabillər kateqoriyasına köçürüldü, o cümlədən xüsusiyyətlərin üsulları və tətbiqləri stabilləşdirildi:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • vec::kiçilmək üçün
    • string::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Funksiyalarda sabitlərin əvəzinə istənilən kontekstdə istifadə imkanını təyin edən “const” atributundan istifadə olunur.
    • std::mem::transmute
    • [T]::ilk
    • [T]::birinci_bölün
    • [T]::son
    • [T]::son_ayır
  • Kompilyator LLVM 13 versiyasından istifadə etməyə dəyişdirilib.
  • İkinci səviyyəli dəstək aarch64-apple-ios-sim platforması və üçüncü səviyyə powerpc-unknown-freebsd və riscv32imc-esp-espidf platformaları üçün həyata keçirilib. Üçüncü səviyyə əsas dəstəyi əhatə edir, lakin avtomatlaşdırılmış sınaq, rəsmi quruluşların dərc edilməsi və ya kodun tikilib-qurula bilməyəcəyini yoxlamaq olmadan.

Xatırladaq ki, Rust yaddaşın təhlükəsizliyinə diqqət yetirir, yaddaşın avtomatik idarə edilməsini təmin edir və zibil toplayıcıdan və ya iş vaxtından istifadə etmədən işin icrasında yüksək paralelliyə nail olmaq üçün vasitələr təqdim edir (iş vaxtı standart kitabxananın əsas işə salınması və saxlanmasına qədər azaldılır).

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ə asılılıqları idarə etmək üçün layihə Yük paketi menecerini inkişaf etdirir. Crates.io deposu kitabxanaların yerləşdirilməsi üçün dəstəklənir.

Mənbə: opennet.ru

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