Rust 1.57 Ukukhishwa Kolimi Lokuhlela

Ukukhululwa kolimi lwezinhlelo zesistimu i-Rust 1.57, eyasungulwa iphrojekthi ye-Mozilla, kodwa manje ethuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, kushicilelwe. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokufinyelela ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi wezibi noma isikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kusindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi ivikela ezinkingeni eziphakama ngenxa yokukhohlisa inkumbulo yezinga eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukususa ireferensi izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Okuqanjiwe okuyinhloko:

  • Ukusetshenziswa kwe-"panic!" macro kuzinzile. kuzimo ezidalwe ngesikhathi sokuhlanganiswa, njengezimemezelo ze-"const fn". Ukwengeza, ngaphezu kokusebenzisa "ukwethuka!" const izimemezelo zivumela ukusetshenziswa kwe-"assert!" macro. kanye namanye ama-API welabhulali ajwayelekile. Ukuzinza akukayifaki yonke ingqalasizinda yokufometha, ngakho-ke esimweni sayo samanje i-"panic!" macro ingasetshenziswa kuphela ngeyunithi yezinhlamvu ezimile (ukwethuka!(“...")) noma ngevelu eyodwa ehlanganisiwe ethi "&str" lapho kufakwa esikhundleni (ukwethuka!("{}", a)), okufanele kukhawulelwe ekumiseleni okuthi "{ }" ngaphandle kokufometha izicacisi nezinye izinhlobo. Ngokuzayo, ukusebenza kwama-macros kuzimo ezingaguquki kuzonwetshwa, kodwa amandla azinzile asevele anele ukwenza ukuhlola kokugomela esigabeni sokuhlanganiswa: const _: () = assert!(std::mem::size_of:: () == 64); const _: () = ukugomela!(std::mem::size_of:: () == 8);
  • Umphathi wephakheji le-Cargo uvumela ukusetshenziswa kwamaphrofayela anamagama angenangqondo, angagcini nje ngokuthi "dev", "release", "test" kanye "nebhentshi". Isibonelo, ukuze unike amandla ukuthuthukiswa esigabeni sokuxhumanisa (i-LTO) kuphela lapho ukuhlanganiswa komkhiqizo wokugcina kukhiqizwa, ungakha iphrofayela "yokukhiqiza" ku-Cargo.toml futhi wengeze ifulegi elithi "lto = true" kuyo. Kodwa-ke, lapho uchaza amaphrofayili akho, kufanele ucacise iphrofayili ekhona ukuze uthole izilungiselelo ezizenzakalelayo kuyo. Isibonelo esingezansi sidala iphrofayela "yokukhiqiza" ehambisana nephrofayela "ekhishiwe" ngokufaka ifulegi elithi "lto = true". Iphrofayela ngokwayo icushwe ngokubiza impahla ngenketho ethi “--profile production”, futhi ama-artifacts okuhlanganisa azofakwa kuhla lwemibhalo “okuhlosiwe/ukukhiqiza”. [profile.production] inherits = "khulula" lto = iqiniso
  • Ukusetshenziswa kwe-try_reserve kwezinhlobo ze-Vec, String, HashMap, HashSet kanye ne-VecDeque kuzinzile, okukuvumela ukuthi ubeke isikhala kusengaphambili inani elithile lezakhi zohlobo olunikeziwe ukuze unciphise imvamisa yemisebenzi yokwabiwa kwenkumbulo futhi ugweme. ukuphahlazeka ngesikhathi sokusebenza ngenxa yokuntuleka kwenkumbulo.
  • Kuvunyelwe ukucacisa amamakhro anamabrace asontekile kuzinkulumo ezinjengokuthi "m!{ .. }.method()" kanye no-"m!{ .. }?".
  • Ukwenziwa kwemisebenzi yefayela::funda_ukuze_uqede futhi ufunde_kuya_uchungechunge kuthuthukisiwe.
  • Ukusekelwa kokucaciswa kwe-Unicode kubuyekezwe kunguqulo engu-14.0.
  • Kunwetshwe inombolo yemisebenzi ephawulwe ngokuthi "#[must_use]" ukuze kukhishwe isexwayiso uma inani lokubuyisela lishaywa indiva, okusiza ukukhomba amaphutha abangelwa ukucabangela ukuthi umsebenzi uzoshintsha amanani kunokubuyisela inani elisha.
  • Kwengezwe isiphetho sokuhlola sokwenziwa kwekhodi kusetshenziswa i-libgccjit.
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
    • [T; N]::as_mut_piece
    • [T; N]::njengocezu
    • amaqoqo::TryReserveError
    • I-HashMap::try_reserve
    • I-HashSet::try_reserve
    • Uchungechunge::try_reserve
    • String::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • I-Iterator::map_while
    • iter::MapWhile
    • i-proc_macro::iyatholakala
    • Umyalo::thola_uhlelo
    • Umyalo::get_args
    • Umyalo::get_envs
    • Umyalo::get_current_dir
    • I-CommandArgs
    • CommandEnvs
  • Isibaluli esithi “const”, esinquma ukuthi singasetshenziswa kunoma imuphi umongo esikhundleni sama-constants, sisetshenziswa kuhint yomsebenzi::unreachable_unquicked.
  • Izinga lesithathu lokusekelwa selisetshenziswe ku-armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi-kmv7a izinkundla eziqinile_asp3-eabihf. Ileveli yesithathu ibandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela izakhiwo ezisemthethweni, noma ukuhlola ukuthi ikhodi ingakhiwa yini.

Source: opennet.ru

Engeza amazwana