zveřejněno vydání systémového programovacího jazyka Rez 1.44založil projekt Mozilla. Jazyk se zaměřuje na bezpečnou správu paměti, poskytuje automatickou správu paměti a poskytuje prostředky k dosažení vysokého paralelismu úloh a zároveň se vyhýbá použití garbage collectoru a runtime.
Automatická správa paměti Rust šetří vývojáře před chybami při manipulaci s ukazateli a chrání před problémy, které vznikají v důsledku nízkoúrovňové manipulace s pamětí, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení vyrovnávací paměti atd. Pro distribuci knihoven, zajištění sestavení a správu závislostí projekt vyvíjí správce balíčků Náklad, což vám umožní získat knihovny, které potřebujete pro program, jedním kliknutím. Hostitelské knihovny podporují úložiště crates.io.
V textu oznámení nového vydání se vývojáři Rustu zapojili do politiky a vzdorně odmítli zveřejnit úplnou recenzi změn v Rustu 1.44 v solidaritě s demonstranty proti policejnímu násilí, což naznačuje, že toto téma je důležitější než výměna technických znalostí. Hlavní inovace:
Příkaz "cargo tree" je integrován do správce balíčků Cargo, který zobrazuje graf závislostí podobný stromu. Také přidána volba "--duplicates" ("cargo tree -d"), která umožňuje vyhodnotit závislosti v různých verzích stejného balíčku.
Pro aplikace, které nejsou vázány na std ("#![no_std]"), je implementována podpora metod asynchronního programování založených na funkci "async", bloku async move { ... } a operátoru ".await", který usnadňuje zápis hlavního proudu příkazů neblokujících obslužných rutin.
Do analyzátoru byla přidána podpora pro schéma definice rozšiřitelné hierarchie modulů. Například následující konstrukce nevyvolá chybu, navzdory skutečné absenci modulu „foo/bar/baz.rs“ (sémanticky je konstrukce stále neplatná a může způsobit chybu, ale změny lze vidět a analyzovat na makroúrovni a podmíněné kompilaci):
#[cfg(FALSE)] mod foo {
mod bar {
modbaz;
}
}
Kompilátor rustc přidal možnost používat příznak "-C codegen-units" v přírůstkovém režimu. Implementace catch_unwind byla přepracována, což nyní neovlivňuje výkon, pokud je proces odvíjení zakázán a nejsou vyvolány žádné výjimky.
Poskytuje podporu třetí úrovně pro platformy aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos a x86_64-apple-tvos. Třetí úroveň předpokládá základní podporu, ale bez automatického testování a publikování oficiálních sestavení.
Nová část API byla převedena do kategorie stabilních, včetně stabilizovaných
PathBuf::with_capacity,
PathBuf::kapacita,
PathBuf::jasný,
PathBuf::rezerva,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_unchecked,
Layout::align_to
Layout::pad_to_align,
Layout::array and
rozložení::prodloužit.
Rozšířené funkce standardní knihovny:
Přidána speciální varianta "vec![]", která se přímo odráží ve Vec::new(), což umožňuje použití "vec![]" v kontextu místo konstant.
Implementace vlastnosti (impl) přidána do convert::Infallible Hašiš.
OsString implementuje inteligentní ukazatele DerefMut и IndexMut, vrací "&mut OsStr".
proc_macro::LexError implementuje fmt::Display a Error.
Atribut "const", který určuje možnost použití v libovolném kontextu místo konstant, se používá v metodách from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes a to_ne_bytes pro všechny celočíselné typy.
Přidána podpora pro generování statických knihoven ve formátu ".a" místo ".lib" pro platformy GNU pro Windows.
Minimální požadavky na LLVM byly zvýšeny na LLVM 8.