Rust 1.37 Ukukhishwa Kolimi Lokuhlela

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

  • Ku-rustc compiler enikeziwe ukwesekwa kokwenza kahle okusekelwe emiphumeleni yokuhlonza ikhodi (i-PGO, Ukuthuthukiswa Okuqondiswa Iphrofayela),
    okukuvumela ukuthi ukhiqize ikhodi elunge kakhulu esekelwe ekuhlaziyweni kwezibalo eziqoqwe phakathi nokwenziwa kohlelo. Ukuze ukhiqize iphrofayili, ifulegi elithi “-C profile-generate” liyanikezwa, kanye nokusebenzisa iphrofayili ngesikhathi sokuhlanganiswa - “-C profile-use” (ekuqaleni, uhlelo luhlanganiswa nefulegi lokuqala, luqhubeke, futhi ngemva kokudala iphrofayili, iphinde ihlanganiswe nefulegi lesibili);

  • Lapho ukhipha umyalo othi “cargo run”, okulula ukuwusebenzisela ukuhlola ngokushesha izinhlelo zokusebenza zekhonsoli, ikhono lokukhetha ngokuzenzakalelayo ifayela elisebenzisekayo elizosebenza liye lengeziwe uma kunamafayela amaningana asebenzisekayo kuphakheji. Ifayela elizenzakalelayo elizosetshenziswa linqunywa ngokuqondisa okuzenzakalelayo esigabeni [sephakheji] esinamapharamitha ephakheji, okukuvumela ukuba ugweme ukucacisa ngokusobala igama lefayela ngefulegi elithi “-bin” isikhathi ngasinye lapho usebenzisa “i-cargo run”;
  • Umyalo “womthengisi wezimpahla”, owawunikezwe ngaphambilini njenge iphakheji ehlukene. Umyalo ukuvumela ukuthi uhlele umsebenzi ngekhophi yendawo yokuncika - ngemva kokwenza “umthengisi wezimpahla”, wonke amakhodi omthombo wokuncika kwephrojekthi alandwa kusuka ku-crates.io kuya kunkomba yendawo, engase isetshenziselwe umsebenzi ngaphandle kokufinyelela amakhreyithi. io (ngemuva kokwenza umyalo, iseluleko sokushintsha ukumisa siboniswa ukusebenzisa uhla lwemibhalo lokwakha). Lesi sici sesivele sisetshenziselwa ukuhlela ukulethwa kwe-rustc compiler ngokupakishwa kwakho konke okuncikile kungobo yomlando eyodwa ngokukhululwa;
  • Manje sekungenzeka ukuthi udale izixhumanisi zezinketho ze-enum usebenzisa iziteketiso zohlobo (isibonelo, emzimbeni womsebenzi othi “fn increment_or_zero(x: ByteOption) ungacacisa “ByteOption::None => 0”), thayipha izibalo zokwakha (‹ MyType‹.. ››::option => N) noma Uzifinyelela (kumabhulokhi c & ngokwakho ungacacisa “Self::Quarter => 25”);
  • Kwengezwe ikhono lokudala ama-constants angaqanjwanga kumamakhro. Esikhundleni sokuchaza igama le-elementi kokuthi "const", manje ungasebenzisa uhlamvu "_" ukuze ukhethe ngokuguqukayo isihlonzi esingaphindi, ugweme ukungqubuzana kwamagama lapho ubiza i-macro futhi;
  • Kwengezwe amandla okusebenzisa isibaluli se-"#[repr(align(N))" nama-enum kusetshenziswa i-syntax efana nokuchaza ukwakheka kwe-AlignN‹T› nokuqondanisa bese kusetshenziswa i-AlignN‹MyEnum›;
  • Ingxenye entsha ye-API iyiswe esigabeni esizinzile, okuhlanganisa i-BufReader::buffer, BufWriter::buffer, kanye
    Iseli::kusuka_ku-mut,
    Iseli::njengesiqephu_samaseli,
    I-DoubleEndedIterator::nth_back,
    Inketho::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Ukugoqa::reverse_bits kanye
    ucezu::khophi_ngaphakathi.

Ukwengeza, kungaphawulwa ukuqala kokuhlolwa iphrojekthi I-Async-std, enikeza okuhlukile okungavumelaniyo komtapo wezincwadi ojwayelekile we-Rust (imbobo yomtapo wezincwadi we-std, lapho zonke izixhumi ezibonakalayo zinikezwa ngenguqulo engavumelanisi futhi zilungele ukusetshenziswa ne-async/ait syntax).

Source: opennet.ru

Engeza amazwana