Rust 1.34 Ukukhishwa Kolimi Lokuhlela

Ulimi lokuhlela uhlelo lwe-Rust 1.34, oluthuthukiswe iphrojekthi ye-Mozilla, selukhululiwe. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokuthola ukufana okuphezulu komsebenzi 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. Ukuze kusatshalaliswe imitapo yolwazi, uqinisekise ukuhlanganisa nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo, okuvumela ukuthi uthole imitapo yolwazi edingekayo ohlelweni ngokuchofoza okukodwa. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Okuqanjiwe okuyinhloko:

  • 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.

    Ukwengeza ukubhalisa kwangaphandle kokuthi ~/.cargo/config
    inketho entsha ethi "my-registry" inikezwa esigabeni "se[registries]", futhi inketho "yenye ikhreyithi" yengeziwe ukuze ikhulume ngokubhalisa kwangaphandle kokuncike ku-Cargo.toml kusigaba sokuthi "[okuncike]". 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 “?”. kuma-doctests, akuvumela 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 ezingokwezifiso ezichazwe kusetshenziswa amamakhro enqubo, kungenzeka ukusebenzisa amasethi angafanele wamathokheni (“#[attr($tokens)]”, “#[attr[$tokens]] kanye ne-#[attr{$tokens}]”) . Ngaphambilini, izakhi bezikwazi 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)]”;
  • Izimpawu ze-TryFrom ne-TryInto zizinzile, okuvumela ukuguqulwa kohlobo olunokuphatha iphutha. Isibonelo, izindlela ezinjengokusuka_be_bytes ezinezinhlobo eziphelele zisebenzisa amalungu afanayo njengokufaka, 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 Elingenaphutha lwengezwe ukuvumela ukusetshenziswa okusobala kwe
    I-TryFrom yakho konke ukusetshenziswa okukhona kokuthi "Kusuka";

  • Kwehliswe umsebenzi we-CommandExt::before_exec, ovumele ukubulawa kwesibambi ngaphambi kokukhishwa okwenziwe kumongo wenqubo yengane efojwe ngemva kocingo lwe-fork(). Ngaphansi kwezimo ezinjalo, ezinye izinsiza zenqubo yomzali, njengezichazi zefayela nezindawo zenkumbulo ezifakwe kumephu, zingaphindwa, okungase kuholele ekuziphatheni okungachazwanga kanye nokusebenza okungalungile kwamalabhulali.
    Esikhundleni se-fore_exec, kunconywa ukusebenzisa umsebenzi ongaphephile CommandExt::pre_exec.

  • Izinhlobo eziqinile ezisayiniwe nezingasayiniwe ze-athomu ezisuka kusayizi ukusuka kumabhithi angu-8 kuye kwangu-64 (isibonelo, i-AtomicU8), kanye nezinhlobo ezisayiniwe i-NonZeroI[8|16|32|54|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 ye-“-C linker-plugin-lto” (i-rustc ihlanganisa ikhodi ye-Rust ibe yi-bitcode ye-LLVM, evumela ukulungiselelwa kwe-LTO ukuthi kusetshenziswe).

Source: opennet.ru

Engeza amazwana