Programski jezik Rust 1.42 izdanje

objavljeno izdanje sistemskog programskog jezika Rđa 1.42, osnovan od strane Mozilla projekta. Jezik se fokusira na sigurnost memorije, pruža automatsko upravljanje memorijom i pruža alate za postizanje visokog paralelizma zadataka bez korištenja sakupljača smeća i runtime.

Rust-ovo automatsko upravljanje memorijom oslobađa programera od manipulacije pokazivačem i štiti od problema koji proizlaze iz manipulacije memorijom na niskom nivou, kao što su pristupi memoriji nakon slobodne upotrebe, dereferenciranje nulte pokazivača, prekoračenje bafera i slično. Razvija se menadžer paketa za distribuciju biblioteka, osiguravanje sklapanja i upravljanje ovisnostima od strane projekta. teret, što vam omogućava da jednim klikom dobijete biblioteke potrebne za program. Podržano je spremište za hostiranje biblioteka crates.io.

Glavni inovacije:

  • Dodano podrška za predloške za usklađivanje dijelova rezova (dinamički nizovi, slice). Ranije su tačna podudaranja bila dozvoljena, ali sada je moguće koristiti konstrukcije označene sa ".." za pokrivanje preostalih elemenata niza. Na primjer:

    fn foo(riječi: &[&str]) {
    podudaraju riječi {

    // provjerava početne elemente niza i ignorira
    elementi koji ih prate
    ["Zdravo", "Svijet", "!", ..] => println!("Zdravo svijet!"),

    // provjerava prva dva elementa "Foo" i "Bar", a ostalo nije važno
    ["Foo", "Bar", ..] => println!("Baz"),

    // zanemari sve, ali posljednji element mora biti "!".
    [.., “!”] => println!(“!!!”),

    // u početni rez uključujemo sve osim posljednjeg elementa, koji bi trebao biti “z”
    [start @ .., "z"] => println!("počinje sa: {:?}", početak),

    // u krajnji rez stavljamo sve osim prvog elementa, koji bi trebao biti “a”.
    ["a", end @ ..] => println!("završava sa: {:?}", kraj),

    odmor => println!("{:?}", odmor),
    }
    }

  • Dodan je novi makro "podudara se!", koji uzima izraz i obrazac kao ulaz, i vraća "true" ako se obrazac podudara s izrazom. Šablon može koristiti “|” operacije i "ako".

    podudaranje self.partial_cmp(other) {
    Nešto (manje) => istina,
    _ => netačno,
    }

    poklapa se!(self.partial_cmp(other), Some(Manje))

    neka foo = 'f';
    assert!(podudara se!(foo, 'A'..='Z' | 'a'..='z'));

    neka bar = Neki(4);
    assert!(podudara se!(bar, Some(x) ako je x > 2));

  • U paničnim porukama se prikazuju kada se nepravilno koriste
    tipovi Option i Result, sada prikazuju brojeve redova sa vezom na kod koji je napravio problematičan poziv, a ne veze na kod koji implementira poziv u libcore. Na primjer, promjena utječe na pozive za odmotavanje i očekivanje preko Option::None ili se ruši kada se koriste unwrap_err, expect, expect_err i slične metode na tipu Result.

  • Cargo paket menadžer omogućava automatsku zamjenu “proc_macro crate” u “extern” blok za pakete sa proceduralnim makroima. Ova promjena omogućava primjenu direktive "use" na proceduralne makroe bez navođenja "extern crate proc_macro;" u kodu. Na primjer, ako program koristi liniju “use proc_macro::TokenStream;”, tada će kod sada ostati u funkciji ako se iz njega ukloni “extern crate proc_macro;”.
  • Mogućnosti standardne biblioteke su proširene. U iter::Empty dodano Podrška za slanje i sinhronizaciju za bilo koje T vrijednosti.
    Pin za pozive::{map_unchecked, map_unchecked_mut} isporučeno od potrebe da vrati vrijednost tipa za implementaciju "Sized".
    U io::Kursoru implementirano PartialEq i Eq. Atribut “const” određuje mogućnost upotrebe u bilo kojem kontekstu umjesto konstanti, primijenjeno za Layout::novi metod.

  • Novi dio API-ja je prebačen u stabilnu kategoriju, uključujući stabilizirani CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    ManuallyDrop::take,
    ptr::slice_from_raw_parts_mut i ptr::slice_from_raw_parts.

  • Metoda Error::description je zastarjela.
  • Obezbeđena podrška drugog nivoa za platforme armv7a-none-eabi i riscv64gc-unknown-linux-gnu. Osigurana je podrška za standardnu ​​biblioteku za platformu riscv64gc-unknown-linux-gnu.
    Apple 32-bitne platforme degradiran do trećeg nivoa podrške, što podrazumeva osnovnu podršku, ali bez automatizovanog testiranja i objavljivanja zvaničnih buildova. Smanjenje podrške je zbog toga što Apple više ne podržava 32-bitne platforme.

izvor: opennet.ru

Dodajte komentar