Izdanje Rust programskog jezika 1.44

Objavljeno izdanje sistemskog programskog jezika Rđa 1.44, 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 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. 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.

U tekstu najave novog izdanja Rust programeri su se uključili u politiku i oštro odbili objaviti potpunu recenziju promjena u Rustu 1.44 u znak solidarnosti s prosvjednicima protiv policijskog nasilja, ukazujući da je ovo pitanje važnije nego razmjena tehničkog znanja. Osnovni, temeljni inovacije:

  • Upravitelj paketa Cargo integrira naredbu "cargo tree", koja prikazuje grafikon ovisnosti u obliku stabla. Također je dodana opcija “—duplicates” (“cargo tree -d”), koja vam omogućuje procjenu ovisnosti u različitim verzijama istog paketa.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amonijak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── dnevnik v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── dnevnik v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [ovisnosti međugradnje] │ │ │ └── provjera verzije v0.1.5
    ...

  • Za aplikacije koje nisu vezane na std ("#![no_std]"), podrška za tehnike asinkronog programiranja implementirana je na temelju funkcije "async", bloka async move { ... } i operatora ".await", koji pojednostaviti pisanje neblokirajućih rukovatelja glavni tijek naredbi.
  • Podrška za shemu definiranja proširive hijerarhije modula dodana je u parser. Na primjer, sljedeća konstrukcija neće proizvesti pogrešku, unatoč stvarnom nedostatku modula "foo/bar/baz.rs" (konstrukcija je još uvijek semantički nevažeća i može izazvati pogrešku, ali promjene se mogu vidjeti i analizirati na makro i razina uvjetne kompilacije):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Rustc prevodilac je dodao mogućnost korištenja oznake “-C codegen-units” u inkrementalnom načinu rada. Implementacija catch_unwind je prerađena tako da nema utjecaja na performanse ako je proces odmotavanja onemogućen i nema iznimaka.
  • Podrška razine 64 pružena je za platforme aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos i x64_XNUMX-apple-tvos. Treća razina uključuje osnovnu podršku, ali bez automatiziranog testiranja i objave službenih verzija.
  • Novi dio API-ja prebačen je u stabilnu kategoriju, uključujući stabilizirane
    PathBuf::with_capacity,
    PathBuf::kapacitet,
    PathBuf::clear,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Izgled::align_to,
    Izgled::pad_to_align,
    Layout::array i
    Izgled::proširi.

  • Proširene funkcije standardne knjižnice:
    • Dodana je posebna varijanta "vec![]" koja se izravno odražava u Vec::new(), dopuštajući da se "vec![]" koristi u kontekstu umjesto konstanti.
    • Implementacija (impl) značajke je dodana za convert::Infallible Smjesa.
    • OsString implementira pametne pokazivače DerefMut и IndexMut, vraćajući "&mut OsStr".
    • Dodana podrška za Unicode 13.
    • Implementirano u nizu Od<&mut str>.
    • IoSlice implementira značajku kopija.
    • Vec implementirano From<[T; N]>.
    • proc_macro::LexError implementira fmt::Display i Error.
  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u metodama from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes i to_ne_bytes za sve tipove cjelobrojnih brojeva.
  • Dodana je podrška za generiranje statičkih biblioteka u formatu ".a" umjesto ".lib" za GNU platforme na Windowsima.
  • Minimalni zahtjevi za LLVM podignuti su na LLVM verziju 8.

Izvor: opennet.ru

Dodajte komentar