Programski jezik Rust 1.52 izdanje

Objavljeno je izdanje sistemskog programskog jezika Rust 1.52, čiji je osnivač Mozilla projekat, a sada razvijen pod okriljem nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije, obezbjeđuje automatsko upravljanje memorijom i obezbjeđuje sredstva za postizanje visokog paralelizma zadataka bez korištenja sakupljača smeća ili vremena izvođenja (vrijeme izvođenja je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rust-ovo automatsko upravljanje memorijom spašava programere od grešaka prilikom manipulacije pokazivačima i štiti od problema koji nastaju zbog manipulacije memorijom niskog nivoa, kao što je pristup memorijskom području nakon što je oslobođeno, dereferenciranje nultih pokazivača, prekoračenje bafera itd. Za distribuciju biblioteka, izradu i upravljanje ovisnostima, projekt razvija Cargo paket menadžer. Crates.io spremište je podržano za hostovanje biblioteka.

Glavne inovacije:

  • Uklonjeno vezivanje za redoslijed izvršavanja naredbi “cargo check” i “cargo clippy”. Ranije, pozivanje "cargo clippy" nakon "cargo check" nije pokrenulo uslužni program clippy (linter) zbog nedostatka odvajanja keša za ove modove 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 je prebačen u stabilnu kategoriju, uključujući stabilizirane sljedeće metode:
    • Argumenti::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::od_cifre
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • 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::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_mala slova
    • u8::eq_ignore_ascii_case
  • Dodata lint provjera unsafe_op_in_unsafe_fn kako bi se utvrdilo da li je nesiguran kod koji se koristi u nesigurnim funkcijama uokviren nesigurnim blokovima.
  • Dozvoljeno je pretvaranje promjenjivih pokazivača na nizove u obliku pokazivača na tip elementa niza. neka mut x: [upotreba; 2] = [0, 0]; neka p = &mut x kao *mut usize; neka p = &mut x kao *const upotreba;
  • 9 novih provjera je dodano u clippy (linter).
  • Upravitelj paketa tereta sada podržava polje “manifest_path” u JSON-u za pakete. Dodata podrška za određivanje informacija o licenci u SPDX 3.11 formatu u crates.io spremište.
  • Dozvoljeno je navesti više filtera prilikom pokretanja testova, na primjer pokretanje "cargo test - foo bar" će pokrenuti sve testove koji odgovaraju maskama "foo" i "bar".
  • Zadani LLVM alat je ažuriran na LLVM 12.
  • Treći nivo podrške je implementiran za platforme s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl i powerpc-unknown-openbsd. Treći nivo uključuje osnovnu podršku, ali bez automatizovanog testiranja, objavljivanja zvaničnih build-ova i verifikacije mogućnosti izgradnje koda.

izvor: opennet.ru

Dodajte komentar