Rust 1.39 Kutulutsa Chilankhulo cha Mapulogalamu

Lofalitsidwa kutulutsidwa kwa chilankhulo cha pulogalamu yadongosolo Dzimbiri 1.39, 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:

  • Kukhazikika mawu atsopano a asynchronous programming syntax pogwiritsa ntchito "async" ntchito, async move { ... } block, ndi ".await" woyendetsa, zomwe zimapangitsa kuti zikhale zosavuta kulemba zogwirira ntchito zomwe sizikulepheretsa kutuluka kwa lamulo lalikulu. Poyerekeza ndi API yomwe inaperekedwa kale ya asynchronous I / O, async / .await constructs ndi osavuta kumva, owerengeka kwambiri, ndipo amakulolani kuti mugwiritse ntchito machitidwe ovuta a asynchronous pogwiritsa ntchito njira zodziwika bwino zoyendetsera kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe kake.

    Syntax ya Async-await imakupatsani mwayi wopanga ntchito zomwe zitha kuyimitsa kuphedwa kwawo, kubweza kuwongolera ku ulusi waukulu, ndikuyambiranso kupha komwe adasiyira. Mwachitsanzo, kupuma kotereku kumafunika pokonza I/O, momwe ntchito ina ingagwiritsidwire ntchito podikirira kuti gawo lotsatira la data lifike. Ntchito ndi midadada yofotokozedwa ndi "async fn" ndi "async move" imabweretsanso chikhalidwe tsogolo, yomwe imatanthawuza kuyimira kosinthika kosinthika kosinthika. Mutha kuyambitsa kuwerengera kochedwetsa ndikupeza zotsatira zake pogwiritsa ntchito ".await". Palibe chochita kapena chokonzedweratu mpaka .await itayitanidwa, kulola kuti zomangira zovuta zipangidwe popanda zowonjezera zowonjezera.

    async fn first_function() -> u32 {.. }
    ...
    lolani tsogolo = choyamba_function ();
    ...
    lolani zotsatira: u32 = future.await;

  • Kukhazikika "#![chinthu(bind_by_move_pattern_guards)]", kulola kugwiritsa ntchito zosinthika ndi mtundu womangirira "kusuntha" mu ma templates ndikugwiritsa ntchito maumboni ku zosinthazi mu gawo la "ngati" la mawu akuti "machesi". Mwachitsanzo, zomanga zotsatirazi zikuloledwa tsopano:

    fn chachikulu () {
    lolani gulu: Bokosi<[u8; 4]> = Bokosi::zatsopano([1, 2, 3, 4]);

    mafananidwe gulu {
    nambala
    ngati nums.iter().sum::() == 10

    => {
    dontho (nambala);
    }
    _ => osafikika!(),
    }
    }

  • Chizindikiro chololedwa makhalidwe pofotokoza magawo a ntchito, kutseka, ndi zolozera ntchito. Makhalidwe ophatikizika (cfg, cfg_attr) omwe amawongolera kuwunika kudzera pa lint (lolani, chenjezani, tsutsani ndi kuletsa) ndi mawonekedwe othandizira oyimba ambiri amathandizidwa.

    fn len (
    #[cfg(mawindo)] kagawo: &[u16], // gwiritsani ntchito parameter pa Windows
    #[cfg(osati(mazenera))] kagawo: &[u8], // gwiritsani ntchito mu OS ina
    ) -> gwiritsani ntchito {
    slice.len()
    }

  • Chenjezo la zovuta zomwe zadziwika poyang'ana kubwereketsa kwa zosintha (zobwereketsa) pogwiritsa ntchito njira ya NLL (Non-Lexical Lifetimes), kumasuliridwa m'gulu la zolakwika zakupha. Tikumbukenso kuti njira yotsimikizira yokhazikitsidwa ndi njira yatsopano yoganizira za moyo wamitundu yobwereka idapangitsa kuti zitheke kuzindikira zovuta zina zomwe sizinawonekere ndi nambala yakale yotsimikizira. Popeza kutulutsa zolakwika pamacheke otere kungakhudze kugwirizana ndi ma code omwe adagwirapo kale, machenjezo adaperekedwa poyamba m'malo mwa zolakwika. Machenjezo tsopano asinthidwa ndi zolakwika mukamayendetsa Rust 2018 mode. Pakumasulidwa kotsatira, kutulutsa zolakwika kudzakhazikitsidwanso mu Rust 2015 mode, yomwe pamapeto pake idzachotsa chosungira chakale;
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito muzochitika zilizonse m'malo mokhazikika, limagwiritsidwa ntchito pazinthu za Vec ::new, String::new, LinkedList::new, str::len, [T]::len , str::monga_bayiti,
    abs, wrapping_abs ndi kusefukira_abs;

  • Gawo latsopano la API lasamutsidwa ku gulu lokhazikika, kuphatikizapo njira zomwe zakhazikika
    Pin::mu_mkati, Instant::checked_duration_since and Instant::saturating_duration_kuyambira;

  • Woyang'anira phukusi la katundu tsopano ali ndi mphamvu yogwiritsira ntchito ".toml" yowonjezera mafayilo okonzekera. Anawonjezera chithandizo choyambirira chomangira laibulale yokhazikika kuchokera ku Cargo. Anawonjezera mbendera ya "--workspace", m'malo mwa "--all" mbendera. Malo atsopano awonjezedwa ku metadata "sindikirani", zomwe zimakupatsani mwayi wofalitsa zodalira pofotokoza tag ya git ndi nambala yamtundu. Njira yoyeserera yowonjezeredwa "-Ztimings" kuti mupange lipoti la HTML la nthawi zochitira magawo osiyanasiyana ophatikiza.
  • Mu rustc compiler, mauthenga ozindikira amaphatikizapo kudula michira ya code yomwe siyikugwirizana ndi terminal. Adapereka gawo lachitatu lothandizira pamapulatifomu omwe akutsata
    i686-osadziwika-uefi ndi sparc64-osadziwika-openbsd. Mulingo wachitatu umakhudzanso chithandizo choyambirira, koma popanda kuyezetsa ndi kufalitsa zomanga zovomerezeka.

Source: opennet.ru

Kuwonjezera ndemanga