Rust 1.58 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ış ümumi təyinatlı Rust 1.58 proqramlaşdırma dilinin buraxılışı nəşr olunub. 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 və ya iş vaxtından istifadə etmədən yüksək tapşırıq 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 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.

Əsas yeniliklər:

  • Sətir formatlaşdırma bloklarında sətirdən sonra açıq şəkildə qeyd olunan dəyişənləri nömrə və adla əvəz etmək üçün əvvəllər mövcud olan imkandan əlavə, sətirə “{identifikator}” ifadəsini əlavə etməklə ixtiyari identifikatorları əvəz etmək imkanı həyata keçirilir. Məsələn: // Əvvəllər dəstəklənən konstruksiyalar: println!("Salam, {}!", get_person()); println!("Salam, {0}!", get_person()); println!("Salam, {şəxs}!", şəxs = get_person()); // indi siz təyin edə bilərsiniz let person = get_person(); println!("Salam, {şəxs}!");

    İdentifikatorlar birbaşa formatlaşdırma seçimlərində də göstərilə bilər. let (en, dəqiqlik) = get_format(); get_scores() daxilində (ad, xal) { println!("{name}: {score:width$.precision$}"); }

    Yeni əvəzetmə “panik!” makrosu istisna olmaqla, sətir formatının tərifini dəstəkləyən bütün makrolarda işləyir. Rust dilinin 2015 və 2018 versiyalarında panik!("{ident}") adi sətir kimi qəbul edilir (Rust 2021-də əvəzetmə işləyir).

  • Windows platformasındakı std::process::Əmr strukturunun davranışı elə dəyişdirilib ki, əmrləri yerinə yetirərkən təhlükəsizlik səbəbi ilə artıq cari kataloqda icra edilə bilən faylları axtarmasın. Cari kataloq xaric edilib, çünki proqramlar etibarsız kataloqlarda (CVE-2021-3013) işlədilirsə, o, zərərli kodu icra etmək üçün istifadə edilə bilər. Yeni icra edilə bilən aşkarlama məntiqi Rust qovluqlarının, proqram kataloqunun, Windows sistem kataloqunun və PATH mühit dəyişənində göstərilən qovluqların axtarışını əhatə edir.
  • Standart kitabxana, qaytarılma dəyərinə məhəl qoyulmadıqda xəbərdarlıq vermək üçün "#[istifadə_istifadə etməli]" işarəsi ilə işarələnmiş funksiyaların sayını genişləndirdi, bu, funksiyanın yeni dəyər qaytarmaq əvəzinə dəyərləri dəyişdirəcəyini fərz etməklə yaranan səhvləri müəyyən etməyə kömək edir.
  • 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:
    • Metadata::simvol_bağlantısı
    • Path::sym_link
    • {tamsayı}::saturating_div
    • Seçim::qaldırma_qaldırılmamış
    • Nəticə::qaldırılma_qaldırıldı
    • Nəticə::unwrap_err_checked
  • Onun sabitlər əvəzinə istənilən kontekstdə istifadə imkanını təyin edən "const" atributundan funksiyalarda istifadə olunur:
    • Müddəti::yeni
    • Müddət::checked_add
    • Müddət::doyma_əlavə
    • Müddət::checked_sub
    • Müddət::saturating_sub
    • Müddət::checked_mul
    • Müddət::saturating_mul
    • Müddət::checked_div
  • "const" kontekstlərində "*const T" göstəricilərinin istinaddan çıxarılmasına icazə verilir.
  • Yük paketi menecerində rust_version sahəsi paket metaməlumatına, “--message-format” seçimi isə “yük quraşdırma” əmrinə əlavə edilmişdir.
  • Kompilyator CFI (Control Flow Integrity) mühafizə mexanizmi üçün dəstəyi həyata keçirir, bu da hər dolayı çağırışdan əvvəl normal icra qaydasının (nəzarət axınının) pozulmasına səbəb ola biləcək müəyyən edilməmiş davranışın bəzi formalarını aşkar etmək üçün yoxlamalar əlavə edir. funksiyalar üzrə yaddaşda saxlanılan göstəriciləri dəyişdirən istismarlardan istifadə.
  • Kompilyator sınaq zamanı kod əhatəsini qiymətləndirmək üçün istifadə edilən LLVM əhatə dairəsinin müqayisə formatının 5 və 6-cı versiyaları üçün dəstək əlavə etdi.
  • Kompilyatorda LLVM-nin minimum versiyası üçün tələblər LLVM 12-a qaldırılır.
  • x86_64-naməlum-none platforması üçün üçüncü dəstək səviyyəsi həyata keçirildi. Üçüncü səviyyə əsas dəstəyi əhatə edir, lakin avtomatlaşdırılmış sınaq, rəsmi quruluşların nəşri və ya kodun tikilib-qurula bilməyəcəyini yoxlamadan.

Bundan əlavə, Microsoft tərəfindən Windows OS üçün proqramlar hazırlamaq üçün Rust dilindən istifadə etməyə imkan verən Windows 0.30 kitabxanaları üçün Rust-un buraxılışını qeyd edə bilərik. Dəstə Rust proqramlarında Win API-yə daxil ola biləcəyiniz iki qutu paketi (windows və windows-sys) daxildir. API dəstəyi üçün kod API-ni təsvir edən metadatadan dinamik şəkildə yaradılır ki, bu da sizə yalnız mövcud Win API zəngləri üçün deyil, gələcəkdə görünəcək zənglər üçün dəstəyi həyata keçirməyə imkan verir. Yeni versiya UWP (Universal Windows Platforması) hədəf platforması üçün dəstək əlavə edir və Handle və Debug növlərini həyata keçirir.

Mənbə: opennet.ru

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