Izdanje Rust programskog jezika 1.42

Objavljeno izdanje sistemskog programskog jezika Rđa 1.42, osnovan projektom Mozilla. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža alate za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća i runtime.

Rustovo automatsko upravljanje memorijom oslobađa programera od manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što su pristupi memoriji nakon oslobađanja, dereferencije nultog pokazivača, prekoračenja međuspremnika i slično. Upravitelj paketa se razvija za distribuciju biblioteka, osiguranje sklapanja i upravljanje ovisnostima projekta. Naboj, što vam omogućuje da jednim klikom dobijete biblioteke potrebne za program. Repozitorij je podržan za host knjižnica sanduci.io.

Glavni inovacije:

  • Dodano podrška za predloške za podudaranje dijelova odsječaka (dinamički nizovi, odsječak). Prije su bila dopuštena točna podudaranja, ali sada je moguće koristiti konstrukcije označene ".." za pokrivanje preostalih elemenata niza. Na primjer:

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

    // provjerava početne elemente niza i zanemaruje
    elementi koji ih prate
    ["Hello", "World", "!", ..] => println!("Hello World!"),

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

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

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

    // u završnu krišku stavljamo sve osim prvog elementa, koji bi trebao biti "a".
    ["a", end @ ..] => println!("završava s: {:?}", kraj),

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

  • Dodana je nova makronaredba "podudara se!", koja uzima izraz i uzorak kao ulaz i vraća "istinito" ako se uzorak podudara s izrazom. Predložak može koristiti operacije “|”. i ako".

    match self.partial_cmp(other) {
    Some(Less) => istina,
    _ => lažno,
    }

    odgovara!(self.partial_cmp(other), Some(Less))

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

    let bar = Some(4);
    assert!(podudara se!(bar, Some(x) if x > 2));

  • U porukama panike koje se prikazuju kada se nepravilno koriste
    vrste Opcija i Rezultat, sada prikazuju brojeve redaka s vezom na kod koji je napravio problematični poziv, umjesto poveznica na kod koji implementira poziv u libcore. Na primjer, promjena utječe na pozive za unwrap i expect preko Option::None, ili na padove prilikom korištenja unwrap_err, expect, expect_err i sličnih metoda za vrstu rezultata.

  • Upravitelj paketa Cargo omogućuje automatsku zamjenu "proc_macro sanduka" u "extern" blok za pakete s proceduralnim makroima. Ova promjena omogućuje primjenu direktive "use" na proceduralne makronaredbe bez potrebe za navođenjem "extern crate proc_macro;" u kodu. Na primjer, ako program koristi redak "use proc_macro::TokenStream;", kod će sada ostati raditi ako se iz njega ukloni "extern crate proc_macro;".
  • Mogućnosti standardne knjižnice su proširene. U iter::Empty dodao Podrška za slanje i sinkronizaciju za sve T vrijednosti.
    Pozivi Pin::{map_unchecked, map_unchecked_mut} dostavljeno od vraćanja vrijednosti tipa za implementaciju "Veličine".
    U io::Cursor implementiran Djelomični Eq i Eq. Atribut “const” određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, primijeniti za Layout::new metodu.

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

  • Metoda Error::description je zastarjela.
  • Omogućena druga razina podrške za armv7a-none-eabi i riscv64gc-unknown-linux-gnu platforme. Pružena je podrška za standardnu ​​biblioteku za platformu riscv64gc-unknown-linux-gnu.
    Apple 32-bitne platforme degradiran do treće razine podrške, što podrazumijeva osnovnu podršku, ali bez automatiziranog testiranja i objave službenih buildova. Do smanjenja podrške dolazi jer Apple više ne podržava 32-bitne platforme.

Izvor: opennet.ru

Dodajte komentar