Rust 1.39 Chirongwa Mutauro Kuburitswa

rakabudiswa system programming mutauro kuburitswa Ngura 1.39, yakatangwa neMozilla project. Mutauro unotarisana nekuchengetedza ndangariro, unopa otomatiki ndangariro manejimendi, uye inopa nzira yekuwana yakakwirira basa parallelism pasina kushandisa muunganidzi wemarara kana nguva yekumhanya.

Rust's otomatiki ndangariro manejimendi inosunungura mugadziri kubva pakugadzirisa pointer uye inodzivirira kubva kune yakaderera-level ndangariro manipulation, senge mushure-yemahara memory yekuwana, null pointer dereferences, buffer overruns, nezvimwe. Maneja wepakeji ari kugadzirwa kugovera maraibhurari, kuona kuungana uye kugadzirisa zvinovimbika neprojekiti. kago, zvichikubvumidza kuti uwane maraibhurari anodiwa pachirongwa ichi nekudzvanya kumwe chete. A repository inotsigirwa kuitisa maraibhurari crates.io.

chikuru zvitsva:

  • Yakagadzikana itsva asynchronous programming syntax inobva pa "async" basa, iyo async move { ... } block, uye ".await" mushandisi, izvo zvinoita kuti zvive nyore kunyora zvibatiso zvisingavharidzi murairo mukuru wekuyerera. Kuenzaniswa neiyo yakambopihwa API yeasynchronous I/O, async/.await constructs iri nyore kunzwisisa, inoverengeka zvakanyanya, uye inobvumidza iwe kuti uite yakaoma asynchronous kupindirana uchishandisa yakajairika kuyerera kuyerera kwakavakirwa pazvishwe, zvirevo zvemamiriro, uye kunze.

    Iyo Async-yakamirira syntax inokutendera iwe kuti ugadzire mabasa anogona kumbomira kuuraya, kudzoreredza kutonga kune iyo huru tambo, uye wobva watangazve kuuraya kubva kwavakabva. Semuenzaniso, kumbomira kwakadaro kunodiwa paunenge uchigadzira I / O, umo rimwe basa rinogona kuitwa uchimirira kuti chikamu chinotevera che data chisvike. Mabasa uye zvidhinha zvinotsanangurwa ne "async fn" uye "async kufamba" inodzosa hunhu Future, iyo inotsanangura deferred asynchronous computation representation. Iwe unogona zvakananga kutanga kuverenga kwakamisikidzwa uye kuwana mhinduro uchishandisa ".await" opareta. Hapana chiito chinoitwa kana kufanorongwa kusvika .await yadanwa, zvichibvumira zvivakwa zvakaomesesa nested kuti zvigadzirwe pasina kuwedzera pamusoro.

    async fn first_function() -> u32 {.. }
    ...
    regai ramangwana = first_function ();
    ...
    regai mhedzisiro: u32 = future.await;

  • Yakagadzikana "#![feature(bind_by_move_pattern_guards)]", zvichibvumira kushandiswa kwemavara ane mhando yekusunga "ne-kufamba" mumatemplate uye shandisa mareferenzi kune aya akasiyana muchikamu che "kana" cheshoko "mutambo". Semuenzaniso, zvinotevera zvivakwa zvino zvinobvumidzwa:

    fn chikuru() {
    let array: Bhokisi <[u8; 4]> = Bhokisi::itsva([1, 2, 3, 4]);

    match array {
    nums
    kana nums.iter().sum::() == 10

    => {
    kudonha (nhamba);
    }
    _ => hazvisvikiki!(),
    }
    }

  • Chiratidzo chinobvumirwa hunhu pakutsanangura maparameter ebasa, kuvharwa, uye mapoinzi ebasa. Mamiriro ekuunganidza maitiro (cfg, cfg_attr) anodzora diagnostics kuburikidza ne lint (tendera, yambiro, ramba uye rambidza) uye ebetsero macro ekufona maitiro anotsigirwa.

    fn len (
    #[cfg(mahwindo)] slice: &[u16], // shandisa parameter paWindows
    #[cfg(kwete(mahwindo))] cheka: &[u8], // shandisa mune imwe OS
    ) -> kushandisa {
    slice.len()
    }

  • Yambiro pamusoro pezvinetso zvinoonekwa kana uchitarisa kukwereta kwezvinhu (kukwereta cheki) uchishandisa nzira yeNLL (Non-Lexical Lifetimes), rakaturikirwa muchikamu chezvikanganiso zvinouraya. Ngatiyeukei kuti iyo verification system yakavakirwa pamuchina mutsva wekutarisa hupenyu hwezvakakweretwa zvakasiyana zvakaita kuti zvikwanise kuona mamwe matambudziko asina kucherechedzwa nekodhi yekare yekusimbisa. Sezvo kukanganisa kubuda kwecheki kwakadaro kuchigona kukanganisa kuenderana nekodhi yaimboshanda, yambiro dzakatanga kupihwa pachinzvimbo chekukanganisa. Yambiro ikozvino yatsiviwa nezvikanganiso kana uchimhanya muRust 2018 modhi. Mukuburitswa kunotevera, kukanganisa kuburitswa kuchaitwa zvakare muRust 2015 modhi, iyo inozopedzisira yabvisa yekare yekukwereta cheki;
  • Iyo "const" hunhu, iyo inosarudza mukana wekushandisa mune chero mamiriro pachinzvimbo chezvimiro, inoshandiswa kumabasa Vec :: itsva, String:: itsva, LinkedList:: itsva, str::len, [T]:: len. , str::se_mabhayiti,
    abs, wrapping_abs uye kufashukira_abs;

  • Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira nzira dzakagadziriswa
    Pin::mukati_yemukati, Instant::checked_duration_since and Instant::saturating_duration_since;

  • Mutariri wepakeji yekutakura zvino ane kugona kushandisa ".toml" kuwedzera kwemafaira ekugadzirisa. Yakawedzera rutsigiro rwekutanga kuvaka raibhurari yakajairwa zvakananga kubva kuCargo. Yakawedzera mureza we "--workspace", ichitsiva mureza we "--ose" unonetsa. Nzvimbo itsva yakawedzerwa kune metadata "kubudisa", iyo inokutendera kuti ushambadze zvinoenderana nekutsanangura git tag uye nhamba yevhezheni. Yakawedzerwa bvunzo sarudzo "-Ztimings" kugadzira iyo HTML mushumo wenguva dzekuuraya dzeakasiyana matanho ekubatanidza.
  • Mune rustc compiler, mameseji ekuongorora anosanganisira kudimburira miswe yekodhi isingakwane muterminal. Yakapihwa nhanho yechitatu yerutsigiro yezvinangwa mapuratifomu
    i686-isingazivikanwe-uefi uye sparc64-isingazivikanwe-openbsd. Iyo yechitatu nhanho inosanganisira yekutanga tsigiro, asi pasina otomatiki kuyedzwa uye kuburitswa kwepamutemo kuvaka.

Source: opennet.ru

Voeg