Kutolewa kwa lugha ya programu ya kutu 1.39

iliyochapishwa kutolewa kwa lugha ya programu ya mfumo Kutu 1.39, iliyoanzishwa na mradi wa Mozilla. Lugha inazingatia usalama wa kumbukumbu, hutoa usimamizi wa kumbukumbu otomatiki, na hutoa njia ya kufikia usawa wa juu wa kazi bila kutumia mtoza takataka au wakati wa kukimbia.

Udhibiti wa kumbukumbu otomatiki wa Rust huokoa msanidi programu dhidi ya vielelezo vya kudhibiti na hulinda dhidi ya matatizo yanayotokana na uchezaji wa kumbukumbu ya kiwango cha chini, kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa, kuondoa marejeleo ya viashiria, utiririshaji wa bafa, n.k. Ili kusambaza maktaba, hakikisha kukusanya na kudhibiti utegemezi, mradi huunda msimamizi wa kifurushi Cargo, ambayo hukuruhusu kupata maktaba unayohitaji kwa programu hiyo kwa mbofyo mmoja. Hifadhi inaauniwa kwa kupangisha maktaba crates.io.

kuu ubunifu:

  • Imetulia sintaksia mpya ya programu isiyolingana kulingana na chaguo la kukokotoa la "async", uzuiaji wa kusogeza usawazishaji { ... } kizuizi, na opereta ".await", ambayo hurahisisha kuandika vishikilizi ambavyo havizuii mtiririko wa amri kuu. Ikilinganishwa na API iliyotolewa hapo awali ya I/O isiyolingana, miundo ya async/.await ni rahisi kueleweka, inasomeka sana, na hukuruhusu kutekeleza mwingiliano changamano wa asynchronous kwa kutumia mbinu zinazojulikana za udhibiti wa mtiririko kulingana na vitanzi, taarifa za masharti, na vighairi.

    Sintaksia ya Async-ait hukuruhusu kuunda vitendaji ambavyo vinaweza kusitisha utekelezaji wao, kurudisha udhibiti kwenye uzi kuu, na kisha kuendelea na utekelezaji kutoka mahali zilipoachia. Kwa mfano, pause kama hiyo inahitajika wakati wa kuchakata I/O, ambapo kazi nyingine inaweza kufanywa wakati wa kusubiri kipande cha data kinachofuata. Kazi na vizuizi vilivyofafanuliwa kwa "async fn" na "async move" hurejesha sifa Baadaye, ambayo inafafanua uwakilishi wa kokotoo wa asynchronous ulioahirishwa. Unaweza kuanzisha hesabu iliyoahirishwa moja kwa moja na kupata matokeo kwa kutumia opereta ".await". Hakuna hatua inayotekelezwa au iliyopangwa mapema hadi .await iitwe, ikiruhusu miundo changamano iliyopachikwa kuundwa bila nyongeza ya ziada.

    async fn first_function() -> u32 { .. }
    ...
    let future = first_function();
    ...
    acha matokeo: u32 = future.await;

  • Imetulia "#![kipengele(bind_by_move_pattern_guards)]", ikiruhusu matumizi ya viambajengo vyenye aina ya kuunganisha "kwa-hamisha" katika violezo na tumia marejeleo ya vigeu hivi katika sehemu ya "ikiwa" ya usemi "mechi". Kwa mfano, ujenzi ufuatao sasa unaruhusiwa:

    fn kuu() {
    let array: Box<[u8; 4]> = Kisanduku::mpya ([1, 2, 3, 4]);

    safu ya mechi {
    idadi
    ikiwa nums.iter().jumla::() == 10

    => {
    kushuka (idadi);
    }
    _ => haipatikani! (),
    }
    }

  • Dalili inaruhusiwa sifa wakati wa kufafanua vigezo vya utendakazi, kufungwa, na viashiria vya utendakazi. Sifa za ujumuishaji za masharti (cfg, cfg_attr) zinazodhibiti utambuzi kupitia lint (ruhusu, onya, kataa na kataza) na sifa za simu za ziada zinatumika.

    fn len (
    #[cfg(windows)] kipande: &[u16], // tumia kigezo kwenye Windows
    #[cfg(not(windows))] kipande: &[u8], // tumia katika OS nyingine
    ) -> tumia {
    slice.len()
    }

  • Maonyo kuhusu matatizo yaliyotambuliwa wakati wa kukagua ukopaji wa vigeu (kikagua kukopa) kwa kutumia mbinu ya NLL (Non-Lexical Lifetimes), kutafsiriwa katika kategoria ya makosa mabaya. Hebu tukumbuke kwamba mfumo wa uthibitishaji kulingana na utaratibu mpya wa kuzingatia maisha ya vigezo vilivyokopwa ulifanya iwezekanavyo kutambua matatizo fulani ambayo hayakutambuliwa na msimbo wa uthibitishaji wa zamani. Kwa kuwa matokeo ya hitilafu kwa ukaguzi kama huo yanaweza kuathiri upatanifu na msimbo wa kufanya kazi hapo awali, maonyo yalitolewa awali badala ya makosa. Maonyo sasa yamebadilishwa na makosa wakati wa kuendesha katika hali ya Rust 2018. Katika toleo linalofuata, pato la makosa pia litatekelezwa katika hali ya Rust 2015, ambayo hatimaye itaondoa ukaguzi wa zamani wa kukopa;
  • Sifa ya "const", ambayo huamua uwezekano wa kutumia katika muktadha wowote badala ya viunga, hutumika kwa kazi Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::kama_baiti,
    abs, wrapping_abs na kufurika_abs;

  • Sehemu mpya ya API imehamishiwa kwenye kategoria thabiti, ikijumuisha mbinu ambazo zimeimarishwa
    Bandika::ndani_ya_ndani, Papo hapo::muda_ulioangaliwa tangu na Papo hapo::muda_wa_kueneza_tangu;

  • Kidhibiti cha kifurushi cha shehena sasa kina uwezo wa kutumia kiendelezi cha ".toml" kwa faili za usanidi. Aliongeza msaada wa awali kwa ajili ya kujenga maktaba ya kawaida moja kwa moja kutoka Cargo. Imeongeza bendera ya "--workspace", ikichukua nafasi ya bendera yenye utata "--all". Sehemu mpya imeongezwa kwa metadata "kuchapisha", ambayo hukuruhusu kuchapisha utegemezi kwa kubainisha tepe ya git na nambari ya toleo. Chaguo la jaribio lililoongezwa "-Ztimings" ili kutoa ripoti ya HTML ya nyakati za utekelezaji wa hatua mbalimbali za mkusanyiko.
  • Katika mkusanyiko wa rustc, ujumbe wa uchunguzi ni pamoja na kupunguza mikia ya msimbo ambayo haiingii kwenye terminal. Imetoa usaidizi wa kiwango cha tatu kwa majukwaa lengwa
    i686-haijulikani-uefi na sparc64-haijulikani-openbsd. Ngazi ya tatu inahusisha usaidizi wa kimsingi, lakini bila kupima kiotomatiki na uchapishaji wa miundo rasmi.

Chanzo: opennet.ru

Kuongeza maoni