Rust pwogramasyon langaj lage 2021 (1.56)

Yo te pibliye liberasyon langaj pwogramasyon sistèm Rust 1.56, ki te fonde pa pwojè Mozilla, men kounye a devlope anba ejid òganizasyon endepandan ki pa gen pwofi Rust Foundation. Anplis nimewo vèsyon regilye a, lage a tou deziyen Rust 2021 e li make yon estabilizasyon chanjman yo pwopoze pandan twa ane ki sot pase yo. Rust 2021 pral sèvi tou kòm baz pou ogmante fonksyonalite sou twa ane kap vini yo, menm jan ak fason liberasyon Rust 2018 la te vin baz pou devlopman lang nan twa ane ki sot pase yo.

Pou kenbe konpatibilite, devlopè yo ka itilize etikèt "2015", "2018" ak "2021" nan pwogram yo, sa ki pèmèt pwogram yo dwe lye ak tranch eta lang ki koresponn ak edisyon yo chwazi nan Rust. Edisyon yo te prezante pou separe chanjman enkonpatib yo epi yo konfigirasyon nan metadata pakè kago yo atravè jaden "edisyon" nan seksyon "[pake]". Pou egzanp, edisyon "2018 la" gen ladan fonksyonalite a estabilize apati fen 2018 epi li kouvri tou tout lòt chanjman ki pa kraze konpatibilite. Anplis de sa, edisyon 2021 la gen ladan karakteristik entèoperabilite yo pwopoze nan lage 1.56 aktyèl la epi ki apwouve pou aplikasyon nan lavni. Anplis de lang nan tèt li, editè yo tou pran an kont eta a nan zouti yo ak dokiman yo.

Gwo enkonpatibilite ki anrejistre nan Rust 2021:

  • Separe Capture nan Fèmti - Fèmti kapab kounye a pran non jaden endividyèl olye pou yo tout idantifyan an. Pou egzanp, "|| rach + 1" pral sèlman pran "rach" olye de "a".
  • Karakteristik IntoIterator pou etalaj: array.into_iter() pèmèt ou itere sou eleman etalaj pa valè, olye ke pa referans.
  • Pwosesis ekspresyon "|" yo te chanje nan macro_rules (Boolean OSWA) nan modèl - Espesifikasyon ":pat" nan alimèt kounye a respekte "A | B".
  • Manadjè pake kago a gen ladan pa default dezyèm vèsyon rezolisyon karakteristik, sipò pou ki parèt nan Rust 1.51.
  • Yo te ajoute karakteristik TryFrom, TryInto ak FromIterator nan modil bibliyotèk estanda prelid la.
  • Makro yo panik!(..) ak afime!(expr, ..) kounye a toujou itilize format_args!(..) pou fòma fisèl, menm jan ak println!().
  • Ekspresyon ident#, ident»..." ak ident'...' rezève nan sentaks langaj la.
  • Deplase bare_trait_objects ak ellipsis_inclusive_range_patterns avètisman nan erè.

Nouvo nan Rust 1.56:

  • Nan Cargo.toml, nan seksyon "[pake]", yo te ajoute jaden rouye vèsyon an, atravè ki ou ka detèmine vèsyon minimòm ki sipòte Rust pou pake kès la. Si vèsyon aktyèl la pa matche ak paramèt espesifye a, Cargo ap sispann travay ak yon mesaj erè.
  • Lè modèl matche lè l sèvi avèk ekspresyon "binding @ model", yo bay sipò pou espesifye lòt lyezon (pa egzanp, "let matrix @ Matrix { row_len, .. } = get_matrix();").
  • Yon nouvo pòsyon nan API a te transfere nan kategori ki estab, ki gen ladan metòd yo ak aplikasyon karakteristik yo:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::nan_pati
    • 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
  • Atribi "const" la, ki detèmine posibilite pou itilize nan nenpòt kontèks olye pou yo konstan, yo itilize nan fonksyon.
    • std::mem::transmute
    • [T]::premye
    • [T]::split_first
    • [T]::dènye
    • [T]::split_last
  • Konpilatè a te chanje pou itilize LLVM vèsyon 13.
  • Yo te aplike yon dezyèm nivo sipò pou platfòm aarch64-apple-ios-sim ak yon twazyèm nivo pou platfòm powerpc-unknown-freebsd ak riscv32imc-esp-espidf. Twazyèm nivo a enplike sipò debaz, men san yo pa tès otomatik, pibliye bati ofisyèl, oswa tcheke si kòd la ka bati.

Sonje byen, Rust konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay mwayen pou reyalize gwo paralèl nan ekzekisyon travay san yo pa itilize yon pèseptè fatra oswa ègzekutabl (se redui tan an nan inisyalizasyon debaz ak antretyen nan bibliyotèk la estanda).

Jesyon otomatik memwa Rust a elimine erè lè w ap manipile endikasyon ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba, tankou aksè nan yon rejyon memwa apre li fin libere, dereferans pointeur nil, depase tanpon, elatriye. Pou distribye bibliyotèk, asire asanble ak jere depandans, pwojè a ap devlope manadjè pake kago. Repozitwa crates.io sipòte pou hosting bibliyotèk.

Sous: opennet.ru

Add nouvo kòmantè