Puo ea Rust programming 1.39 tokollo

e hatisitsoeng tokollo ea puo ea lenaneo la sistimi Mafome 1.39, e thehiloeng ke morero oa Mozilla. Puo e shebana le polokeho ea mohopolo, e fana ka taolo ea memori ea othomathike, mme e fana ka mokhoa oa ho fihlela ts'ebetso e ts'oanang e phahameng ntle le ho sebelisa moqosi oa lithōle kapa nako ea ho sebetsa.

Taolo ea memori ea othomathike ea Rust e lokolla moqapi ho tsoa manolong a pointer le ho sireletsa khahlano le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka phihlello ea memori e sa lefelloeng, litšupiso tsa null pointer, buffer overruns, joalo-joalo. Motsamaisi oa liphutheloana o ntse a ntlafatsoa ho aba lilaebrari, ho netefatsa ho bokelloa le ho laola litšepe ka morero. thepa, ho u lumella ho fumana lilaebrari tse hlokahalang bakeng sa lenaneo ka ho tobetsa hanngoe feela. Sebaka sa polokelo se tšehetsoa ho amohela lilaebrari crates.io.

ka sehloohong boiqapelo:

  • E tsitsitse syntax e ncha ea asynchronous programming e thehiloeng ho "async" mosebetsi, async move { ... } thibela, le ".await" opareitara, e leng se etsang hore ho be bonolo ho ngola li- handlers tse sa thibeleng phallo ea taelo e kholo. Ha ho bapisoa le API e fanoeng pele bakeng sa I / O ea asynchronous, async / .await constructs e bonolo ho utloisisa, ho baloa haholo, 'me e u lumella ho kenya ts'ebetsong litšebelisano tse rarahaneng tsa asynchronous ho sebelisa mekhoa e tloaelehileng ea ho laola phallo e thehiloeng ho loops, lipolelo tse nang le maemo, le mekhelo.

    Syntax ea Async-await e u lumella ho etsa mesebetsi e ka emisang ts'ebetso ea bona, ho khutlisetsa taolo khoeleng e kholo, ebe o qala ts'ebetso ho tloha moo e tlohetseng teng. Ka mohlala, khefu e joalo e hlokahala ha ho sebetsanoa le I / O, moo mosebetsi o mong o ka etsoang ha u ntse u emetse hore karolo e latelang ea data e fihle. Mesebetsi le li-blocks tse hlalositsoeng ka "async fn" le "async move" li khutlisa tšobotsi nakong e tlang, e hlalosang kemelo e chechisitsoeng ea asynchronous computation. O ka qala ka kotloloho lipalo tse chechisetsoang morao 'me oa fumana sephetho ka ho sebelisa ".await" opareitara. Ha ho ketso e etsoang kapa e reriloeng esale pele ho fihlela .await e bitsoa, ​​e lumellang meaho e rarahaneng ea sehlaha ho etsoa ntle le ho feta holimo.

    async fn first_function() -> u32 {.. }
    ...
    tlohela bokamoso = first_function();
    ...
    tlohela sephetho: u32 = bokamoso.await;

  • E tsitsitse "#![feature(bind_by_move_pattern_guards)]", e lumellang tšebeliso ea mefuta e nang le mofuta o tlamang "ka-tsamaiso" ho litempele le ho sebelisa litšupiso tsa mefuta ena karolong ea "haeba" ea polelo "a bapisoa". Mohlala, meaho e latelang e se e lumelletsoe:

    fn main() {
    letsetsa: Lebokose <[u8; 4]> = Lebokose::ncha([1, 2, 3, 4]);

    lihlopha tse tšoanang {
    bo-pula-maliboho
    haeba nums.iter().sum::() == 10

    => {
    lerotholi(lipalo);
    }
    _ => ha e fumanehe!(),
    }
    }

  • Pontsho e dumeletswe litšobotsi ha o hlalosa liparamente tsa ts'ebetso, ho koaloa, le lintlha tsa ts'ebetso. Litšobotsi tsa ho bokella maemo (cfg, cfg_attr) tse laolang tlhahlobo ka lint (lumella, hlokomelisa, hanela le ho hanela) le litšoaneleho tse thusang tsa mohala o moholo lia tšehetsoa.

    len le (
    #[cfg(windows)] selae: &[u16], // sebelisa paramente ho Windows
    #[cfg(eseng(lifensetere))] selae: &[u8], // sebelisa ho OS e ngoe
    ) -> sebelisa {
    slice.len()
    }

  • Litemoso mabapi le mathata a bonoang ha ho hlahlojoa mokhoa oa ho alima mefuta e fapaneng (chelete ea ho alima) ho sebelisoa mokhoa oa NLL (Non-Lexical Lifetimes), fetoletsoe sehlopheng sa liphoso tse bolaeang. A re hopoleng hore mokhoa oa ho netefatsa o thehiloeng holim'a mochine o mocha oa ho ela hloko bophelo bohle ba mefuta e alimiloeng e entse hore ho khonehe ho khetholla mathata a mang a sa kang a hlokomeloa ke khoutu ea khale ea ho netefatsa. Kaha phoso e hlahisoang bakeng sa licheke tse joalo e ka ama ho lumellana le khoutu e neng e sebetsa pele, litemoso li ile tsa ntšoa qalong ho fapana le liphoso. Litemoso li se li nkeloe sebaka ke liphoso ha li sebetsa ka mokhoa oa Rust 2018. Khatisong e latelang, tlhahiso ea phoso e tla boela e kenngoe tšebetsong ka mokhoa oa Rust 2015, e leng qetellong e tla tlosa mochine oa khale oa ho alima;
  • Sebopeho sa "const", se khethollang monyetla oa ho sebelisa moelelong ofe kapa ofe ho e-na le li-constants, se sebelisetsoa mesebetsi Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::joaloka_byte,
    abs, wrapping_abs le overflowing_abs;

  • Karolo e ncha ea API e fetiselitsoe sehlopheng se tsitsitseng, ho kenyelletsa le mekhoa e tsitsitseng
    Pin::ka har'a_hare, Instant::checked_nako_ho tloha le Hang-hang::saturating_duration_ho tloha;

  • Mookameli oa sephutheloana sa thepa hona joale o na le bokhoni ba ho sebelisa ".toml" katoloso bakeng sa lifaele tsa tlhophiso. E ekelitse ts'ehetso ea mantlha ea ho aha laeborari e tloaelehileng ka kotloloho ho tsoa Cargo. E kentse folakha ea "--workspace", e nkelang sebaka sa "--all" e tsosang khang. Sebaka se secha se kentsoe metadata "phatlalatsa", e u lumellang hore u phatlalatse litšepiso ka ho hlakisa tag ea git le nomoro ea mofuta. Khetho e ekelitsoeng ea liteko "-Ztimings" ho hlahisa tlaleho ea HTML ea linako tsa ts'ebetso ea mekhahlelo e fapaneng ea ho bokella.
  • Ho rustc compiler, melaetsa ea tlhahlobo e kenyelletsa ho fokotsa mehatla ea khoutu e sa keneleng setsing. E fane ka ts'ehetso ea boemo ba boraro bakeng sa li-platform tse reriloeng
    i686-e sa tsejoeng-uefi le sparc64-tse sa tsejoeng-openbsd. Boemo ba boraro bo kenyelletsa tšehetso ea mantlha, empa ntle le tlhahlobo e ikemetseng le phatlalatso ea meaho ea semmuso.

Source: opennet.ru

Eketsa ka tlhaloso