Rust 1.44 Programming Language Release

publisearre systeem programmeartaal release Roest 1.44, oprjochte troch it Mozilla-projekt. De taal rjochtet him op ûnthâldfeiligens, leveret automatysk ûnthâldbehear, en leveret ark foar it realisearjen fan hege taakparallellisme sûnder in garbage collector en runtime.

It automatyske ûnthâldbehear fan Rust elimineert flaters by it manipulearjen fan oanwizers en beskermet tsjin problemen dy't ûntsteane út manipulaasje fan ûnthâld op leech nivo, lykas tagong krije ta in ûnthâldregio nei't it is befrijd, nul-oanwizers dereferences, bufferoverruns, ensfh. In pakketbehearder wurdt ûntwikkele om bibleteken te fersprieden, assemblage te garandearjen en ôfhinklikens te behearjen troch it projekt. Lading, wêrtroch jo de biblioteken dy't nedich binne foar it programma yn ien klik krije. In repository wurdt stipe om bibleteken te hostjen crates.io.

Yn 'e tekst fan' e oankundiging fan 'e nije release, waarden de Rust-ûntwikkelders belutsen by de polityk en wegere op it punt om in folsleine resinsje fan' e feroaringen yn Rust 1.44 te publisearjen as in teken fan solidariteit mei demonstranten tsjin plysjegeweld, wat oanjout dat dit probleem wichtiger is. dan de útwikseling fan technyske kennis. Basic ynnovaasjes:

  • De Cargo-pakketbehearder yntegreart it kommando "frachtbeam", dy't in beam-like ôfhinklikensgrafyk werjaan. Ek tafoege is de opsje "—duplicates" ("cargo tree -d"), wêrtroch jo ôfhinklikens yn ferskate ferzjes fan itselde pakket kinne evaluearje.

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

  • Foar applikaasjes dy't net bûn binne oan in std ("#![no_std]"), wurdt stipe foar asynchrone programmeartechniken ymplementearre basearre op de "async"-funksje, it async move { ... } blok en de ".await" operator, dy't ferienfâldigje skriuwen net-blocking handlers wichtichste kommando flow.
  • Stipe foar in útwreide modulehierarchy-definysjeskema is tafoege oan de parser. Bygelyks, it folgjende konstruksje sil gjin flater produsearje, nettsjinsteande it feitlike ûntbrekken fan 'e module "foo/bar/baz.rs" (it konstruksje is noch semantysk ûnjildich en kin in flater feroarsaakje, mar de wizigingen kinne sjoen en parseard wurde op it makro- en betingstlike kompilaasjenivo):

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

  • De rustc-kompiler hat de mooglikheid tafoege om de flagge "-C codegen-units" te brûken yn inkrementele modus. De ymplemintaasje fan catch_unwind is opnij bewurke sadat it gjin ynfloed hat op prestaasjes as it ûntwikkelproses is útskeakele en gjin útsûnderings wurde smiten.
  • Level 64-stipe is levere foar de platfoarms aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos en x64_XNUMX-apple-tvos. It tredde nivo omfettet basisstipe, mar sûnder automatisearre testen en publikaasje fan offisjele builds.
  • In nij diel fan API's is oerbrocht nei de stabile kategory, ynklusyf stabilisearre
    PathBuf::with_capacity,
    PathBuf ::kapasiteit,
    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 en
    Layout :: útwreidzje.

  • Utwreide funksjes fan 'e standertbibleteek:
    • In spesjale "vec![]" fariant tafoege dy't direkt yn Vec :: nij () wjerspegele wurdt, wêrtroch "vec![]" kin brûkt wurde yn kontekst ynstee fan konstanten.
    • In ymplemintaasje (impl) fan 'e eigenskip is tafoege om te konvertearjen :: Infallible Hash.
    • OsString implementeart smart pointers DerefMut и IndexMut, werom "&mut OsStr".
    • Stipe tafoege foar Unicode 13.
    • Implementearre yn String Fan <&mut str>.
    • IoSlice ymplementearret de eigenskip Kopiearje.
    • Vec ymplementearre Fan <[T; N]>.
    • proc_macro :: LexError ymplemintearret fmt :: Display en flater.
  • It "const"-attribút, dat bepaalt oft it yn elke kontekst brûkt wurde kin ynstee fan konstanten, wurdt brûkt yn 'e metoaden from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes en to_ne_bytes metoaden foar alle heulgetaltypen.
  • Stipe tafoege foar it generearjen fan statyske bibleteken yn ".a"-formaat ynstee fan ".lib" foar GNU-platfoarms op Windows.
  • De minimale easken foar LLVM binne ferhege nei LLVM ferzje 8.

Boarne: opennet.ru

Add a comment