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

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.73 ümumi məqsədli proqramlaşdırma dilinin buraxılışı dərc edilmişdir. Bu dil yaddaşın təhlükəsizliyinə diqqət yetirir və zibil toplayıcıdan və işləmə müddətindən istifadə etmədən yüksək iş paralelliyinə 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 yaddaşla işləmə üsulları tərtibatçını göstəricilərlə manipulyasiya edərkən xətalardan xilas edir və yaddaşın aşağı səviyyəli işləməsi nəticəsində yaranan problemlərdən qoruyur, məsələn, yaddaş sahəsi boşaldıqdan sonra ona daxil olmaq, sıfır göstəricilərə istinad etmək, bufer aşmaq və s. Kitabxanaları yaymaq, qurmaları təmin etmək və asılılıqları idarə etmək üçün layihə Yük paketi meneceri hazırlayır. Crates.io deposu kitabxanaların yerləşdirilməsi üçün dəstəklənir.

Yaddaşın təhlükəsizliyi Rust-da kompilyasiya zamanı istinad yoxlaması, obyekt sahibliyinin izlənməsi, obyektin istifadə müddətinin (əhatə dairələrinin) izlənməsi və kodun icrası zamanı yaddaşa girişin düzgünlüyünün qiymətləndirilməsi vasitəsilə təmin edilir. Rust həmçinin tam ədədlərin daşmasına qarşı qorunma təmin edir, istifadə etməzdən əvvəl dəyişən dəyərlərin məcburi işə salınmasını tələb edir, standart kitabxanada səhvləri daha yaxşı idarə edir, dəyişməz istinadlar və dəyişənlər konsepsiyasını standart olaraq tətbiq edir, məntiqi səhvləri minimuma endirmək üçün güclü statik yazma təklif edir.

Əsas yeniliklər:

  • Defolt proqram qəzası idarəedicisi (panik) tərəfindən verilən mesajların formatı yenidən işlənib. "Panik!" makrosunda göstərilən mətn indi dırnaq işarələri olmadan ayrıca sətirdə göstərilir ki, bu da mesajın oxunmasını asanlaşdırır və iç içə sitatlar mövcud olduqda və ya bir neçə sətirə bölündükdə çaşqınlığı aradan qaldırır. fn main() { let fayl = "ferris.txt"; panik!("oh yox! {fayl:?} tapılmadı!"); } Mövzu var idi 'əsas' 'oh yox! "ferris.txt" tapılmadı!', src/main.rs:3:5 "əsas" mövzu src/main.rs:3:5 ünvanında panikaya düşdü: yox! "ferris.txt" tapılmadı!

    “assert_eq” və “assert_ne” makroları işə salındıqda göstərilən mesajların çıxışı da yenidən işlənmişdir. fn main() { assert_eq!("🦀", "🐟", "ferris balıq deyil"); } 'əsas' mövzu 'təsdiq uğursuz oldu: `(sol == sağ)` sol: `"🦀"`, sağ: `"🐟"`: ferris balıq deyil', src/main.rs: 2 :5 'əsas' mövzu src/main.rs:2:5 ünvanında panikaya düşdü: `left == right` təsdiqi alınmadı: ferris balıq deyil sol: “🦀” sağ: “🐟”

  • RFC 3184-ə uyğun olaraq, yerli iplikli (thread_local) LocalKey yaddaş açarlarını birbaşa manipulyasiya etmək imkanı əlavə edildi. > və LocalKey > get(), set(), take() və dəyişdirmə() metodlarından istifadə etməklə, "with(|inner| ...)" bağlanmasından istifadə etmək əvəzinə, bu, əlavə başlanğıc kodu yerinə yetirmək ehtiyacını aradan qaldırır. “thread_local!” makrosundan istifadə edərkən yeni başlıqlar üçün müəyyən edilmiş standart dəyərlər thread_local! { statik ŞEYLƏR: Hüceyrə > = Cell::new(Vec::new()); } fn f() { // THINGS.with(|i| i.set(vec![32, 1, 2])); // THINGS.set oldu(vec![3, 1, 2]); // ... // icazə verildi v = THINGS.with(|i| i.take()); // let v oldu: Vec = THINGS.take(); }
  • 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:
    • İmzasız {integer}::div_ceil
    • İmzasız {integer}::next_multiple_of
    • İmzasız {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • Yerli Açar:: >:: almaq
    • Yerli Açar:: >:: təyin edin
    • Yerli Açar:: >::alın
    • Yerli Açar:: >:: dəyişdirin
    • Yerli Açar:: >::borrow_with
    • Yerli Açar:: >::with_borrow_mut
    • Yerli Açar:: >:: təyin edin
    • Yerli Açar:: >::alın
    • Yerli Açar:: >:: dəyişdirin
  • Onun sabitlər əvəzinə istənilən kontekstdə istifadə imkanını təyin edən "const" atributundan funksiyalarda istifadə olunur:
    • rc::Zəif::yeni
    • sync::Zəif::yeni
    • Nonull::as_ref
  • Kompilyator GCC və Clang-a bənzər “.comment” bölməsində versiya məlumatlarının qeydini təmin edir.
  • Üçüncü dəstək səviyyəsi aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl və x86_64-unknown-linux platformaları üçün həyata keçirilib. -ah. Üçü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.
  • Hədəf platforması wasm32-wasi-preview1-threads üçün ikinci dəstək səviyyəsi həyata keçirildi. İkinci səviyyəli dəstək montaj zəmanətini əhatə edir.

Mənbə: opennet.ru

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