Izdanje Rust programskog jezika 1.52

Objavljeno je izdanje sistemskog programskog jezika Rust 1.52, utemeljenog na projektu Mozilla, ali sada razvijenog pod pokroviteljstvom nezavisne neprofitne organizacije Rust Foundation. 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 (vrijeme izvođenja je smanjeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

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. Za distribuciju knjižnica, osiguranje sklapanja i upravljanje ovisnostima, projekt razvija upravitelja paketa Cargo. Repozitorij crates.io podržan je za smještaj knjižnica.

Glavne inovacije:

  • Uklonjeno vezivanje za redoslijed izvršenja naredbi “cargo check” i “cargo clippy”. Prethodno pozivanje "cargo clippy" nakon "cargo check" nije pokretalo uslužni program clippy (linter) zbog nedostatka odvajanja predmemorije za te načine provjere. Sada je ovaj problem riješen i redoslijed kojim se nazivaju "cargo clippy" i "cargo check" više nije bitan.
  • Novi dio API-ja prebačen je u stabilnu kategoriju, uključujući sljedeće metode koje su stabilizirane:
    • Argumenti::as_str
    • char::MAX
    • char::ZAMJENSKI_ZNAK
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_neoznačeno
    • char::from_u32
    • kriška::particiona_točka
    • str::rsplit_once
    • str::split_once
  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u metodama:
    • char::len_utf8
    • char::len_utf16
    • char::u_ascii_velika slova
    • char::u_ascii_mala slova
    • char::eq_ignore_ascii_case
    • u8::u_ascii_velika slova
    • u8::u_ascii_mala slova
    • u8::eq_ignore_ascii_case
  • Dodana provjera dlačica unsafe_op_in_unsafe_fn kako bi se utvrdilo je li nesiguran kod koji se koristi u nesigurnim funkcijama uokviren nesigurnim blokovima.
  • Dopušteno je pretvoriti promjenjive pokazivače na nizove u obliku pokazivača na tip elementa niza. neka mut x: [upotreba; 2] = [0, 0]; neka je p = &mut x kao *mut size; neka je p = &mut x kao *const upotreba;
  • 9 novih provjera je dodano u clippy (linter).
  • Cargo Package Manager sada podržava polje "manifest_path" u JSON-u za pakete. Dodana je podrška za određivanje informacija o licenci u formatu SPDX 3.11 u repozitorij crates.io.
  • Dopušteno je navesti više filtara prilikom pokretanja testova, na primjer pokretanje "cargo test - foo bar" pokrenut će sve testove koji odgovaraju maskama "foo" i "bar".
  • Zadani LLVM alat ažuriran je na LLVM 12.
  • Treća razina podrške implementirana je za platforme s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl i powerpc-unknown-openbsd. Treća razina uključuje osnovnu podršku, ali bez automatiziranog testiranja, objavljivanja službenih međugradnji ili provjere može li se kod izgraditi.

Izvor: opennet.ru

Dodajte komentar