Ú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 hefur stöðugt LLVM-byggt kerfi til að búa til þekjugögn sem notuð eru til að meta kóðaþekju við prófanir. Til að virkja þekjugögn við smíði skal nota fánann "-C instrument-coverage", til dæmis með því að keyra smíðina með skipuninni "RUSTFLAGS="-C instrument-coverage" cargo build". Eftir að keyrsluskráin sem smíðuð er á þennan hátt hefur verið keyrð verður default.profraw skráin vistuð í núverandi möppu, sem hægt er að vinna úr með llvm-profdata gagnsemi úr llvm-tools-preview íhlutanum. Úttakið sem llvm-profdata vinnur úr er síðan hægt að senda til llvm-cov til að búa til skýringarskýrslu með upplýsingum um kóðaþekju. Upplýsingar um bindingu við frumtexta eru teknar úr keyrsluskránni sem er til skoðunar, sem inniheldur nauðsynleg gögn um tengsl þekjuteljara við kóðann. 1| 1|fn main() { 2| 1| println!("Halló, heimur!"); 3| 1|}
- Pakkastjórinn fyrir farm hefur stöðugað stuðning við fánann „--timings“, sem gerir kleift að búa til ítarlega skýrslu um framvindu smíðinnar og framkvæmdartíma hvers skrefs. Þessi skýrsla getur verið gagnleg til að hámarka afköst smíðinnar.
- Pakkastjórinn Cargo kynnir nýja setningafræði fyrir skilyrta samsetningu og valfrjálsa val á ósjálfstæðum einingum. Þessi setningafræði er stillt í Cargo.toml skránni með því að lista upp nefnda eiginleika í [features] hlutanum og er virkjuð með því að taka með eiginleika við pakkasmíði með því að nota fánann "--features". Nýja útgáfan bætir við stuðningi við ósjálfstæði í aðskildum nafnrýmum og veikum ósjálfstæðum einingum.
Í fyrra tilvikinu útfærðum við möguleikann á að nota stök með forskeytinu "dep:" innan hlutans "[features]" til að bindast valfrjálsum tengslum án þess að sýna þá tengsl óbeint sem eiginleika. Í seinna tilvikinu bættum við við stuðningi við að merkja valfrjáls tengsl með "?" ("pakkaheiti?/eiginleikaheiti"), sem ætti aðeins að vera með ef annar eiginleiki inniheldur þá valfrjálsu tengslu. Til dæmis, í dæminu hér að neðan, mun meðtalning á serde eiginleikanum innihalda tengslin "serde", sem og eiginleikann "serde" fyrir tengslin "rgb", en aðeins ef tengslin "rgb" eru með annars staðar: [tengingar] serde = { útgáfa = "1.0.133", valfrjálst = satt } rgb = { útgáfa = "0.8.25", valfrjálst = satt } [features] serde = ["dep:serde", "rgb?/serde"]
- Stuðningur við stigvaxandi þýðingu, sem var óvirkur í fyrri útgáfu, hefur verið endurvirkjaður. Þýðingarvillan sem olli því að þessi aðgerð var óvirkjuð hefur verið lagfærð.
- Nokkur vandamál með ábyrgð á einhliða tímaútreikningi Instant tímastillisins, sem tekur mið af þeim tíma sem kerfið var í dvalaham, hafa verið leyst. Áður treysti tímastillirinn á stýrikerfisforritaskil (OS API) þegar það var mögulegt, sem tók ekki tillit til vandkvæða sem trufluðu einhliða tímaútreikninga, svo sem vélbúnaðarvandamála, 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ýr_hringlaga
- Rc::new_cyclic
- slice::EscapeAscii
- <[u8]>::escape_ascii
- u8::escape_ascii
- Vec::spare_capacity_mut
- KannskiUninit::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 stærð::abs_diff
- Sýna fyrir io::ErrorKind
- Frá fyrir útgöngukóða
- Ekki fyrir ! (skrifaðu "aldrei")
- _Op_Assign<$t>
- arch::is_aarch64_feature_detected!
- Stuðningur á 3. stigi hefur verið innleiddur fyrir mips64-openwrt-linux-musl* og armv7-unknown-linux-uclibceabi (softfloat) kerfin. Stig 3 veitir grunnstuðning, en án sjálfvirkra prófana, opinberra útgáfum eða staðfestingar á byggingu.
- Þýðandinn hefur verið skipt yfir í að nota LLVM 14.
Að auki geturðu athugað:
- Bætt var við stuðningi við ræsingu á rustc þýðanda með því að nota rustc_codegen_gcc bakendann. Þetta gerir kleift að nota libgccjit bókasafnið í GCC verkefninu sem kóðaframleiðanda í rustc, sem gerir rustc kleift að styðja arkitektúr og hagræðingar sem eru tiltækar í GCC. Ræsing á þýðanda vísar til möguleikans á að nota GCC-byggðan kóðaframleiðanda í rustc til að smíða rustc þýðandann sjálfan. Í reynd gerir þessi aðgerð kleift að smíða rust forrit fyrir arkitektúr sem áður voru ekki studdar af rustc.
- Доступен выпуск инструментария uutils coreutils 0.0.13, в рамках которого развивается аналог пакета GNU Coreutils, переписанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Целью проекта является создание кросс-платформенной альтернативной реализации Coreutils, способной работать в том числе на платформах Windows, Redox и Fuchsia, а также распространение под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL.
Nýja útgáfan bætir útfærslu margra tækja, þar á meðal verulega bætta samhæfni cp, dd, df, split og tr við GNU-samsvarandi kerfi. Skjölun á netinu er nú aðgengileg. Clap-þáttarinn er notaður til að greina skipanalínubreytur, bætir úttakið fyrir "--help" fánann og bætir við stuðningi við skammstafanir á löngum skipunum (til dæmis er hægt að nota "ls --col" í staðinn fyrir "ls --color").
Heimild: opennet.ru
