publikovaný vydanie systémového programovacieho jazyka Hrdza 1.44, ktorú založil projekt Mozilla. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje nástroje na dosiahnutie vysokého paralelizmu úloh bez použitia zberača odpadu a runtime.
Automatická správa pamäte Rust eliminuje chyby pri manipulácii s ukazovateľmi a chráni pred problémami vznikajúcimi pri manipulácii s pamäťou na nízkej úrovni, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencie nulového ukazovateľa, pretečenie vyrovnávacej pamäte atď. Vyvíja sa správca balíkov na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí v rámci projektu. náklad, čo vám umožní získať knižnice potrebné pre program jedným kliknutím. Hostiteľské knižnice podporujú úložisko crates.io.
V texte oznámenia o novom vydaní sa vývojári Rustu zapojili do politiky a ostro odmietli zverejniť úplnú recenziu zmien v Ruste 1.44 na znak solidarity s protestujúcimi proti policajnému násiliu, čo naznačuje, že táto otázka je dôležitejšia. ako výmena technických poznatkov. Základné inovácie:
Správca balíkov Cargo integruje príkaz „strom nákladu“, ktorý zobrazuje graf závislostí podobný stromu. Pridaná je aj možnosť „—duplikáty“ („strom nákladu -d“), ktorá vám umožňuje vyhodnotiť závislosti v rôznych verziách toho istého balíka.
Pre aplikácie, ktoré nie sú viazané na std ("#![no_std]"), je podpora pre techniky asynchrónneho programovania implementovaná na základe funkcie "async", bloku async move { ... } a operátora ".await", ktorý zjednodušiť písanie hlavného toku príkazov bez blokovania.
Do syntaktického analyzátora bola pridaná podpora schémy definície hierarchie rozšíriteľných modulov. Napríklad nasledujúci konštrukt nevyvolá chybu napriek skutočnej absencii modulu „foo/bar/baz.rs“ (konštrukt je stále sémanticky neplatný a môže spôsobiť chybu, ale zmeny je možné vidieť a analyzovať na úroveň makro a podmienenej kompilácie):
#[cfg(FALSE)] mod foo {
mod bar {
mod baz;
}
}
Kompilátor rustc pridal možnosť používať príznak „-C codegen-units“ v prírastkovom režime. Implementácia catch_unwind bola prepracovaná tak, aby nemala žiadny vplyv na výkon, ak je proces odvíjania zakázaný a nie sú vyvolané žiadne výnimky.
Podpora úrovne 64 bola poskytnutá pre platformy aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos a x64_XNUMX-apple-tvos. Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania a zverejňovania oficiálnych verzií.
Nová časť API bola presunutá do stabilnej kategórie vrátane stabilizovaných
PathBuf::with_capacity,
PathBuf::kapacita,
PathBuf::clear,
PathBuf::rezerva,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_unchecked,
Layout::align_to,
Layout::pad_to_align,
Layout::array and
Layout::extend.
Rozšírené funkcie štandardnej knižnice:
Pridaný špeciálny variant "vec![]", ktorý sa priamo odráža vo Vec::new(), čo umožňuje použiť "vec![]" v kontexte namiesto konštánt.
Bola pridaná implementácia (impl) vlastnosti na konverziu::Infallible Hašiš.
OsString implementuje inteligentné ukazovatele DerefMut и IndexMut, vracia "&mut OsStr".
proc_macro::LexError implementuje fmt::Display a Error.
Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa v metódach from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes a to_ne_bytes pre všetky typy celých čísel.
Pridaná podpora pre generovanie statických knižníc vo formáte ".a" namiesto ".lib" pre platformy GNU na Windows.
Minimálne požiadavky na LLVM boli zvýšené na LLVM verzie 8.