Vydanie programovacieho jazyka Rust 1.44

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.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── denník v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── denník 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
    ...

  • 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".
    • Pridaná podpora pre Unicode 13.
    • Implementované v Stringu Od<&mut str>.
    • IoSlice implementuje túto vlastnosť kópie.
    • Vec implementované Od<[T; N]>.
    • 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.

Zdroj: opennet.ru

Pridať komentár