Rust 1.44 programavimo kalbos leidimas

paskelbta sistemos programavimo kalbos leidimas Rūdys 1.44, įkurta Mozilla projekto. Kalba skirta atminties saugai, suteikia automatinį atminties valdymą ir suteikia įrankius, leidžiančius pasiekti aukštą užduočių lygiagretumą nenaudojant šiukšlių rinktuvo ir Runtime.

„Rust“ automatinis atminties valdymas pašalina klaidas manipuliuojant rodyklėmis ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties manipuliavimo, pvz., prieigos prie atminties srities ją atlaisvinus, nulinių rodyklės nuorodų, buferio viršijimo ir kt. Kuriama paketų tvarkyklė, skirta platinti bibliotekas, užtikrinti surinkimą ir valdyti projekto priklausomybes. krovinys, leidžiančiu vienu paspaudimu gauti programai reikalingas bibliotekas. Saugykla palaikoma prieglobos bibliotekoms dėžės.io.

Pranešimo apie naują laidą tekste Rust kūrėjai įsitraukė į politiką ir kaip solidarumo su protestuotojais prieš policijos smurtą ženklą aiškiai atsisakė publikuoti visą Rust 1.44 pakeitimų apžvalgą, nurodydami, kad ši problema yra svarbesnė. nei keitimasis techninėmis žiniomis. Pagrindinis naujoves:

  • Krovinių paketo tvarkyklė integruoja komandą „krovinio medis“, kuri rodo į medį panašią priklausomybės grafiką. Taip pat pridėta parinktis „—dublikatai“ („krovinio medis -d“), leidžianti įvertinti skirtingų to paties paketo versijų priklausomybes.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ├── amoniakas v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── žurnalo v0.4.8
    │ │ │ └── cfg-if v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── žurnalo v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_shared v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [priklausomybės] │ │ │ └── versijos_tikrinimas v0.1.5
    ...

  • Programoms, nesusietoms su std („#![no_std]“), įdiegtas asinchroninio programavimo metodų palaikymas, pagrįstas funkcija „async“, asinchroninis judėjimas { ... } blokas ir operatorius „.await“, kurios palengvina neblokuojančių tvarkyklių pagrindinio komandų srauto rašymą.
  • Išplečiamos modulių hierarchijos apibrėžimo schemos palaikymas buvo įtrauktas į analizatorių. Pavyzdžiui, ši konstrukcija nesukels klaidos, nepaisant to, kad iš tikrųjų nėra modulio „foo/bar/baz.rs“ (konstrukcija vis tiek semantiškai neteisinga ir gali sukelti klaidą, tačiau pakeitimus galima pamatyti ir išanalizuoti makrokomandos ir sąlyginio kompiliavimo lygis):

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

  • Rustc kompiliatorius pridėjo galimybę naudoti „-C codegen-units“ vėliavėlę prieauginiu režimu. Catch_unwind įgyvendinimas buvo perdarytas taip, kad jis neturėtų jokios įtakos našumui, jei išvyniojimo procesas yra išjungtas ir netaikomos išimtys.
  • 64 lygio palaikymas teikiamas platformoms aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos ir x64_XNUMX-apple-tvos. Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo ir oficialių versijų paskelbimo.
  • Nauja API dalis buvo perkelta į stabilią kategoriją, įskaitant stabilizuotą
    PathBuf::with_papacity,
    PathBuf::pajėgumas,
    PathBuf::clear,
    PathBuf::rezervas,
    PathBuf::rezervavimo_tikslus,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Išdėstymas::lygiuoti_į,
    Išdėstymas::pad_to_align,
    Išdėstymas::masyvas ir
    Išdėstymas::pratęsti.
  • Išplėstinės standartinės bibliotekos funkcijos:
    • Pridėtas specialus „vec![]“ variantas, kuris tiesiogiai atsispindi Vec::new(), leidžiantis kontekste vietoj konstantų naudoti „vec![]“.
    • Pridėtas bruožo įgyvendinimas (impl), norint konvertuoti::Infallible Maišos.
    • OsString įgyvendina išmaniąsias nuorodas DerefMut и IndexMut, grąžindamas „&mut OsStr“.
    • Pridėtas „Unicode 13“ palaikymas.
    • Įdiegta eilutėje Iš<&mut str>.
    • „IoSlice“ įgyvendina bruožą kopija.
    • Sen įgyvendinta Nuo<[T; N]>.
    • proc_macro::LexError įgyvendina fmt::Display ir Error.
  • Atributas „const“, kuris nustato, ar jis gali būti naudojamas bet kokiame kontekste vietoj konstantų, naudojamas metoduose from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes ir to_ne_bytes visiems sveikųjų skaičių tipams.
  • Pridėtas statinių bibliotekų generavimas „.a“ ​​formatu, o ne „.lib“ GNU platformoms sistemoje „Windows“.
  • Minimalūs LLVM reikalavimai buvo padidinti iki 8 LLVM versijos.

Šaltinis: opennet.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster