Vydání programovacího jazyka Rust 1.44

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.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── log v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── protokol v0.4.8 (*)
    │ │ ├── pff v0.7.24
    │ │ │ └── pff_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [build-dependencies] │ │ │ └── version_check v0.1.5
    ...

  • 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".
    • Přidána podpora pro Unicode 13.
    • Implementováno v Stringu Od<&mutstr>.
    • Vlastnost implementovaná v IoSlice Zkopírujte.
    • Vec implementováno Od<[T; N]>.
    • 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.

Zdroj: opennet.ru

Přidat komentář