Rust 1.38 Ukukhishwa Kolimi Lokuhlela

eshicilelwe ukukhululwa kolimi lokuhlela uhlelo Ukugqwala 1.38, eyasungulwa 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:

  • Kwengezwe imodi yokuhlanganisa efakwe ngamapayipi (efakwe ngamapayipi), lapho ukwakhiwa kwephakheji yekhreyithi elincikile kuqala ngokushesha nje lapho imethadatha yokuncika isitholakala, ngaphandle kokulinda ukuhlanganiswa kwayo kuqedwe. Lapho uhlanganisa iphakeji, okuncikile akudingeki ukuthi kuhlanganiswe ngokugcwele, kuchaza nje imethadatha, ehlanganisa uhlu lwezinhlobo, okuncikile, nezinto ezithunyelwe. Imethadatha yenziwa yatholakala ekuqaleni kwenqubo yokuhlanganiswa, ngakho amaphakheji axhunyiwe manje angahlanganiswa ngaphambi kwesikhathi kakhulu. Uma wakha amaphakheji angashadile, imodi ehlongozwayo ayithinti ukusebenza, kodwa uma ukwakhiwa kuhlanganisa amaphakheji ngokuncika kwamagatsha, isikhathi sokwakha sonke singancishiswa ngo-10-20%;
  • Iqinisekisa ukutholwa kokusetshenziswa okungalungile kwemisebenzi std::mem::akuqalwanga и std::mem::ziroed. Isibonelo, okuthi std::mem::okungaqalwanga kulungele ukudala ngokushesha amalungu afanayo, kodwa idukisa isihlanganisi ngoba ibonakala iqalisiwe, kodwa empeleni inani lihlala lingaqaliswanga. I-mem::umsebenzi ongaqaliwe usuphawulwe njengehoxisiwe futhi kuyanconywa ukuthi usebenzise uhlobo olumaphakathi esikhundleni salokho. Mhlawumbe Iyunithi. Ngokuqondene ne-mem::ziroed, lo msebenzi ungabangela izinkinga ngezinhlobo ezingakwazi ukwamukela amanani anguziro.

    Ukusiza ukuhlonza ukuziphatha okungachazwanga, ukukhishwa okusha kungeza ukuhlola kwe-lint kumhlanganisi okuthola izinkinga ezithile nge-mem::engaqaliwe noma i-mem::iqanda. Isibonelo, manje uthola iphutha uma uzama ukusebenzisa i-mem::engaqalwanga noma i-mem::ziroed enezinhlobo ze-&T kanye ne-Box‹T›, ezimele izinto zesikhombi ezingakwazi ukwamukela amanani angenalutho;

  • Isibaluli esithi “#[yehlisiwe]” sinwetshiwe ukuze kuvunyelwe amaphakheji ekhreyithi ukuthi amakwe njengengasasebenzi futhi ahlelelwe ukususwa esikhathini esizayo. Kusukela ku-Rust 1.38, lesi sici singasetshenziselwa ama-macros;
  • Kwengezwe amandla okusebenzisa isibaluli se-“#[global_allocator]” kumamojula amancane;
  • Isici esingeziwe std::noma yini::type_name, okukuvumela ukuthi uthole igama lohlobo, okungaba usizo ngezinjongo zokususa iphutha. Isibonelo, ngesikhathi sokwenziwa kohlelo ungathola ukuthi hlobo luni lomsebenzi owawubizwa ngalo:

    fn gen_value‹T: Okuzenzakalelayo>() -› T {
    println!("Iqala isenzakalo se-{}", std::any::type_name::‹T›());
    Okuzenzakalelayo::okuzenzakalelayo()
    }

    i-fnmain() {
    vumela _: i32 = gen_value(); # "i32" izophrintwa
    vumela _: Uchungechunge = gen_value(); # izophrinta "i-alloc::string::String"
    }

  • Imisebenzi enwetshiwe yelabhulali ejwayelekile:
    • slice::{concat, connect, join} manje ingathatha inani &[T] ngaphezu kwe-&T;
    • "*const T" kanye "*mut T" manje sebenzisa umaka::Susa ukuphina;
    • "I-Arc‹[T]›" kanye ne-"Rc‹[T]›" manje isebenzisa i-FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} manje sebenzisa i-DoubleEndedIterator.
    • i-ascii ::I-EscapeDefault isebenzisa i-Clone ne-Display.
  • Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nezindlela ezizinzile
    • ‹*const T›::cast, ‹*mut T›::cast,
    • Ubude besikhathi::as_secs_f{32|64},
    • Ubude besikhathi::div_duration_f{32|64},
    • Ubude besikhathi::div_f{32|64},
    • Ubude besikhathi::from_secs_f{32|64},
    • Ubude besikhathi::mul_f{32|64},
    • imisebenzi yokuhlukanisa nesele
      i-div_euclid ne-rem_euclid yawo wonke ama-primitives aphelele;

  • Ukwesekwa okwengeziwe kokucacisa inketho ethi “--features” izikhathi eziningi ukuze unike amandla izici ezihlukile kusiphathi sephakheji yempahla;
  • Umhlanganisi unikeza okwesithathu izinga ukusekelwa kwamapulatifomu okuqondiwe aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armvux7-unknown- engaziwa- -gnueabi, i-armv7-engaziwa-linux-musleabi, i-hexagon-engaziwa-linux-musl kanye ne-riscv32i-engaziwa-none-elf. Izinga lesithathu libandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo nokushicilelwa kwezakhiwo ezisemthethweni.

Source: opennet.ru

Engeza amazwana