Izdaja programskega jezika Rust 1.44

Objavljeno izdaja sistemskega programskega jezika Rja 1.44, ki ga je ustanovil projekt Mozilla. Jezik se osredotoča na varnost pomnilnika, zagotavlja samodejno upravljanje pomnilnika in ponuja orodja za doseganje visoke vzporednosti nalog brez uporabe zbiralnika smeti in runtime.

Samodejno upravljanje pomnilnika Rust odpravlja napake pri manipulaciji s kazalci in ščiti pred težavami, ki izhajajo iz manipulacije s pomnilnikom na nizki ravni, kot je dostop do območja pomnilnika, potem ko je bilo osvobojeno, dereferenciranje ničelnega kazalca, prekoračitev medpomnilnika itd. Upravljalnik paketov se razvija za distribucijo knjižnic, zagotavljanje sestavljanja in upravljanje odvisnosti s projektom. Cargo, ki vam omogoča, da z enim klikom pridobite knjižnice, ki jih potrebujete za program. Repozitorij je podprt za gostovanje knjižnic zaboji.io.

V besedilu napovedi nove izdaje so se razvijalci Rust vpletli v politiko in izrazito zavrnili objavo celotnega pregleda sprememb v Rust 1.44 v znak solidarnosti s protestniki proti policijskemu nasilju, kar kaže, da je to vprašanje pomembnejše kot izmenjava tehničnega znanja. Osnovno inovacije:

  • Upravitelj paketov Cargo integrira ukaz »cargo tree«, ki prikaže drevesni graf odvisnosti. Dodana je tudi možnost »—duplicates« (»cargo tree -d«), ki vam omogoča ovrednotenje odvisnosti v različnih različicah istega paketa.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniak v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── dnevnik v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── dnevnik v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [odvisnosti gradnje] │ │ │ └── preverjanje_verzije v0.1.5
    ...

  • Za aplikacije, ki niso vezane na std ("#![no_std]"), je podpora za tehnike asinhronega programiranja implementirana na podlagi funkcije "async", bloka async move { ... } in operatorja ".await", ki poenostavite pisanje neblokirnih rokovalcev glavni tok ukazov.
  • Razčlenjevalniku je bila dodana podpora za shemo definicije razširljive hierarhije modulov. Naslednji konstrukt na primer ne bo povzročil napake, kljub dejanski odsotnosti modula "foo/bar/baz.rs" (konstrukcija je še vedno semantično neveljavna in lahko povzroči napako, vendar je spremembe mogoče videti in razčleniti na raven makra in pogojnega prevajanja):

    #[cfg(FALSE)] mod foo {
    modna vrstica {
    mod baz;
    }
    }

  • Prevajalnik rustc je dodal možnost uporabe zastavice »-C codegen-units« v inkrementalnem načinu. Implementacija catch_unwind je bila predelana tako, da nima vpliva na zmogljivost, če je proces odvijanja onemogočen in niso vržene nobene izjeme.
  • Za platforme aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos in x86_64-apple-tvos je zagotovljena podpora stopnje XNUMX. Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja in objave uradnih gradenj.
  • Nov del API-jev je bil prenesen v kategorijo stabilnih, vključno s stabiliziranimi
    PathBuf::with_capacity,
    PathBuf::capacity,
    PathBuf::clear,
    PathBuf::reserve,
    PathBuf::reserve_exact,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Layout::align_to,
    Layout::pad_to_align,
    Layout::array in
    Layout::extend.

  • Razširjene funkcije standardne knjižnice:
    • Dodana je posebna različica "vec![]", ki se neposredno odraža v Vec::new(), kar omogoča uporabo "vec![]" v kontekstu namesto konstant.
    • Izvedba (impl) lastnosti je bila dodana za convert::Infallible Hash.
    • OsString izvaja pametne kazalce DerefMut и IndexMut, ki vrne "&mut OsStr".
    • Dodana podpora za Unicode 13.
    • Implementirano v nizu Od<&mut str>.
    • IoSlice implementira lastnost Kopiraj.
    • Vec implementirano From<[T; N]>.
    • proc_macro::LexError implementira fmt::Display in Error.
  • Atribut “const”, ki določa možnost uporabe v poljubnem kontekstu namesto konstant, se uporablja v metodah from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes in to_ne_bytes za vse vrste celih števil.
  • Dodana podpora za ustvarjanje statičnih knjižnic v formatu ".a" namesto ".lib" za platforme GNU v sistemu Windows.
  • Minimalne zahteve za LLVM so bile povišane na LLVM različice 8.

Vir: opennet.ru

Dodaj komentar