Umhlwa 1.34 Ukukhutshwa koLwimi lweNkqubo

Ulwimi lwenkqubo yenkqubo iRust 1.34, ephuhliswe yiprojekthi yeMozilla, ikhutshiwe. Ulwimi lujolise ekukhuselweni kwememori, lubonelela ngolawulo lwememori oluzenzekelayo, kwaye lubonelela ngeendlela zokufezekisa ukuhambelana okuphezulu komsebenzi ngaphandle kokusebenzisa umqokeleli wenkunkuma okanye ixesha lokuqhuba.

Ulawulo lwenkumbulo oluzenzekelayo lwe-Rust lukhulula umphuhlisi ekusetyenzisweni kwesalathisi kwaye ikhusela kwiingxaki ezivela kulawulo lwenkumbulo olukwinqanaba elisezantsi, elifana nofikelelo lwememori yasemva kwe-free, izalathisi ezingenanto, ukugqithiswa kwe-buffer, nokunye okunjalo. Ukusabalalisa amathala eencwadi, qinisekisa ukudibanisa kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wepakethe yeCargo, evumela ukuba ufumane iilayibrari ezifunekayo kwiprogram ngokuchofoza okukodwa. Indawo yokugcina i-crates.io iyaxhaswa kukusingatha amathala eencwadi.

Iinguqulelo eziphambili:

  • Umphathi wePakethe yeCargo wongeze izixhobo zokusebenza nezinye iirejista zeepakethe ezinokubakho kunye ne-crates.io yobhaliso loluntu. Umzekelo, abaphuhlisi bezicelo zobunini ngoku banokusebenzisa ubhaliso lwabucala, olunokusetyenziswa xa kudweliswa ukuxhomekeka kwiCargo.toml, kwaye basebenzise imodeli yoguqulelo efana ne-crates.io kwiimveliso zabo, kunye nokuxhomekeka kokuxhomekeka kuwo omabini amakhreyithi. io nakwirejista yakho.

    Ukongeza ubhaliso lwangaphandle kwi ~/.cargo/config
    ukhetho olutsha "ubhaliso lwam" lunikiwe kwicandelo "[lobhaliso]", kwaye "enye-crate" ukhetho longezwe ukukhankanya ubhaliso lwangaphandle kwizinto ezixhomekeke kwiCargo.toml kwi[dependencies]" icandelo. Ukuqhagamshela kubhaliso olongezelelweyo, beka ngokulula uphawu lwesiqinisekiso kwi ~/.cargo/iinkcukacha zefayile kwaye usebenzise umyalelo.
    "impahla yokungena --registry=my-registry" kunye nokupapasha ipakethe -
    "ushicilelo lwempahla -registry=my-registry";

  • Kongezwe inkxaso epheleleyo yokusebenzisa "?" umsebenzisi. kwii-doctests, ezikuvumela ukuba usebenzise ikhowudi yomzekelo kuxwebhu njengovavanyo. Umqhubi wangaphambili
    "?" ingasetyenziselwa ukusingatha iimpazamo ngexesha lokwenziwa kovavanyo kuphela kubukho be "fn main()" umsebenzi okanye kwi "#[test]" imisebenzi;

  • Kwiimpawu zesiko ezichazwe kusetyenziswa iinkqubo zemacros, kuyenzeka ukuba kusetyenziswe iiseti ezinganyanzelekanga zeempawu (“#[attr($tokens)]”, “#[attr[$tokens]] kunye #[attr{$tokens}]”) . Ngaphambili, iziqalelo bezinokuchazwa kuphela kumthi/kwimo ephinda-phindayo kusetyenziswa umtya woqobo, umzekelo “#[foo(bar, baz(quux, foo = “bar”))]”, kodwa ngoku kuyenzeka ukusebenzisa ubalo (' #[uluhlu(0. .10)]') kunye nolwakhiwo olunje “#[bopheleleke(T: MyTrait)]”;
  • Iimpawu ze-TryFrom kunye ne-TryInto zizinzile, zivumela uhlobo loguqulelo kunye nokuphathwa kwempazamo. Umzekelo, iindlela ezifana ne_be_bytes ezineentlobo ezipheleleyo zisebenzisa uluhlu njengegalelo, kodwa idatha ihlala iza ngohlobo lweSilayidi, kwaye ukuguqula phakathi koluhlu kunye nezilayi kuyingxaki ukwenza ngesandla. Ngoncedo lweempawu ezintsha, umsebenzi ochaziweyo unokwenziwa kwi-fly ngokufowunela .try_into(), umzekelo, “let num = u32::from_be_bytes(slice.try_into()?)”. Kuguqulo oluhlala luphumelela (umzekelo, ukusuka kuhlobo u8 ukuya ku-u32), uhlobo lwemposiso eNgenampazamo yongezwe ukuvumela usetyenziso olungafihliyo lwe
    I-TryFrom kulo lonke usetyenziso olukhoyo lwe-"From";

  • Iyekisiwe iCommandExt::before_exec umsebenzi, ovumele ufezekiso lomphathi phambi kokuba uphumezo olwenziwe kumxholo wenkqubo yomntwana efowulwe emva kwefolokhwe() call. Phantsi kweemeko ezinjalo, ezinye izibonelelo zenkqubo yomzali, njengezichazi zefayile kunye neendawo zememori ezimephu, zinokuphinda-phindwa, ezinokuthi zikhokelele ekuziphatheni okungachazwanga kunye nokusebenza ngendlela engalunganga kwamathala eencwadi.
    Endaweni yokuba ngaphambi_exec, kuyacetyiswa ukuba usebenzise umsebenzi ongakhuselekanga CommandExt::pre_exec.

  • Iintlobo ezizinzisiweyo ezisayiniweyo nezingatyikitywanga zeathom epheleleyo ukusuka kubukhulu ukusuka kwibhithi ezisi-8 ukuya kuma-64 (umzekelo, i-AtomicU8), kunye neentlobo ezisayiniweyo ze-NonZeroI[8|16|32|54|128].
  • Inxalenye entsha ye-API iye yasiwa kudidi oluzinzileyo, kuquka Nayiphi na::type_id, Imposiso::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[engeza|sub ] kunye neendlela ze-SystemTime zinzinzisiwe ::checked_[yongeza|sub]. I-iter::from_fn kunye ne-iter::imisebenzi yokulandela izinzile;
  • Kuzo zonke iindidi ezipheleleyo, i-checked_pow, saturating_pow, wrapping_pow kunye ne-overflowing_pow iindlela ziyaphunyezwa;
  • Yongeze amandla okwenza ulungelelwaniso kwinqanaba lokudibanisa ngokucacisa "-C linker-plugin-lto" ukhetho lokwakha (i-rustc iqokelela ikhowudi yeRust kwi-bitcode ye-LLVM, evumela ukwenziwa kwe-LTO ukuba kusetyenziswe).

umthombo: opennet.ru

Yongeza izimvo