Mae rhyddhau'r iaith raglennu system Rust 1.56, a sefydlwyd gan brosiect Mozilla, ond sydd bellach wedi'i ddatblygu dan nawdd y sefydliad dielw annibynnol Rust Foundation, wedi'i gyhoeddi. Yn ogystal Γ’'r rhif fersiwn rheolaidd, mae'r datganiad hefyd wedi'i ddynodi'n Rust 2021 ac mae'n nodi sefydlogi'r newidiadau a gynigir dros y tair blynedd diwethaf. Bydd Rust 2021 hefyd yn sail ar gyfer cynyddu ymarferoldeb dros y tair blynedd nesaf, yn debyg i sut y daeth rhyddhau Rust 2018 yn sail i ddatblygiad yr iaith yn ystod y tair blynedd diwethaf.
Er mwyn cynnal cydnawsedd, gall datblygwyr ddefnyddio labeli "2015", "2018" a "2021" yn eu rhaglenni, gan ganiatΓ‘u i raglenni gael eu cysylltu Γ’ sleisys cyflwr iaith sy'n cyfateb i'r rhifynnau dethol o Rust. Cyflwynwyd rhifynnau i wahanu newidiadau anghydnaws ac maent wedi'u ffurfweddu ym metadata pecynnau cargo trwy'r maes βargraffiadβ yn yr adran β[pecyn]β. Er enghraifft, mae rhifyn β2018β yn cynnwys y swyddogaeth a sefydlogwyd ar ddiwedd 2018 ac mae hefyd yn ymdrin Γ’'r holl newidiadau pellach nad ydynt yn torri cydnawsedd. Mae rhifyn 2021 hefyd yn cynnwys nodweddion sy'n torri ar ryngweithredu a gynigir yn y datganiad 1.56 presennol ac a gymeradwywyd i'w gweithredu yn y dyfodol. Yn ogystal Γ’'r iaith ei hun, mae'r golygyddion hefyd yn ystyried cyflwr yr offer a'r ddogfennaeth.
Anghydnawsedd mawr a gofnodwyd yn Rust 2021:
- Dal Ar WahΓ’n Wrth Gau - Gall Cau nawr ddal enwau caeau unigol yn lle'r dynodwr cyfan. Er enghraifft, "|| bydd ax + 1" ond yn dal "ax" yn lle "a".
- Mae'r nodwedd IntoIterator ar gyfer araeau: array.into_iter() yn caniatΓ‘u ichi ailadrodd dros elfennau arae yn Γ΄l gwerthoedd, yn hytrach na chyfeirnodau.
- Mae prosesu ymadroddion β|β wedi'i newid mewn macro_rules (Boolean OR) mewn patrymau - Mae'r fanyleb ":pat" mewn matsys bellach yn parchu "A | B".
- Mae'r rheolwr pecyn cargo yn cynnwys yn ddiofyn yr ail fersiwn o'r datryswr nodwedd, yr ymddangosodd cefnogaeth ar ei gyfer yn Rust 1.51.
- Mae nodweddion TryFrom, TryInto ac FromIterator wedi'u hychwanegu at y modiwl llyfrgell safonol rhagarweiniad.
- Mae'r panig!(..) a haeru!(expr, ..) macros bellach bob amser yn defnyddio format_args!(..) i fformatio llinynnau, yn debyg i println!().
- Mae'r ymadroddion ident#, identΒ»..." ac ident'...' wedi'u cadw yn y gystrawen iaith.
- Wedi symud rhybuddion bare_trait_objects ac ellipsis_inclusive_range_patterns i wallau.
Newydd yn Rust 1.56:
- Yn Cargo.toml, yn yr adran β[pecyn]β, mae'r maes fersiwn rhwd wedi'i ychwanegu, lle gallwch chi bennu'r fersiwn lleiaf a gefnogir o Rust ar gyfer y pecyn crΓ’t. Os nad yw'r fersiwn gyfredol yn cyfateb i'r paramedr penodedig, bydd Cargo yn rhoi'r gorau i weithio gyda neges gwall.
- Wrth baru patrwm gan ddefnyddio ymadroddion "rhwymo @ patrwm", darperir cefnogaeth ar gyfer nodi rhwymiadau ychwanegol (er enghraifft, "let matrics @ Matrix { row_len, .. } = get_matrix();").
- Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
- std::os::unix::fs::chroot
- AnniogelCell::raw_get
- BufWriter::i mewn_rhannau
- craidd ::panig ::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
- Vc:: crebachu_i
- Llinyn:: crebachu_i
- OsString:: crebachu_i
- PathBuf:: crebachu_i
- BinaryHeap :: crebachu_i
- VecDeque :: crebachu_i
- HashMap:: crebachu_i
- HashSet:: crebachu_i
- Defnyddir y nodwedd βconstβ, sy'n pennu'r posibilrwydd o ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, mewn ffwythiannau
- std::mem::transmute
- [T]:: yn gyntaf
- [T] :: hollti_cyntaf
- [T]:: diwethaf
- [T] :: hollti_last
- Mae'r casglwr wedi'i newid i ddefnyddio fersiwn LLVM 13.
- Mae ail lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y llwyfan aarch64-apple-ios-sim a thrydedd lefel ar gyfer y llwyfannau powerpc-unknown-freebsd a riscv32imc-esp-espidf. Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.
Dwyn i gof bod Rust yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu modd o gyflawni cyfochrogrwydd uchel wrth gyflawni swyddi heb ddefnyddio casglwr sbwriel neu amser rhedeg (mae amser rhedeg yn cael ei leihau i gychwyn a chynnal a chadw sylfaenol y llyfrgell safonol).
Mae rheolaeth cof awtomatig Rust yn dileu gwallau wrth drin awgrymiadau ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis cyrchu rhanbarth cof ar Γ΄l iddo gael ei ryddhau, dadgyfeiriadau pwyntydd nwl, gor-redeg byffer, ac ati. Er mwyn dosbarthu llyfrgelloedd, sicrhau cydosod a rheoli dibyniaethau, mae'r prosiect yn datblygu rheolwr pecyn Cargo. Cefnogir ystorfa crates.io ar gyfer cynnal llyfrgelloedd.
Ffynhonnell: opennet.ru