Izdanje Rust programskog jezika 1.47

Objavljeno izdanje 1.47 sistemskog programskog jezika Hrđa, osnovan projektom Mozilla. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža sredstva za postizanje visokog paralelizma zadataka bez korištenja sakupljač smeća и runtime (vrijeme izvođenja se svodi na osnovnu inicijalizaciju i održavanje standardne knjižnice).

Rustovo automatsko upravljanje memorijom uklanja pogreške prilikom manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što je pristup memorijskoj regiji nakon što je oslobođena, dereferenciranje nultog pokazivača, prekoračenje međuspremnika, itd. Upravitelj paketa se razvija za distribuciju biblioteka, osiguranje sklapanja i upravljanje ovisnostima projekta. Naboj. Repozitorij je podržan za host knjižnica sanduci.io.

Glavni inovacije:

  • Implementirana podrška za tipove nizovi bilo koje veličine. Prethodno je, zbog nemogućnosti definiranja generičkih funkcija za sve cjelobrojne vrijednosti, standardna biblioteka pružala ugrađenu podršku za značajke samo za nizove veličine do 32 elementa (osobine za svaku veličinu bile su statički definirane). Zahvaljujući stvaranju funkcionalnosti konstantnih generika (“const generics”), postalo je moguće definirati generičke funkcije za bilo koju veličinu niza, ali one još nisu uključene u značajke stabilnog jezika, iako su implementirane u prevoditelju i sada uključeni u standardnoj biblioteci za značajke polja bilo koje veličine.

    Na primjer, sljedeća konstrukcija u Rustu 1.47 ispisat će sadržaj niza, iako bi prije rezultirala pogreškom:

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

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

  • Omogućen izlaz kraćih tragova (backtrace), izlaz u hitnim situacijama. Elementi koji nisu od interesa u većini situacija, ali zatrpavaju izlaz i odvraćaju pozornost od primarnih uzroka problema, isključeni su iz praćenja. Da biste vratili potpuno praćenje, možete koristiti varijablu okruženja "RUST_BACKTRACE=full". Na primjer, za šifru

    fn main() {
    panika!();
    }

    Prethodno je trag bio izlaz u 23 faze, ali sada će se smanjiti na
    3 koraka koji vam omogućuju da odmah shvatite bit:

    nit 'main' uspaničila se na 'eksplicitnu paniku', src/main.rs:2:5
    povratni trag stoga:
    0: std::panicing::begin_panic
    na /rustc/d…d75a/library/std/src/panicking.rs:497
    1: igralište :: glavno
    na ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    na /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc kompajler je ažuriran za izgradnju pomoću LLVM 11 (Rđa koristi LLVM kao backend za generiranje koda). U isto vrijeme, mogućnost izgradnje sa starijim LLVM-ovima, do verzije 8, je zadržana, ali prema zadanim postavkama (u rust-lang/llvm-projekt) sada koristi LLVM 11. Očekuje se da će LLVM 11 biti objavljen u narednim danima.
  • Na Windows platformi, prevodilac rustc pruža podršku za omogućavanje provjera integriteta protoka kontrole (Control Flow Guard), aktiviranih korištenjem oznake “-C control-flow-guard”. Na drugim platformama ova se zastavica za sada zanemaruje.
  • Novi dio API-ja prebačen je u stabilnu kategoriju, uključujući stabilizirane
    Ident ::new_raw,
    Raspon::je_prazan,
    RangeInclusive::is_prazan,
    Rezultat::as_deref,
    Rezultat::as_deref_mut,
    Vec::curenje,
    pointer::offset_from,
    f32::TAU i
    f64::TAU.

  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u metodama:
    • novo za sve cijele brojeve osim nule;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub i saturating_mul za sve cijele brojeve;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace i is_ascii_control za tipove char i u8.
  • Za FreeBSD uključeni set alata iz FreeBSD 11.4 (FreeBSD 10 ne podržava LLVM 11).

Izvor: opennet.ru

Dodajte komentar