Rust 1.47 programmeerimiskeele väljalase

avaldatud süsteemi programmeerimiskeele versioon 1.47 Rust, mille asutas Mozilla projekt. Keel keskendub mälu ohutusele, pakub automaatset mäluhaldust ja vahendit ülesannete kõrge paralleelsuse saavutamiseks ilma kasutamata prügikorjaja и runtime (käitusaeg taandub standardteegi põhikäivitamisele ja hooldusele).

Rusti automaatne mäluhaldus välistab osutitega manipuleerimisel tekkivad vead ja kaitseb madala tasemega mäluga manipuleerimisest tulenevate probleemide eest, nagu mälupiirkonnale juurdepääs pärast selle vabastamist, null-osuti viited, puhvri ületamised jne. Arendatakse paketihaldurit teekide levitamiseks, komplekteerimise tagamiseks ja sõltuvuste haldamiseks projekti kaudu. last. Hoidlat toetatakse teekide hostimiseks crates.io.

Kõik uuendused:

  • Rakendatud tüüpide tugi massiivid mis tahes suurus. Kuna varem ei olnud võimalik määratleda kõigi täisarvude jaoks üldisi funktsioone, pakkus standardne teek sisseehitatud tunnuste tuge ainult massiividele, mille suurus oli kuni 32 elementi (iga suuruse tunnused olid staatiliselt määratletud). Tänu konstantsete geneeriliste funktsioonide (“const generics”) funktsionaalsuse loomisele sai võimalikuks defineerida üldfunktsioone mis tahes massiivi suuruse jaoks, kuid need ei sisaldu veel stabiilsete keelefunktsioonide hulgas, kuigi need on kompilaatoris rakendatud ja on nüüd kaasatud standardteegis mis tahes suurusega massiivi tunnuste jaoks.

    Näiteks järgmine konstruktsioon versioonis Rust 1.47 prindib massiivi sisu, kuigi varem oleks see põhjustanud tõrke:

    fn main() {
    olgu xs = [0; 34];

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

  • Lühemate jälgede väljund (backtrace), väljund hädaolukordades. Elemendid, mis enamikus olukordades ei paku huvi, kuid segavad väljundit ja juhivad tähelepanu probleemi peamistelt põhjustelt, jäetakse jälgimisest välja. Täisjälje tagastamiseks võite kasutada keskkonnamuutujat "RUST_BACKTRACE=full". Näiteks koodi jaoks

    fn main() {
    paanika!();
    }

    Varem väljastati jälg 23 etapis, kuid nüüd vähendatakse seda
    3 sammu, mis võimaldavad teil olemusest kohe aru saada:

    lõim 'main' sattus paanikasse 'selgesõnalise paanika' peale, src/main.rs:2:5
    virna tagasijälg:
    0: std::paanika::begin_panic
    aadressil /rustc/d…d75a/library/std/src/panicking.rs:497
    1: mänguväljak::peamine
    aadressil ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    aadressil /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc-kompilaatorit on värskendatud, et seda kasutada LLVM 11 (Rooste kasutab LLVM jaoks taustaprogrammina koodi genereerimine). Samal ajal säilib võimalus ehitada vanemate LLVM-idega kuni versioonini 8, kuid vaikimisi (s. rust-lang/llvm-projekt) kasutab nüüd LLVM 11. LLVM 11 peaks ilmuma lähipäevil.
  • Windowsi platvormil pakub rustc-kompilaator tuge juhtimisvoo terviklikkuse kontrollide (Control Flow Guard) lubamiseks, mis aktiveeritakse lipu "-C control-flow-guard" abil. Teistel platvormidel seda lippu praegu eiratakse.
  • Uus osa API-sid on üle viidud stabiilsesse kategooriasse, sealhulgas stabiliseeritud
    Ident::uus_toores,
    Vahemik:: on_tühi,
    Vahemik kaasa arvatud::on_tühi,
    Tulemus::as_deref,
    Tulemus::as_deref_mut,
    Vana::leke,
    pointer::offset_from,
    f32::TAU ja
    f64::TAU.

  • Atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis, kasutatakse järgmistes meetodites:
    • uus kõigi täisarvude jaoks peale nulli;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ja saturating_mul kõigi täisarvude puhul;
    • is_ascii_alphabetic, is_ascii_whitespace, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_number, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ja is_ascii ja_ucontrol8 tüüpide jaoks.
  • FreeBSD jaoks kaasatud tööriistakomplekt FreeBSD 11.4-st (FreeBSD 10 ei toeta LLVM 11).

Allikas: opennet.ru

Lisa kommentaar