Izdanje Rust programskog jezika 1.34

odvijao izdanje sistemskog programskog jezika Rđa 1.34, razvijen od strane Mozilla projekta. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža sredstva za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća ili vremena izvođenja.

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:

  • Upravitelj paketa Cargo dodao je alate za rad s alternativnim registrima paketa koji mogu koegzistirati s javnim registrom crates.io. Na primjer, programeri vlasničkih aplikacija sada mogu koristiti vlastiti privatni registar, koji se može koristiti prilikom ispisivanja ovisnosti u Cargo.toml, i primijeniti model izrade verzija sličan crates.io za svoje proizvode, kao i uputiti ovisnosti na oba sanduka. io i u vlastiti registar.

    Za dodavanje vanjskih registara u .cargo/config (koji se nalazi u $HOME ili u direktoriju paketa)
    pod uvjetom odjeljak “[registri]”, a za korištenje vanjskog registra, opcija “registar” pojavila se u opisu svake ovisnosti u Cargo.toml. Da biste se povezali s dodatnim registrom, jednostavno postavite token za provjeru autentičnosti u datoteku ~/.cargo/credentials i pokrenite naredbu
    "cargo login --registry=my-registry" i objaviti paket -
    "objava tereta -registar=moj-registar";

  • Dodana puna podrška za korištenje operatora “?”. u testovima doctestovi, što vam omogućuje korištenje primjera koda iz dokumentacije kao testova. Prethodno operater
    "?" može se koristiti za rješavanje pogrešaka tijekom izvođenja testa samo u prisutnosti funkcije "fn main()" ili u funkcijama "#[test]";

  • U prilagođenim atributima definiranim pomoću proceduralnih makronaredbi osiguran mogućnost korištenja proizvoljnih skupova tokena (“#[attr($tokens)]”, “#[attr[$tokens]] i #[attr{$tokens}]”). Prije su se elementi mogli specificirati samo u obliku stabla/rekurzivnog oblika korištenjem string literala, na primjer “#[foo(bar, baz(quux, foo = “bar”))]”, ali sada je moguće koristiti enumeracije (' #[range(0. .10)]') i konstrukcije poput “#[bound(T: MyTrait)]”;
  • Stabilizirani tipovi (osobine) TryFrom и Pokušajte u, dopuštajući pretvorbe tipa s rukovanjem pogreškama. Na primjer, metode kao što je from_be_bytes s tipovima cjelobrojnih brojeva koriste nizove kao ulaz, ali podaci često dolaze u vrsti odsječaka, a pretvorbu između nizova i odsječaka problematično je izvršiti ručno. Uz pomoć novih značajki, navedena se operacija može izvesti u hodu putem poziva .try_into(), na primjer, “let num = u32::from_be_bytes(slice.try_into()?)”. Za konverzije koje uvijek uspijevaju (na primjer, iz tipa u8 u u32), dodan je tip pogreške Nepogrešiv, omogućujući transparentnu upotrebu
    TryFrom za sve postojeće implementacije "From";

  • Funkcija je zastarjela CommandExt::before_exec, koji je omogućio izvršavanje rukovatelja prije pokretanja exec, koji je izvršen u kontekstu procesa djeteta račvanog nakon poziva fork(). Pod takvim uvjetima, neki resursi nadređenog procesa, kao što su deskriptori datoteka i mapirana memorijska područja, mogu se duplicirati, što može dovesti do nedefiniranog ponašanja i neispravnog rada biblioteka.
    Preporučuje se korištenje nesigurne funkcije umjesto before_exec CommandExt::pre_exec.

  • Stabilizirani atomski cijeli brojevi s predznakom i bez predznaka veličine od 8 do 64 bita (na primjer, AtomskiU8), kao i tipovi s predznakom NenulaI[8|16|32|64|128].
  • Novi dio API-ja premješten je u stabilnu kategoriju, uključujući Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] i SystemTime metode su stabilizirane ::checked_[add|sub]. Funkcije iter::from_fn i iter::successors su stabilizirane;
  • Za sve cjelobrojne tipove implementirane su metode checked_pow, saturating_pow, wrapping_pow i overflowing_pow;
  • Dodana je mogućnost omogućavanja optimizacija u fazi povezivanja navođenjem opcije izgradnje "-C linker-plugin-lto".

Izvor: opennet.ru

Dodajte komentar