Rust 1.34 programavimo kalbos leidimas

įvyko sistemos programavimo kalbos leidimas Rūdys 1.34, sukurtas Mozilla projekto. Kalba skirta atminties saugai, suteikia automatinį atminties valdymą ir suteikia galimybę pasiekti aukštą užduočių lygiagretumą nenaudojant šiukšlių rinktuvo ar vykdymo laiko.

„Rust“ automatinis atminties valdymas išlaisvina kūrėją nuo manipuliavimo žymekliu ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties manipuliavimo, pvz., laisvos atminties prieigos, nulinių rodyklės nuorodų, buferio viršijimo ir panašiai. 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.

pagrindinis naujoves:

  • „Cargo“ paketų tvarkyklė pridėjo įrankių, skirtų darbui su alternatyviais paketų registrais, kurie gali egzistuoti kartu su viešuoju crates.io registru. Pavyzdžiui, patentuotų programų kūrėjai dabar gali naudoti savo privatų registrą, kuris gali būti naudojamas įtraukiant priklausomybes Cargo.toml, ir taikyti savo produktams panašų į crates.io versijų kūrimo modelį, taip pat nurodyti priklausomybes abiem dėžėms. io ir į savo registrą.

    Norėdami pridėti išorinius registrus į .cargo/config (esančius $HOME arba paketų kataloge)
    jeigu skyrių „[registrai]“, o norint naudoti išorinį registrą, kiekvienos Cargo.toml priklausomybės aprašyme atsirado parinktis „registras“. Norėdami prisijungti prie papildomo registro, tiesiog įdėkite autentifikavimo prieigos raktą į failą ~/.cargo/credentials ir paleiskite komandą
    "krovinio prisijungimas --registry=my-registry" ir paskelbti paketą -
    "krovinio paskelbimas -registry=mano registras";

  • Pridėtas visas palaikymas naudojant operatorių "?". testuose doktestus, leidžiantį naudoti pavyzdinį kodą iš dokumentacijos kaip testus. Anksčiau operatorius
    "?" gali būti naudojamas tvarkyti klaidas atliekant bandymą tik esant funkcijai „fn main()“ arba „#[testas]“ funkcijoms;

  • Pasirinktiniuose atributuose, apibrėžtuose naudojant procedūrines makrokomandas jeigu galimybė naudoti savavališkus žetonų rinkinius („#[attr($tokens)]“, „#[attr[$tokens]] ir #[attr{$tokens}]“). Anksčiau elementus buvo galima nurodyti tik medžio / rekursyvios formos naudojant eilučių literalius, pvz., „#[foo(bar, baz(quux, foo = "bar")]“, tačiau dabar galima naudoti sąrašus (' #[diapazonas(0. .10)]') ir tokios konstrukcijos kaip "#[bound(T: MyTrait)]";
  • Stabilizuoti tipai (savybė) TryFrom и Pabandyk, leidžianti konvertuoti tipus su klaidų apdorojimu. Pavyzdžiui, tokie metodai kaip from_be_bytes su sveikųjų skaičių tipais naudoja masyvus kaip įvestį, tačiau duomenys dažnai pateikiami Slice tipo, o konvertuoti tarp masyvų ir skilčių yra sudėtinga rankiniu būdu. Pasitelkus naujus bruožus, nurodytą operaciją galima atlikti iškviečiant .try_into(), pavyzdžiui, „let num = u32::from_be_bytes(slice.try_into()?)“. Visada sėkmingoms konversijoms (pvz., nuo u8 tipo iki u32 tipo) buvo pridėtas klaidos tipas Neklaidingasleidžia skaidriai naudoti
    TryFrom visiems esamiems "Nuo" diegimams;

  • Funkcija nebenaudojama CommandExt::before_exec, kuri leido paleisti tvarkyklę prieš paleidžiant exec, kuri buvo vykdoma antrinio proceso kontekste, kuris buvo suformuotas po fork() iškvietimo. Esant tokioms sąlygoms, kai kurie pirminio proceso ištekliai, pvz., failų deskriptoriai ir susietos atminties sritys, gali būti dubliuojami, o tai gali sukelti neapibrėžtą elgesį ir netinkamą bibliotekų veikimą.
    Rekomenduojama naudoti nesaugią funkciją, o ne prieš_exec CommandExt::pre_exec.

  • Stabilizuoti pasirašyti ir nežymėti atominių sveikųjų skaičių tipai, kurių dydis svyruoja nuo 8 iki 64 bitų (pavyzdžiui, AtomicU8), taip pat pasirašyti tipai NonZeroI[8|16|32|64|128].
  • Nauja API dalis buvo perkelta į stabilią kategoriją, įskaitant Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] ir SystemTime metodai buvo stabilizuoti ::checked_[add|sub]. Funkcijos iter::from_fn ir iter::successors buvo stabilizuotos;
  • Visiems sveikųjų skaičių tipams yra įdiegti checked_pow, saturating_pow, wrapping_pow ir overflowing_pow metodai;
  • Pridėta galimybė įjungti optimizavimą susiejimo etape, nurodant „-C linker-plugin-lto“ kūrimo parinktį.

Šaltinis: opennet.ru

Добавить комментарий