Ġie ppubblikat ir-rilaxx tal-lingwa ta 'programmar tas-sistema Rust 1.56, imwaqqfa mill-proġett Mozilla, iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Minbarra n-numru tal-verżjoni regolari, ir-rilaxx huwa wkoll nominat Rust 2021 u jimmarka stabilizzazzjoni tal-bidliet proposti matul l-aħħar tliet snin. Rust 2021 se jservi wkoll bħala l-bażi biex tiżdied il-funzjonalità matul it-tliet snin li ġejjin, simili għal kif ir-rilaxx ta ' Rust 2018 sar il-bażi għall-iżvilupp tal-lingwa fl-aħħar tliet snin.
Biex tinżamm il-kompatibilità, l-iżviluppaturi jistgħu jużaw tikketti "2015", "2018" u "2021" fil-programmi tagħhom, li jippermettu li l-programmi jkunu marbuta ma 'slices tal-istat tal-lingwa li jikkorrispondu mal-edizzjonijiet magħżula ta' Rust. L-edizzjonijiet ġew introdotti biex jisseparaw bidliet inkompatibbli u huma kkonfigurati fil-metadejta tal-pakketti tal-merkanzija permezz tal-qasam "edizzjoni" fit-taqsima "[pakkett]". Pereżempju, l-edizzjoni "2018" tinkludi l-funzjonalità stabbilizzata sa mill-aħħar tal-2018 u tkopri wkoll il-bidliet ulterjuri kollha li ma jkissrux il-kompatibilità. L-edizzjoni tal-2021 tinkludi wkoll karatteristiċi li jkissru l-interoperabbiltà proposti fir-rilaxx attwali 1.56 u approvati għal implimentazzjoni futura. Minbarra l-lingwa nnifisha, l-edituri jqisu wkoll l-istat tal-għodod u d-dokumentazzjoni.
Inkompatibilitajiet kbar irreġistrati f'Rut 2021:
- Qbid Separat fl-Għeluq - L-għeluq issa jistgħu jaqbdu ismijiet ta' oqsma individwali minflok l-identifikatur kollu. Per eżempju, "|| ax + 1" se jaqbad biss "ax" minflok "a".
- Il-karatteristika IntoIterator għall-arrays: array.into_iter() jippermettilek li tirrepeti fuq elementi tal-array b'valuri, aktar milli b'referenzi.
- L-ipproċessar tal-espressjonijiet “|” inbidel fil-makro_rules (Boolean OR) f'mudelli - L-ispeċifikazzjoni ":pat" fil-logħbiet issa jirrispetta "A | B”.
- Il-maniġer tal-pakkett tal-merkanzija jinkludi awtomatikament it-tieni verżjoni tas-solvent tal-karatteristiċi, li l-appoġġ għalih deher f'Rut 1.51.
- Il-karatteristiċi TryFrom, TryInto u FromIterator ġew miżjuda mal-modulu tal-librerija standard tal-preludju.
- Il-macros paniku!(..) u assert!(expr, ..) issa dejjem jużaw format_args!(..) biex jifformattjaw strings, simili għal println!().
- L-espressjonijiet ident#, ident»..." u ident'...' huma riżervati fis-sintassi tal-lingwa.
- Tċaqlaq twissijiet ta' bare_trait_objects u ellipsis_inclusive_range_patterns għal żbalji.
Ġdid fis-sadid 1.56:
- F'Cargo.toml, fit-taqsima "[pakkett]", ġie miżjud il-qasam tal-verżjoni tas-sadid, li permezz tiegħu tista 'tiddetermina l-verżjoni minima appoġġjata ta' Rust għall-pakkett taċ-ċestun. Jekk il-verżjoni attwali ma taqbilx mal-parametru speċifikat, Cargo tieqaf taħdem b'messaġġ ta 'żball.
- Meta tqabbil tal-mudell bl-użu ta' espressjonijiet "binding @ pattern", huwa pprovdut appoġġ għall-ispeċifikazzjoni ta' rbit addizzjonali (per eżempju, "let matrix @ Matrix { row_len, .. } = get_matrix();").
- Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
- std::os::unix::fs::chroot
- UnsafeCell::raw_get
- BufWriter::into_parts
- core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
- Vec::shrink_to
- String::shrink_to
- OsString::shrink_to
- PathBuf::shrink_to
- BinaryHeap::shrink_to
- VecDeque::shrink_to
- HashMap::shrink_to
- HashSet::shrink_to
- L-attribut "const", li jiddetermina l-possibbiltà li jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-funzjonijiet
- std::mem::transmute
- [T]::l-ewwel
- [T]::split_first
- [T]::aħħar
- [T]::split_last
- Il-kompilatur inbidel biex juża LLVM verżjoni 13.
- Ġie implimentat it-tieni livell ta' appoġġ għall-pjattaforma aarch64-apple-ios-sim u t-tielet livell għall-pjattaformi powerpc-unknown-freebsd u riscv32imc-esp-espidf. It-tielet livell jinvolvi appoġġ bażiku, iżda mingħajr ittestjar awtomatizzat, pubblikazzjoni ta 'bini uffiċjali, u verifika tal-bini tal-kodiċi.
Ifakkar li Rust huwa ffokat fuq is-sikurezza tal-memorja, jipprovdi ġestjoni awtomatika tal-memorja, u jipprovdi mezz biex jinkiseb paralleliżmu għoli fl-eżekuzzjoni tax-xogħol mingħajr ma juża kollettur taż-żibel jew runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).
Il-ġestjoni awtomatika tal-memorja ta 'Rut telimina l-iżbalji meta timmanipula pointers u tipproteġi kontra problemi li jirriżultaw minn manipulazzjoni tal-memorja ta' livell baxx, bħall-aċċess għal reġjun tal-memorja wara li jkun ġie meħlus, dereferences null pointer, buffer overruns, eċċ. Biex iqassam il-libreriji, jiżgura l-assemblaġġ u jimmaniġġja d-dipendenzi, il-proġett qed jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.
Sors: opennet.ru