Rust 1.47 programmēšanas valodas izlaidums

publicēts sistēmas programmēšanas valodas versija 1.47 Rūsa, ko dibināja Mozilla projekts. Valoda koncentrējas uz atmiņas drošību, nodrošina automātisku atmiņas pārvaldību un nodrošina iespēju sasniegt augstu uzdevumu paralēlismu, neizmantojot atkritumu savācējs и runtime (izpildlaiks ir saistīts ar standarta bibliotēkas pamata inicializēšanu un uzturēšanu).

Rust automātiskā atmiņas pārvaldība novērš kļūdas, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas no zema līmeņa atmiņas manipulācijām, piemēram, piekļuves atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju novirzēm, bufera pārtēriņiem utt. Tiek izstrādāts pakotņu pārvaldnieks, lai izplatītu bibliotēkas, nodrošinātu montāžu un pārvaldītu projekta atkarības. krava. Repozitorijs tiek atbalstīts bibliotēku mitināšanai crates.io.

Galvenais jauninājumiem:

  • Īstenots atbalsts veidiem masīvi jebkura izmēra. Iepriekš, jo nevarēja definēt vispārīgas funkcijas visām veselu skaitļu vērtībām, standarta bibliotēka nodrošināja iebūvētu pazīmju atbalstu tikai masīviem, kuru lielums bija līdz 32 elementiem (katra izmēra pazīmes tika definētas statiski). Pateicoties pastāvīgo ģenērisko (“const generics”) funkcionalitātes izveidei, kļuva iespējams definēt vispārīgas funkcijas jebkuram masīva izmēram, taču tās vēl nav iekļautas stabilās valodas funkcijās, lai gan tās ir ieviestas kompilatorā un tagad iesaistīti standarta bibliotēkā jebkura izmēra masīva pazīmēm.

    Piemēram, šāda konstrukcija Rust 1.47 izdrukās masīva saturu, lai gan iepriekš tas būtu radījis kļūdu:

    fn galvenais() {
    lai xs = [0; 34];

    println!("{:?}", xs);
    }

  • Nodrošina īsāku pēdu izvadi (backtrace), izvadi ārkārtas situācijās. Elementi, kas vairumā situāciju neinteresē, bet pārblīvē izvadi un novērš uzmanību no galvenajiem problēmas cēloņiem, tiek izslēgti no izsekošanas. Lai atgrieztu pilnu izsekošanu, varat izmantot vides mainīgo "RUST_BACKTRACE=full". Piemēram, kodam

    fn galvenais() {
    panika!();
    }

    Iepriekš trase tika izvadīta 23 posmos, bet tagad tā tiks samazināta līdz
    3 soļi, kas ļauj uzreiz saprast būtību:

    pavediens "galvenais" panikā no "skaidras panika", src/main.rs:2:5
    Stack backtrace:
    0: std::panicking::begin_panic
    vietnē /rustc/d…d75a/library/std/src/panicking.rs:497
    1: rotaļu laukums::galvenais
    vietnē ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    vietnē /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc kompilators ir atjaunināts, lai izveidotu, izmantojot LLVM 11 (Rūsa izmanto LLVM kā aizmugure priekš koda ģenerēšana). Tajā pašā laikā tiek saglabāta iespēja veidot ar vecākām LLVM līdz pat 8. versijai, taču pēc noklusējuma ( rust-lang/llvm-projekts) tagad izmanto LLVM 11. Paredzams, ka LLVM 11 iznāks tuvākajās dienās.
  • Windows platformā rustc kompilators nodrošina atbalstu, lai iespējotu kontroles plūsmas integritātes pārbaudes (Control Flow Guard), kas tiek aktivizētas, izmantojot karogu “-C control-flow-guard”. Citās platformās šis karogs pagaidām tiek ignorēts.
  • Jauna API daļa ir pārcelta uz stabilo kategoriju, tostarp stabilizētā
    Ident::new_raw,
    Diapazons::ir_tukšs,
    Diapazons Iekļauts::ir_tukšs,
    Rezultāts::as_deref,
    Rezultāts::as_deref_mut,
    Vec::noplūde,
    rādītājs::offset_from,
    f32::TAU un
    f64::TAU.

  • Metodēs tiek izmantots atribūts “const”, kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā:
    • jauns visiem veseliem skaitļiem, izņemot nulli;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub un saturating_mul visiem veseliem skaitļiem;
    • is_ascii_alphabetic, is_ascii_lielie burti, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace un is_ascii un_ucontrol veidi.
  • Priekš FreeBSD iesaistīti rīkkopa no FreeBSD 11.4 (FreeBSD 10 neatbalsta LLVM 11).

Avots: opennet.ru

Pievieno komentāru