Rust 1.57 forritunarmálsútgáfa

Útgáfa kerfisforritunarmálsins Rust 1.57, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið einbeitir sér að minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir aðferðina til að ná mikilli samsvörun verkefna án þess að nota sorphirðu eða keyrslutíma (keyrslutími minnkar í grunnuppstillingu og viðhald á venjulegu bókasafni).

Sjálfvirk minnisstjórnun Rust útilokar villur þegar verið er að meðhöndla ábendingar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísanir á núll bendi, offramkeyrsla á biðminni osfrv. Til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði er verkefnið að þróa farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Helstu nýjungar:

  • Notkun „panic!“ makrósins hefur verið stöðug. í samhengi sem er búið til við söfnun, eins og „const fn“ yfirlýsingar. Að auki, auk þess að nota "læti!" const yfirlýsingar leyfa notkun á "fullyrðingu!" fjölvi. og nokkur önnur staðlað API bókasafns. Stöðugleiki nær ekki enn yfir allan sniðinnviði, þannig að í núverandi mynd er „læti!“ fjölvi er aðeins hægt að nota með kyrrstæðum strengjum (panic!(“...")) eða með einu innskotsgildi "&str" þegar skipt er út (panic!("{}", a)), sem ætti að takmarkast við að skipta út "{ }" án sniðforrita og annarra tegunda. Í framtíðinni mun notagildi fjölva í stöðugu samhengi verða stækkað, en stöðugleiki hæfileikanna er nú þegar nægjanlegur til að framkvæma fullyrðingarathuganir á samantektarstigi: const _: () = fullyrða!(std::mem::size_of::() == 64 ); const _: () = fullyrða!(std::mem::size_of::() == 8);
  • Cargo pakkastjóri leyfir notkun sniða með handahófskenndum nöfnum, ekki takmarkað við "dev", "release", "test" og "bekkur". Til dæmis, til að virkja hagræðingu á tengingarstigi (LTO) aðeins þegar lokaafurðasamstæðurnar eru búnar til, geturðu búið til „framleiðslu“ prófíl í Cargo.toml og bætt „lto = true“ fánanum við það. Hins vegar, þegar þú skilgreinir eigin snið, verður þú að tilgreina núverandi snið til að erfa sjálfgefnar stillingar frá því. Dæmið hér að neðan býr til „framleiðslu“ prófíl sem bætir við „útgáfu“ sniðið með því að innihalda „lto = true“ fánann. Snið sjálft er virkjað með því að hringja í farm með „--prófílframleiðslu“ valkostinum og samsetningargripirnir verða settir í „markmið/framleiðsla“ möppuna. [profile.production] inherits = "útgáfa" lto = satt
  • Notkun try_reserve fyrir Vec, String, HashMap, HashSet og VecDeque gerðirnar hefur verið stöðugur, sem gerir þér kleift að panta pláss fyrirfram fyrir ákveðinn fjölda þátta af tiltekinni gerð til að draga úr tíðni minnisúthlutunaraðgerða og forðast hrynur í rekstri vegna minnisskorts.
  • Það er leyfilegt að tilgreina fjölva með krulluðum svigrúmum í tjáningum eins og "m!{ .. }.method()" og "m!{ .. }?".
  • Framkvæmd aðgerðanna File::read_to_end og read_to_string hefur verið fínstillt.
  • Stuðningur við Unicode forskriftina hefur verið uppfærður í útgáfu 14.0.
  • Stækkaði fjölda aðgerða merkt "#[must_use]" til að gefa út viðvörun ef skilagildið er hunsað, sem hjálpar til við að bera kennsl á villur sem stafa af því að gera ráð fyrir að fall breyti gildum frekar en að skila nýju gildi.
  • Bætti við tilraunabakenda fyrir kóðagerð með því að nota libgccjit.
  • Nýr hluti af API hefur verið færður í flokkinn stöðugt, þar með talið aðferðir og útfærslur á eiginleikum hafa verið stöðugar:
    • [T; N]::as_mut_slice
    • [T; N]::sem_sneið
    • söfn::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • Strengur::try_reserve
    • Strengur::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • Iterator::map_while
    • iter::MapWhile
    • proc_macro::er_available
    • Skipun::get_program
    • Skipun::get_args
    • Skipun::get_envs
    • Skipun::get_current_dir
    • CommandArgs
    • CommandEnvs
  • Eigindin „const“, sem ákvarðar hvort hægt sé að nota hana í hvaða samhengi sem er í stað fasta, er notuð í fallhint::unreachable_unchecked.
  • Þriðja stig stuðnings hefur verið innleitt fyrir armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi og armv7a-kmc- solid_asp3-eabihf pallar. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar, birtingu opinberra smíðna og sannprófun á byggingarhæfni kóða.

Heimild: opennet.ru

Bæta við athugasemd