Rust 1.36 Kutulutsa Chilankhulo cha Mapulogalamu

Lofalitsidwa kutulutsidwa kwa chilankhulo cha pulogalamu yadongosolo Dzimbiri 1.36, yokhazikitsidwa ndi polojekiti ya Mozilla. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira, chimapereka kasamalidwe ka kukumbukira, ndipo chimapereka njira zopezera ntchito yofanana kwambiri popanda kugwiritsa ntchito chotolera zinyalala kapena nthawi yothamanga.

Kuwongolera kukumbukira kwa Rust kumamasula wopanga kuti asasokonezedwe ndi pointer ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira kwapang'onopang'ono, monga kulowa kwa kukumbukira kwaulere, kusokoneza null pointer, buffer overruns, ndi zina zotero. Woyang'anira phukusi akupangidwa kuti azigawira malaibulale, kuwonetsetsa kusonkhanitsa ndi kuyang'anira zodalira ndi polojekiti. katundu, kukulolani kuti mupeze malaibulale ofunikira pa pulogalamuyo ndikudina kamodzi. Malo osungiramo mabuku amathandizidwa kuti azisunga malaibulale makate.io.

waukulu zatsopano:

  • Khalidwe lokhazikika tsogolo, yomwe ikuyimira mtengo womwe kuwunika kwake sikungamalizidwebe pogwiritsa ntchito async / .await midadada. Miyezo ya Asynchronous yomwe imatanthauzidwa pogwiritsa ntchito Future imapangitsa kuti zitheke kupitiliza kugwira ntchito zothandiza mu ulusi, kwinaku mukudikirira kumaliza kuwerengera kwa mtengo wina;
  • Library yokhazikika alloc, yomwe imapereka zolozera zanzeru ndi zosonkhanitsira zowongolera zinthu zomwe zimaperekedwa kukumbukira. Memory allocation mu std tsopano imagwiritsa ntchito mtunduwo Chinthu, zomwe zimatumizidwanso kuchokera ku alloc. Kugwiritsiridwa ntchito kosiyana kwa alloc kumamveka bwino pamapulogalamu osamangidwa ku std ("#![no_std]"), komanso m'malaibulale opangidwa kuti azigwiritsidwa ntchito m'mapulogalamu ofanana opanda std;
  • Kulambalala macheke kuti muyambitse zolondola analimbikitsa mtundu wapakatikati Mwina Unit, yomwe ingagwiritsidwe ntchito m'malo mwa mem::ntchito yosadziwika ngati njira yotetezeka. The mem :: ntchito yosadziwika bwino ndi yabwino kuti ipangike mwamsanga, koma imasocheretsa wojambulayo chifukwa akuwoneka kuti wayambitsa, koma kwenikweni mtengowo umakhalabe wosadziwika. MwinaUninit imakupatsani mwayi wowonetsa momveka bwino kwa wolembayo kuti mtengo wake sunayambike, kuti muganizire zomwe zingachitike ndi zomwe sizikudziwika bwino, komanso kukonza macheke mumapulogalamu kudzera "mwina_t:" ndikuyambitsa pang'onopang'ono, kutsimikizira kukwaniritsidwa kwake. pogwiritsa ntchito foni ya β€œ.assume_init()”. Ndikubwera kwa MaybeUninit, mem ::ntchito yosadziwika yachotsedwa ndipo siyikulimbikitsidwa kuti igwiritsidwe ntchito;
  • Njira ya NLL (Non-Lexical Lifetimes), yomwe idakulitsa makina ojambulira moyo wamitundu yobwereka, idakhazikika pachilankhulo cha Rust 2015 (poyamba, NLL idathandizidwa ndi Rust 2018). M'malo mochita moyo wonse pamlingo wa lexical, NLL imachita izi pamlingo wa zolozera mu graph yotulutsa. Njirayi imakulolani kuti muwonjezere khalidwe la kuyang'ana kubwereka kwa zosinthika (kubwereka chosungira) ndikulola kuchitidwa kwa mitundu ina ya code yolondola, kugwiritsa ntchito komwe kunayambitsa zolakwika. Khalidwe latsopanoli limapangitsanso kuthetsa mosavuta;
  • Kukhazikitsa kwatsopano kwa ma associative arrays akuphatikizidwa HashMap, potengera momwe kamangidwe kameneka kanagwiritsidwira ntchito Swiss Table (zodzaza zokha hashbrown::HashMap, pokhapokha atanenedwa momveka bwino, monga std::HashMap, yozikidwa pa SipHash 1-3). Mawonekedwe a mapulogalamu amakhalabe ofanana, ndipo kusiyana komwe kumawonekera kwa wopanga mapulogalamu kuwira mpaka kuwonjezeka kwa ntchito ndikuchepetsa kukumbukira kukumbukira;
  • Mu phukusi woyang'anira katundu anawonjezera njira ya "--offline", yomwe imathandizira kugwira ntchito popanda kugwiritsa ntchito netiweki, momwe phukusi lokhalo losungidwa pamakina am'deralo limagwiritsidwa ntchito pakuyika zodalira. Ngati kudalira sikuli mu cache yakomweko, cholakwika chidzaponyedwa. Kuti mulowetsenso zodalira mu cache yapafupi musanalowe pa intaneti, mutha kugwiritsa ntchito lamulo la "cargo fetch";
  • Yakhazikitsa luso lotcha macro "dbg!" kusonyeza mfundo zingapo;
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mokhazikika, limagwiritsidwa ntchito panjira.
    Kamangidwe::kuchokera_kukula_align_osasankhidwa,
    mem::zofunikira_kusiya,
    NonNnull ::kulendewera ndi
    NonNull ::cast;

  • Gawo latsopano la API lasamutsidwa ku gulu lokhazikika, kuphatikizapo njira zomwe zakhazikika
    ntchito::Waker, ntchito::Poll,
    VecDeque::tembenuza_kumanzere, VecDeque::tembenuza_kumanja,
    Werengani::read_vectored, Lembani::write_vectored,
    Iterator::kopera,
    BorrowMut (kwa zingwe) ndi str::as_mut_ptr.

Source: opennet.ru

Kuwonjezera ndemanga