Rust 1.39 Ukukhishwa Kolimi Lokuhlela

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

  • Kuqinisiwe i-syntax yohlelo entsha ehambisanayo esekelwe kumsebenzi we-"async", umnyakazo we-async { ... } block, kanye ne-opharetha ethi ".await", okwenza kube lula ukubhala izibambi ezingavimbi ukugeleza komyalo oyinhloko. Uma kuqhathaniswa ne-API enikezwe ngaphambilini ye-Asynchronous I/O, i-async/.await constructs iqondakala kalula, ifundeka kakhulu, futhi ikuvumela ukuthi usebenzise ukusebenzisana okuyinkimbinkimbi kwe-asynchronous usebenzisa amasu ajwayelekile okulawula ukugeleza okusekelwe kumaluphu, izitatimende ezinemibandela, nokuhlukile.

    I-syntax ye-Async-await ikuvumela ukuthi udale imisebenzi engakwazi ukumisa kancane ukusebenza kwayo, ubuyisele ukulawula kuchungechunge oluyinhloko, bese uqala kabusha ukwenza lapho igcine khona. Isibonelo, ukuphumula okunjalo kuyadingeka lapho kucutshungulwa i-I/O, lapho omunye umsebenzi ungenziwa ngesikhathi kulindwe ucezu olulandelayo lwedatha ukuthi lufike. Imisebenzi namabhulokhi achazwe ngokuthi "async fn" kanye "nokuhamba kwe-async" abuyisela isici Ikusasa, echaza ukumelwa kwekhompuyutha okuhlehlisiwe kwe-asynchronous. Ungakwazi ukuqalisa ngokuqondile ukubala okuhlehlisiwe futhi uthole umphumela usebenzisa β€œ.await” opharetha. Asikho isenzo esenziwayo noma esihlelwa kusengaphambili kuze kube yilapho kubizwa i-.await, okuvumela izakhiwo eziyinkimbinkimbi ezifakwe esidlekeni ukuthi zidalwe ngaphandle kwe-overhead eyengeziwe.

    async fn first_function() -> u32 { .. }
    ...
    vumela ikusasa = first_function();
    ...
    vumela umphumela: u32 = future.await;

  • Kuqinisiwe "#![isici(bind_by_move_pattern_guards)]", okuvumela ukusetshenziswa kwezinto eziguquguqukayo ezinohlobo olubophezelayo "ngomnyakazo" ezifanekisweni nokusebenzisa izinkomba zalezi ziguquko esigabeni "uma" senkulumo "Fanisa". Isibonelo, lezi zakhiwo ezilandelayo sezivunyelwe manje:

    i-fnmain() {
    let array: Ibhokisi<[u8; 4]> = Ibhokisi::okusha([1, 2, 3, 4]);

    uhlu lokufanisa {
    izinombolo
    uma nums.iter().sum::() == 10

    => {
    ukwehla (izinombolo);
    }
    _ => akufinyeleleki!(),
    }
    }

  • Inkomba ivunyelwe izimfanelo lapho uchaza amapharamitha omsebenzi, ukuvalwa, nezikhombisi zokusebenza. Izibaluli zokuhlanganiswa ezinemibandela (cfg, cfg_attr) ezilawula ukuxilonga nge-lint (vumela, xwayisa, phika futhi nqabela) kanye nezimfanelo zokushaya ezinkulu ezisizayo ziyasekelwa.

    len (
    #[cfg(windows)] sika: &[u16], // sebenzisa ipharamitha ku-Windows
    #[cfg(not(windows))] sika: &[u8], // sebenzisa kwenye i-OS
    ) -> sebenzisa {
    slice.len()
    }

  • Izexwayiso ngezinkinga ezikhonjiwe lapho kuhlolwa ukubolekwa kwezinto eziguquguqukayo (isheke sokuboleka) kusetshenziswa indlela ye-NLL (Non-Lexical Lifetimes), kuhunyushwe esigabeni samaphutha abulalayo. Masikhumbule ukuthi isistimu yokuqinisekisa esekelwe endleleni entsha yokucabangela ukuphila kwezinto eziguquguqukayo ezibolekiwe yenze kwaba nokwenzeka ukuhlonza izinkinga ezithile ezingazange ziqashelwe ikhodi endala yokuqinisekisa. Njengoba ukukhishwa kwephutha kokuhlola okunjalo kungase kuthinte ukuhambisana nekhodi yokusebenza yangaphambilini, izixwayiso zikhishwe ekuqaleni esikhundleni samaphutha. Izixwayiso manje sezithathelwe indawo ngamaphutha uma isebenza ngemodi ye-Rust 2018. Ekukhishweni okulandelayo, ukukhishwa kwephutha kuzophinde kusetshenziswe kumodi ye-Rust 2015, ezogcina isuse isihloli esidala sokuboleka;
  • Isibaluli esithi β€œconst”, esinquma ukuthi kungenzeka yini ukusetshenziswa kunoma imuphi umongo esikhundleni sama-constants, sisetshenziselwa imisebenzi Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::njengamabhayithi,
    i-abs, i-wraping_abs kanye ne-abs_echichimayo;

  • Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nezindlela ezizinzile
    Iphinikhodi::ngaphakathi_kwangaphakathi, Okusheshayo::kuhloliwe_ubude_isikhathi_kusukela futhi Ngokushesha::ukusuthisa_ubude_ubude_kusukela;

  • Umphathi wephakheji yempahla manje unamandla okusebenzisa isandiso esithi β€œ.toml” kumafayela okulungiselela. Kwengezwe usekelo lokuqala lokwakha umtapo wolwazi ojwayelekile ngqo kusuka ku-Cargo. Kwengezwe ifulegi elithi "--workspace", esikhundleni sefulegi elithi "--all" eliyimpikiswano. Inkambu entsha yengezwe kumethadatha "shicilela", okukuvumela ukuthi ushicilele okuncikile ngokucacisa ithegi ye-git nenombolo yenguqulo. Inketho yokuhlola engeziwe "-Ztimings" ukuze kukhiqizwe umbiko we-HTML wezikhathi zokwenziwa zezigaba ezihlukahlukene zokuhlanganisa.
  • Kumhlanganisi we-rustc, imilayezo yokuxilonga ihlanganisa ukunqamula imisila yekhodi engangeni kutheminali. Kuhlinzekwe ngezinga lesithathu losekelo lwezingxenyekazi eziqondiwe
    I-i686-engaziwa-uefi kanye ne-sparc64-engaziwa-i-openbsd. Izinga lesithathu libandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo nokushicilelwa kwezakhiwo ezisemthethweni.

Source: opennet.ru

Engeza amazwana