Ukukhishwa kolimi lohlelo lwe-Rust 2021 (1.56)

Ukukhululwa kolimi lwezinhlelo zesistimu i-Rust 1.56, eyasungulwa iphrojekthi ye-Mozilla, kodwa manje esethuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, kushicilelwe. Ngaphezu kwenombolo yenguqulo evamile, ukukhishwa kuphinde kubhalwe ngokuthi i-Rust 2021 futhi kuphawula ukuqiniswa kwezinguquko ezihlongozwayo eminyakeni emithathu edlule. I-Rust 2021 izosebenza njengesisekelo sokwakhiwa kwesici eminyakeni emithathu ezayo, efana nendlela ukukhishwa kwe-Rust 2018 kube yisisekelo sokuthuthukiswa kolimi eminyakeni emithathu edlule.

Ukuze kugcinwe ukuhambisana, onjiniyela bangasebenzisa omaka "2015", "2018", kanye "2021" ezinhlelweni zabo ukuze baxhumanise izinhlelo nezingcezu zesimo solimi ezihambisana nezinhlelo ezikhethiwe ze-Rust. Ukubuyekezwa kwethulwe ukuze kuhlukaniswe izinguquko ezingahambelani futhi zilungiswa kumethadatha yamaphakheji wezimpahla kusetshenziswa inkambu "ye-edishini" esigabeni "[iphakheji]". Isibonelo, i-edishini ye-"2018" ihlanganisa ukusebenza okuzinzile ekupheleni kuka-2018 futhi ifaka zonke izinguquko ezengeziwe ezingaphuli ukuhambisana. Uhlelo lwango-2021 futhi luhlanganisa izici ezihambisanayo eziphulwayo eziphakanyiswe ekukhishweni kwamanje kwe-1.56 futhi okugunyazelwe ukusetshenziswa esikhathini esizayo. Ngaphezu kolimi ngokwalo, abahleli baphinde bacabangele isimo samathuluzi kanye nemibhalo.

Ukungahambisani okuyinhloko okulungiswe ku-Rust 2021 yilezi:

  • Hlukanisa Ukuthwebula Ekuvalweni - Okuvaliwe manje kungathatha amagama ezinkambu ngazinye esikhundleni sayo yonke i-ID. Isibonelo, "|| imbazo + 1" izobamba kuphela "izembe" esikhundleni sika-"a".
  • Isici se-IntoIterator samalungu afanayo: array.into_iter() ikuvumela ukuthi uphindaphinde izakhi zamalungu afanayo ngevelu kunokuba ngereferensi.
  • Ukucutshungulwa kwezinkulumo ezithi "|" kushintshiwe ku-macro_rules (okunengqondo NOMA ukusebenza) kumaphethini - Isicacisi esithi ":pat" kumameshi manje sihlonipha amaphethini "A | B".
  • Umphathi wephakheji yezimpahla uhlanganisa ngokuzenzakalela inguqulo yesibili yesixazululi sesici, usekelo olwethulwa ku-Rust 1.51.
  • Izimpawu ze-TryFrom, TryInto, kanye ne-FromIterator zengezwe kumojuli yelabhulali evamile eyandulelayo.
  • Ukwethuka!(..) nokugomela!(expr, ..) ama-macros manje ahlala esebenzisa format_args!(..) ukuze afomethe amayunithi ezinhlamvu, afana ne-println!().
  • Izisho ident#, ident"..." kanye ne-ident'...' zigcinwe ku-syntax yolimi.
  • I-bare_trait_objects nezexwayiso ze-ellipsis_inclusive_range_patterns ziyiswe esigabeni samaphutha.

Okusha ku-Rust 1.56:

  • Ku-Cargo.toml, esigabeni "[iphakheji]", inkambu yenguqulo yokugqwala yengeziwe, onganquma ngayo ubuncane benguqulo esekelwe ye-Rust yephakheji yekhreyithi. Uma inguqulo yamanje ingafani nepharamitha eshiwo, i-Cargo izoyeka ngephutha.
  • Uma iphethini ifaniswa kusetshenziswa izinkulumo ezithi "binding @ iphethini", usekelo lunikezwa ukuze kucaciswe ukubophezela okwengeziwe (isibonelo, "let matrix @ Matrix {row_len, .. } = get_matrix();").
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
    • std::os::unix::fs::chroot
    • Iseli elingaphephile::raw_get
    • BufWriter::ezingxenyeni
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • I-Vec::nciphisa_kuya
    • Uchungechunge::nciphisa_kuya
    • I-OsString::nciphisa_ukuze
    • I-PathBuf::nciphisa_ukuze
    • I-BinaryHeap::nciphisa_ukuze
    • I-VecDeque::nciphisa_kuya
    • I-HashMap::nciphisa_ukuze
    • I-HashSet::shrink_to
  • Isibaluli esithi "const", esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma yimuphi umongo esikhundleni sama-constants, sisetshenziswa emisebenzini
    • std::mem::transmute
    • [T]::kuqala
    • [T]::hlukanisa_kuqala
    • [T]::okokugcina
    • [T]::hlukanisa_kokugcina
  • Umhlanganisi ushintshiwe ukuze asebenzise inguqulo ye-LLVM 13.
  • Kusetshenziswe usekelo lweleveli 64 yeplathifomu ye-aarch32-apple-ios-sim kanye nosekelo lweleveli XNUMX yeplathifomu ye-powerpc-unknown-freebsd kanye ne-riscvXNUMXimc-esp-espidf. Izinga lesithathu lisikisela ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela okusemthethweni kwakha nokuhlola ikhono lokwakha ikhodi.

Khumbula ukuthi ulimi lwe-Rust lugxile ekulawuleni inkumbulo ephephile, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokufinyelela ukufana okuphezulu kokwenziwa komsebenzi, kuyilapho kwenziwa ngaphandle kokusebenzisa umqoqi kadoti nesikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo kanye nokugcinwa kokugcinwa kwemishini edingekayo. umtapo wolwazi ojwayelekile).

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kusindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi ivikela ezinkingeni eziphakama ngenxa yokukhohlisa inkumbulo yezinga eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukususa ireferensi izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Source: opennet.ru

Engeza amazwana