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.
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".
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.