Ukukhutshwa kolwimi lwenkqubo yeRust 2021 (1.56)

Ukukhutshwa kwenkqubo yolwimi lwenkqubo iRust 1.56, eyasekwa yiprojekthi yeMozilla, kodwa ngoku iphuhliswe phantsi kombutho ozimeleyo ongenzi nzuzo iRust Foundation, ishicilelwe. Ukongeza kwinombolo yenguqulo eqhelekileyo, ukukhutshwa kwakhona kubhalwe njengeRust 2021 kwaye kuphawula ukuzinziswa kotshintsho olucetywayo kule minyaka mithathu idlulileyo. IRust 2021 iya kusebenza njengesiseko sokwakhiwa kweempawu kule minyaka mithathu izayo, ngokufana nendlela ukukhutshwa kweRust 2018 kube sisiseko sophuhliso lolwimi kule minyaka mithathu idlulileyo.

Ukugcina ukuhambelana, abaphuhlisi banokusebenzisa "2015", "2018", kunye ne "2021" iithegi kwiiprogram zabo ukudibanisa iinkqubo kwisilayi solwimi oluhambelana nokuhlelwa kweRust ekhethiweyo. Uhlaziyo lwaziswa ukwahlula iinguqu ezingahambelaniyo kwaye ziqwalaselwe kwimethadatha yeepakethe zempahla kusetyenziswa indawo ethi "edition" kwicandelo elithi "[package]". Ngokomzekelo, i-2018 edition iquka ukusebenza okuye kwazinziswa ekupheleni kwe-2018 kwaye iquka zonke iinguqu ezizayo ezingaphuli ukuhambelana. Ushicilelo luka-2021 lubandakanya iimpawu zokuqhawula ukuhambelana ezicetywayo kukhupho lwangoku lwe-1.56 kwaye luvunyiwe ukuba luphunyezwe kwixesha elizayo. Ukongeza kulwimi ngokwalo, abahleli baphinda bathathele ingqalelo imeko yezixhobo kunye namaxwebhu.

Izinto eziphambili zokungahambelani ezilungisiweyo kwiRust 2021 zezi:

  • I-Capture eyahlula kwiindawo ezivaliweyo-Ukuvalwa ngoku kunokuthatha amagama entsimi ngamnye endaweni ye-ID epheleleyo. Umzekelo, "|| izembe + 1" liya kubamba kuphela "izembe" endaweni ka-"a".
  • Uphawu lwe IntoIterator yoluhlu: array.into_iter() ikuvumela ukuba uphindaphinde ngaphezulu kwezakhi zoluhlu ngexabiso kunereferensi.
  • Uqhubekekiso lwe "|" intetho itshintshiwe kwi-macro_rules (kuyavakala OKANYE ukusebenza) kwiipatheni - Isicacisi ":pat" kwiimatshisi ngoku sihlonipha iipatheni "A | B".
  • Umphathi wepakethe yempahla ubandakanya ngokungagqibekanga inguqulelo yesibini yesixazululi sesici, inkxaso eyaziswa kwiRust 1.51.
  • Iimpawu zeTryFrom, TryInto, kunye neFromIterator zongezwe kwisandulela semodyuli yethala leencwadi.
  • Uloyiko!(..) kunye ne-assert!(expr, ..) iimacros ngoku zihlala zisebenzisa format_args!(..) ukufomatha imitya, efana neprintln!().
  • Iintetha zesazisi#, isazisi"..." kunye nesazisi'…' zigcinwe kwisivakalisi solwimi.
  • I-bare_trait_objects kunye ne-ellipsis_inclusive_range_patterns izilumkiso ziye zasiwa kudidi lwempazamo.

Entsha kwiRust 1.56:

  • KwiCargo.toml, kwicandelo elithi "[ipakethe]", indawo yoguqulelo lomhlwa yongezwe, apho unokumisela ubuncinci obuxhaswayo beRust kwiphakheji yekreyithi. Ukuba uguqulelo lwangoku aluhambelani nepharamitha ekhankanyiweyo, iCargo iza kulahla ngempazamo.
  • Xa ipateni ithelekiseka kusetyenziswa "binding @ ipatheni" iintetho, inkxaso inikezelwa ekuchazeni izibophelelo ezongezelelweyo (umzekelo, "let matrix @ Matrix {row_len, .. } = get_matrix();").
  • Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kubandakanywa iindlela kunye nokuphunyezwa kweempawu ziye zazinziswa:
    • std::os::unix::fs::chroot
    • Iseli engakhuselekanga::ikrwada_fumana
    • BufWriter ::kwiinxalenye
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::finyela_ku
    • Umtya::finyela_ukuya
    • OsString::finyela_ukuya
    • PathBuf::finyela_ukuya
    • Imfumba yeBinary::finyela_ukuya
    • VecDeque::finyela_ukuya
    • HashMap::finyela_ku
    • HashSet ::finyela_ukuya
  • Uphawu lwe "const", olumisela ukuba nokwenzeka kokuyisebenzisa kuyo nayiphi na imeko endaweni ye-constants, isetyenziswa kwimisebenzi.
    • std::mem::transmute
    • [T]::kuqala
    • [T]::hlukanisa_kuqala
    • [T]::okugqibela
    • [T]::ukwahlula_kokugqibela
  • Umqambi utshintshiwe ukuba asebenzise i-LLVM version 13.
  • Ukuphunyezwa kwenqanaba lesi-64 ngenkxaso ye-aarch32-apple-ios-sim yesikhulumi kunye nenqanaba le-XNUMX inkxaso ye-powerpc-unknown-freebsd kunye neqonga le-riscvXNUMXimc-esp-espidf. Inqanaba lesithathu lithetha inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo, igosa lokupapasha lakha kwaye lijonge ukukwazi ukwakha ikhowudi.

Khumbula ukuba ulwimi lweRust lujolise kulawulo olukhuselekileyo lwememori, lubonelela ngolawulo lwememori oluzenzekelayo, kwaye lubonelela ngeendlela zokufikelela ukufana okuphezulu kokwenziwa komsebenzi, ngelixa usenza ngaphandle kokusetyenziswa komqokeleli wenkunkuma kunye nexesha lokubaleka (ixesha lokuqhuba liyancitshiswa libe kukuqaliswa okusisiseko kunye nokugcinwa kwesixhobo sokwenza umsebenzi. ilayibrari eqhelekileyo).

Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lugcina umphuhlisi kwiimpazamo xa ulawula izikhombisi kwaye ukhusela kwiingxaki ezivela ngenxa yokukhohlisa kwimemori ekwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukurhoxisa izikhombisi ezingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukubonelela ngokwakha kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Indawo yokugcina i-crates.io iyaxhaswa kukusingatha amathala eencwadi.

umthombo: opennet.ru

Yongeza izimvo