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

nəşr edilmişdir sistem proqramlaşdırma dili buraxılışı Pas 1.42, 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əçiliyi tərtibatçını göstəricilərin manipulyasiyasından azad edir və boş yaddaşa daxil olma, boş göstəricidən imtina, buferin aşılması və s. kimi aşağı səviyyəli yaddaş manipulyasiyasından yaranan problemlərdən qoruyur. 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.

Əsas yeniliklər:

  • Əlavə edilib dilim hissələrinin uyğunlaşdırılması üçün şablonlara dəstək (dinamik massivlər, dilimlər). Əvvəllər dəqiq uyğunluqlara icazə verilirdi, indi isə massivin qalan elementlərini əhatə etmək üçün “..” işarəsi olan konstruksiyalardan istifadə etmək mümkündür. Misal üçün:

    fn foo(sözlər: &[&str]) {
    uyğun sözlər {

    // massivin ilkin elementlərini yoxlayır və məhəl qoymur
    onları izləyən elementlər
    ["Salam", "Dünya", "!", ..] => println!("Salam Dünya!"),

    // "Foo" və "Bar" ilk iki elementini yoxlayır, qalanları isə vacib deyil
    ["Foo", "Bar", ..] => println!("Baz"),

    // hər şeyə məhəl qoyma, lakin sonuncu element "!" olmalıdır.
    [.., “!”] => println!(“!!!”),

    // başlanğıc diliminə “z” olması lazım olan sonuncu elementdən başqa hər şeyi daxil edirik.
    [start @ .., "z"] => println!("başlayır: {:?}", başlanğıc),

    // son dilimdə birinci elementdən başqa hər şeyi qoyuruq, “a” olmalıdır.
    ["a", end @ ..] => println!("bitirir: {:?}", son),

    istirahət => println!("{:?}", istirahət),
    }
    }

  • İfadə və nümunəni giriş kimi qəbul edən və naxış ifadəyə uyğun gələrsə, "doğru"nu qaytaran yeni "uyğundur!" makrosu əlavə edildi. Şablon “|” əməliyyatlarından istifadə edə bilər və əgər".

    uyğun self.partial_cmp(digər) {
    Bəzi(Az) => doğru,
    _ => yalan,
    }

    uyğun gəlir!(self.partial_cmp(digər), Bəziləri(Az))

    let foo = 'f';
    assert!(uyğundur!(foo, 'A'..='Z' | 'a'..='z'));

    let bar = Bəzi(4);
    assert!(uyğundur!(bar, Bəzi(x) əgər x > 2));

  • Səhv istifadə edildikdə panik mesajları göstərilir
    Variant və Nəticə növləri, indi libcore-da zəngi həyata keçirən koda keçidlər əvəzinə problemli zəngi edən koda keçid ilə sətir nömrələrini göstərir. Məsələn, dəyişiklik Option::None üzərindən açmaq və gözləmək çağırışlarına təsir edir və ya Nəticə növündə unwrap_err, wait, expect_err və oxşar üsullardan istifadə edərkən qəzaya uğrayır.

  • Yük paketi meneceri prosedur makroları olan paketlər üçün “proc_macro sandığı” avtomatik olaraq “xarici” bloka əvəz edir. Bu dəyişiklik kodda "extern sandıq proc_macro;" təyin etmədən "istifadə" direktivinin prosedur makrolarına tətbiq edilməsinə imkan verir. Məsələn, proqram “use proc_macro::TokenStream;” sətirindən istifadə edirsə, onda “extern sandıq proc_macro;” ondan çıxarılarsa, kod indi işlək qalacaq.
  • Standart kitabxananın imkanları genişləndirilib. İterdə::Boş əlavə etdi İstənilən T dəyəri üçün göndər və sinxronizasiya dəstəyi.
    Zənglər Pin::{map_unchecked, map_unchecked_mut} çatdırılmış "Ölçü" tətbiqi üçün növ dəyərini qaytarmaq məcburiyyətindən.
    io::Kursorda həyata keçirilən Partial Eq və Eq. “const” atributu sabitlərin əvəzinə istənilən kontekstdə istifadə imkanını müəyyən edir, tətbiq edilir Layout::yeni üsul üçün.

  • API-nin yeni hissəsi stabilləşdirilmiş CondVar::wait_while, CondVar::wait_timeout_while daxil olmaqla, stabil kateqoriyaya köçürüldü.
    DebugMap::key, DebugMap::value,
    ManuallyDrop::al,
    ptr::slice_from_raw_parts_mut və ptr::slice_from_raw_parts.

  • Error::təsvir metodu köhnəldi.
  • armv7a-none-eabi və riscv64gc-unknown-linux-gnu platformaları üçün ikinci səviyyəli dəstək təmin edilmişdir. riscv64gc-naməlum-linux-gnu platforması üçün standart kitabxanaya dəstək təmin edilmişdir.
    Apple 32 bit platformaları rütbəsi aşağı salındı əsas dəstəyi nəzərdə tutan üçüncü dəstək səviyyəsinə qədər, lakin avtomatlaşdırılmış sınaq və rəsmi quruluşların dərci olmadan. Dəstəyin aşağı salınması Apple-ın artıq 32 bitlik platformaları dəstəkləməməsi ilə əlaqədardır.

Mənbə: opennet.ru

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