Rust 1.73 forritunarmálsútgáfa

Útgáfa Rust 1.73 almennt forritunarmálsins, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið leggur áherslu á minnisöryggi og veitir leiðina til að ná mikilli samhliða vinnu á sama tíma og forðast notkun á sorphirðu og keyrslutíma (keyrslutími minnkar í grunnuppsetningu og viðhald á venjulegu bókasafni).

Minni meðhöndlunaraðferðir Rust bjarga þróunaraðilanum frá villum við meðhöndlun ábendinga og vernda gegn vandamálum sem koma upp vegna minnis meðhöndlunar á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísun núllbenda, offramkeyrsla á biðminni o.s.frv. Til að dreifa bókasöfnum, útvega smíði og stjórna ósjálfstæði, þróar verkefnið farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Minni öryggi er veitt í Rust á þýðingu tíma með tilvísun athugun, halda utan um eignarhald hlut, halda utan um líftíma hlut (umfang) og meta réttmæti minni aðgangs meðan kóða er keyrt. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökfræðilegar villur.

Helstu nýjungar:

  • Snið skilaboða sem gefin eru út af sjálfgefna hrunstjórnunarkerfi (panic) hefur verið endurhannað. Textinn sem tilgreindur er í "panic!" fjölvi er nú sýnd á sérstakri línu án gæsalappa, sem gerir skilaboðin auðveldari að lesa og útilokar rugling þegar hreiðrar gæsalappir eru til staðar eða skipt yfir margar línur. fn main() { let file = "ferris.txt"; læti!("ó nei! {skrá:?} fannst ekki!"); } Það var „aðal“ þráður sem panikkaði „ó nei! 'ferris.txt' fannst ekki!', src/main.rs:3:5 Þráður 'main' panikkaði á src/main.rs:3:5: ó nei! "ferris.txt" fannst ekki!

    Úttak skilaboða sem birtast þegar „assert_eq“ og „assert_ne“ fjölva eru kveikt hefur einnig verið endurunnin. fn main() { assert_eq!("🦀", "🐟", "ferris er ekki fiskur"); } Það var þráður 'aðal' sem var með panikk við 'fullyrðingu mistókst: `(vinstri == hægri)` vinstri: `"🦀"`, hægri: `"🐟"`: ferris er ekki fiskur', src/main.rs: 2 :5 „aðal“ þráður skelfdist á src/main.rs:2:5: staðhæfing `vinstri == hægri` mistókst: Ferris er ekki fiskur vinstri: “🦀” hægri: “🐟”

  • Í samræmi við RFC 3184 hefur hæfileikinn til að meðhöndla þráð-staðbundna (thread_local) LocalKey geymslulykla beint verið bætt við > og LocalKey > með því að nota get(), set(), take() og replace() aðferðirnar, í stað þess að nota "með(|innri| ...)" lokun, sem útilokar þörfina á að framkvæma viðbótar upphafskóða fyrir sjálfgefin gildi sem tilgreind eru fyrir nýja þræði þegar makróið „thread_local“ er notað! þráður_staðbundinn! { truflanir Hlutir: Hólf > = Cell::new(Vec::new()); } fn f() { // var THINGS.with(|i| i.set(vec![32, 1, 2])); // varð THINGS.set(vec![3, 1, 2]); // ... // var látið v = THINGS.with(|i| i.take()); // varð let v: Vec = THINGS.take(); }
  • 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:
    • Óundirritaður {heiltala}::div_ceil
    • Óundirritaður {heiltala}::next_multiple_of
    • Óundirritaður {heiltala}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • LocalKey :: >::fá
    • LocalKey :: >::sett
    • LocalKey :: >::taka
    • LocalKey :: >::skipta út
    • LocalKey :: >::með_láni
    • LocalKey :: >::með_lána_mut
    • LocalKey :: >::sett
    • LocalKey :: >::taka
    • LocalKey :: >::skipta út
  • "const" eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í föllum:
    • rc::Veik::nýtt
    • samstilling::Veik::nýtt
    • NonNull::as_ref
  • Þjálfarinn veitir skráningu á útgáfuupplýsingum í „.comment“ hlutanum, svipað og GCC og Clang.
  • Þriðja stig stuðnings hefur verið innleitt fyrir pallana aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl og x86_64-unknown-linux -óhos. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar, útgáfu opinberra smíða eða athuga hvort hægt sé að smíða kóðann.
  • Annað stig stuðnings fyrir markvettvanginn wasm32-wasi-preview1-threads hefur verið innleitt. Annað stig stuðnings felur í sér samsetningarábyrgð.

Heimild: opennet.ru

Bæta við athugasemd