Rust 1.60 forritunarmálsútgáfa

Útgáfa Rust 1.60 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:

  • Rustc þýðandinn er með stöðugt LLVM byggt kerfi til að búa til þekjugögn sem notuð eru til að meta umfang kóða meðan á prófun stendur. Til að virkja umfangsgögn meðan á samsetningu stendur, verður þú að nota „-Cinstrument-coverage“ fánann, til dæmis að hefja samsetninguna með „RUSTFLAGS=”-C instrument-coverage“ cargo build“ skipuninni. Eftir að keyrsluskráin sem er sett saman á þennan hátt er keyrð, verður default.profraw skráin vistuð í núverandi möppu, til vinnslu sem þú getur notað llvm-profdata tólið úr llvm-tools-preview íhlutnum. Úttakið sem unnið er með llvm-profdata er síðan hægt að senda til llvm-cov til að búa til athugasemdaskýrslu um umfang kóða. Upplýsingar um hlekkinn á frumkóðann eru teknar úr keyrsluskránni sem verið er að skoða, sem inniheldur nauðsynleg gögn um tengsl þekjuteljara og kóðans. 1| 1|fn aðal() { 2| 1| println!("Halló, heimur!"); 3| 1|}
  • Í farmpakkastjóranum hefur stuðningur við „-tímasetningar“ fánann verið stöðugur, sem felur í sér gerð nákvæmrar skýrslu um framvindu smíðinnar og framkvæmdartíma hvers skrefs. Skýrslan getur verið gagnleg til að hámarka frammistöðu samsetningarferlisins.
  • Farmpakkastjórinn býður upp á nýja setningafræði fyrir kerfi skilyrtrar samantektar og val á valkvæðum ósjálfstæðum, stillt í Cargo.toml skránni með því að skrá lista yfir nafngreinda eiginleika í [eiginleika] hlutanum og virkjað með því að virkja eiginleikana meðan á pakkanum stendur. með því að nota „--eiginleika“ fána. Nýja útgáfan bætir við stuðningi við ósjálfstæði í aðskildum nafnasvæðum og veikum ósjálfstæðum.

    Í fyrra tilvikinu er hægt að nota þætti með forskeytinu „dep:“ inni í „[eiginleikar]“ hlutanum til að tengja beinlínis við valfrjálsa ósjálfstæði án þess að tákna þessa ósjálfstæði sem eiginleika. Í öðru tilvikinu hefur verið bætt við stuðningi við að merkja með „?“ merkinu. ("pakkanafn?/eiginleikanafn") valkvæða ósjálfstæði sem ætti aðeins að vera með ef einhver önnur eiginleiki inniheldur valfrjálsa ósjálfstæði. Til dæmis, í dæminu hér að neðan, mun það að virkja serde eiginleikann virkja „serde“ ósjálfstæði, sem og „serde“ eignina fyrir „rgb“ ósjálfstæði, en aðeins ef „rgb“ ósjálfstæði er virkt annars staðar: [dependenties] serde = { version = " 1.0.133", valfrjálst = satt } rgb = { útgáfa = "0.8.25", valfrjálst = satt } [eiginleikar] serde = ["dep:serde", "rgb?/serde"]

  • Stuðningur við stigvaxandi samantekt, sem var gerð óvirk í síðustu útgáfu, hefur verið skilað. Búið er að leysa þýðandavilluna sem olli því að aðgerðin var óvirkjuð.
  • Leysti nokkur vandamál með að veita Instant tímamælum tryggingu fyrir eintóna tímasetningu, sem tekur mið af þeim tíma sem kerfið eyðir í svefnham. Áður var stýrikerfi API notað þegar það var hægt til að stjórna tímamælinum, sem tók ekki tillit til erfiðra aðstæðna sem brjóta einhæfni tímans, svo sem vélbúnaðarvandamála, notkun sýndarvæðingar eða villna í stýrikerfinu.
  • 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:
    • Bogi::ný_hringlaga
    • Rc::nýtt_hringlaga
    • sneið :: EscapeAscii
    • <[u8]>::escape_ascii
    • u8::escape_ascii
    • Vec::spare_capacity_mut
    • MaybeUninit::assume_init_drop
    • MaybeUninit::assume_init_read
    • i8::abs_diff
    • i16::abs_diff
    • i32::abs_diff
    • i64::abs_diff
    • i128::abs_diff
    • isize::abs_diff
    • u8::abs_diff
    • u16::abs_diff
    • u32::abs_diff
    • u64::abs_diff
    • u128::abs_diff
    • nota::abs_diff
    • Skjár fyrir io::ErrorKind
    • Frá fyrir ExitCode
    • Ekki fyrir! (sláðu inn "aldrei")
    • _Op_Assign<$t>
    • arch::is_aarch64_feature_detected!
  • Þriðja stig stuðnings hefur verið innleitt fyrir mips64-openwrt-linux-musl* og armv7-unknown-linux-uclibceabi (softfloat) pallana. Þ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.
  • Skipt hefur verið um þýðanda til að nota LLVM 14.

Að auki geturðu athugað:

  • Bætti við stuðningi við að ræsa rustc þýðanda með því að nota rustc_codegen_gcc bakendann, sem gerir þér kleift að nota libgccjit bókasafnið úr GCC verkefninu sem kóðarafall í rustc, sem gerir rustc kleift að veita stuðning fyrir arkitektúr og hagræðingar sem eru tiltækar í GCC. Kynning á þýðanda þýðir getu til að nota GCC-undirstaða kóðarafall í rustc til að byggja Rustc þýðanda sjálfan. Á hagnýtu hliðinni gerir þessi eiginleiki þér kleift að smíða ryðforrit fyrir arkitektúr sem ekki var áður studd í Rustc.
  • Útgáfa uutils coreutils 0.0.13 verkfærasettsins er fáanleg, þar sem hliðstæða GNU Coreutils pakkans, endurskrifuð á Rust tungumálinu, er í þróun. Coreutils kemur með yfir hundrað tólum, þar á meðal sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln og ls. Markmið verkefnisins er að búa til mismunandi útfærslu á Coreutils, sem getur keyrt á Windows, Redox og Fuchsia kerfum, sem og dreifingu undir leyfilegu MIT leyfinu, í stað GPL copyleft leyfisins.

    Nýja útgáfan hefur bætt útfærslur margra tóla, þar á meðal verulega bætt samhæfni cp, dd, df, split og tr tólanna við hliðstæða þeirra úr GNU verkefninu. Skjöl á netinu veitt. Clap parserinn er notaður til að flokka skipanalínurök, sem hefur bætt úttakið fyrir „--help“ fánann og bætt við stuðningi við skammstafanir á löngum skipunum (td geturðu tilgreint „ls -col“ í stað „ls -color“ ”).

Heimild: opennet.ru

Bæta við athugasemd