Rust 1.34 Ukukhishwa Kolimi Lokuhlela

kwenzeka ukukhululwa kolimi lokuhlela uhlelo Ukugqwala 1.34, ithuthukiswe iphrojekthi ye-Mozilla. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokufinyelela ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi kadoti noma isikhathi sokusebenza.

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kukhulula umthuthukisi ekukhohlisweni kwezikhombisi futhi kuvikele ezinkingeni ezivela ekukhohlisweni kwenkumbulo yezinga eliphansi, njengokufinyelela kwememori yangemuva kwamahhala, izinkomba ezingenalutho, ukugcwala kwebhafa, nokunye okunjalo. Umphathi wephakheji uyathuthukiswa ukuze asabalalise imitapo yolwazi, aqinisekise ukuhlanganisa nokuphatha ukuncika ngephrojekthi. cargo, okukuvumela ukuthi uthole amalabhulali adingekayo ohlelweni ngokuchofoza okukodwa. Indawo yokugcina isekelwa ukuze isingathe amalabhulali amakhreyithi.io.

main emisha:

  • Umphathi wephakheji le-Cargo wengeze amathuluzi ukuze asebenze nezinye izibhalisi zephakheji ezingaba khona kanye nokubhaliswa komphakathi kwe-crates.io. Isibonelo, abathuthukisi bezinhlelo zokusebenza zobunikazi manje bangasebenzisa ukubhaliswa kwabo kwangasese, okungasetshenziswa lapho kufakwa kuhlu okuncikile ku-Cargo.toml, futhi basebenzise imodeli yenguqulo efana ne-crates.io yemikhiqizo yabo, kanye nokubhekisela kokuncika kuwo womabili amakhreyithi. io nakurejista yakho.

    Ukuze ungeze izibhalisi zangaphandle kokuthi .cargo/config (etholakala ku-$HOME noma kumkhombandlela wephakheji)
    enikeziwe isigaba "[okubhaliswa]", kanye nokusebenzisa ukubhalisa kwangaphandle, inketho "yokubhalisa" ivele encazelweni yokuncika ngakunye kokuthi Cargo.toml. Ukuze uxhume ekubhaliseni okwengeziwe, vele ubeke ithokheni yokuqinisekisa kufayela elithi ~/.cargo/credentials bese uqalisa umyalo.
    "i-cargo login --registry=my-registry" kanye nokushicilela iphakheji -
    "cargo publish -registry=my-registry";

  • Kwengezwe usekelo olugcwele lokusebenzisa i-opharetha ethi “?”. ekuhlolweni odokotela, okukuvumela ukuthi usebenzise ikhodi eyisibonelo evela kumadokhumenti njengokuhlola. Owayekade eyi-opharetha
    "?" ingase isetshenziselwe ukuphatha amaphutha phakathi nokwenziwa kohlolo kuphela lapho kukhona umsebenzi othi “fn main()” noma emisebenzini ethi “#[test]”;

  • Kuzibaluli zangokwezifiso ezichazwe kusetshenziswa ama-macros enqubo enikeziwe ikhono lokusebenzisa amasethi amathokheni angafanele (“#[attr($tokens)]”, “#[attr[$tokens]] kanye ne-#[attr{$tokens}]”). Ngaphambilini, izakhi zazikwazi ukucaciswa kuphela esihlahleni/ifomu eliphindaphindayo kusetshenziswa iyunithi yezinhlamvu, isibonelo “#[foo(bar, baz(quux, foo = “bar”))]”, kodwa manje sekungenzeka ukusebenzisa izibalo (' #[ububanzi(0. .10)]') nezakhiwo ezifana ne-“#[bound(T: MyTrait)]”;
  • Izinhlobo ezizinzile (isici) ZamaFrom и ZamaInto, evumela ukuguqulwa kohlobo olunokuphatha iphutha. Isibonelo, izindlela ezifana nokusuka_be_bytes ezinezinhlobo eziphelele zisebenzisa amalungu afanayo njengokufakwayo, kodwa idatha ngokuvamile iza ngohlobo Lwesiqephu, futhi ukuguqula phakathi kwamalungu afanayo nezingcezu kunenkinga ukuzenza mathupha. Ngosizo lwezimpawu ezintsha, ukusebenza okucacisiwe kungenziwa ngokundiza ngocingo oluya ku-.try_into(), isibonelo, “let num = u32::from_be_bytes(slice.try_into()?)”. Ezinguqulweni ezihlala ziphumelela (ngokwesibonelo, ukusuka kuhlobo u8 ukuya ku-u32), uhlobo lwephutha lwengeziwe Ayinakwehluleka, okuvumela ukusetshenziswa okusobala
    I-TryFrom yakho konke ukusetshenziswa okukhona kokuthi "Kusuka";

  • Umsebenzi uhoxisiwe CommandExt::before_exec, evumele isibambi ukuthi sibulawe ngaphambi kokuqaliswa kwe-exec, esisetshenziswe kumongo wenqubo yengane efojwe ngemva kwekholi yemfologo(). Ngaphansi kwezimo ezinjalo, ezinye izinsiza zenqubo yomzali, njengezichazi zefayela nezindawo zenkumbulo ezifakwe kumephu, zingaphindwa, okungase kuholele ekuziphatheni okungachazwanga kanye nokusebenza okungalungile kwamalabhulali.
    Kunconywa ukusebenzisa umsebenzi ongaphephile esikhundleni se-fore_exec CommandExt::pre_exec.

  • Izinhlobo eziqinile ezisayiniwe nezingasayiniwe ze-athomu ezinosayizi osuka ku-8 kuya ku-64 bits (isibonelo, I-AtomicU8), kanye nezinhlobo ezisayiniwe I-NonZeroI[8|16|32|64|128].
  • Ingxenye entsha ye-API iyiswe esigabeni esizinzile, okuhlanganisa noma iyiphi::type_id, Iphutha::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] kanye nezindlela ze-SystemTime zizinzile ::checked_[engeza|sub]. Imisebenzi ye-iter::from_fn kanye ne-iter::abalandelayo izinzile;
  • Kuzo zonke izinhlobo zenombolo, izindlela zokuthi checked_pow, saturating_pow, wrapping_pow kanye ne-overflowing_pow ziyasetshenziswa;
  • Kwengezwe amandla okunika amandla ukulungiselelwa esigabeni sokuxhumanisa ngokucacisa inketho yokwakha ethi “-C linker-plugin-lto”.

Source: opennet.ru

Engeza amazwana