Rust 1.42 Chirongwa Mutauro Kuburitswa

rakabudiswa system programming mutauro kuburitswa Ngura 1.42, yakatangwa neMozilla project. Mutauro unotarisana nekuchengetedza ndangariro, unopa otomatiki ndangariro manejimendi, uye inopa maturusi ekuwana yakakwira basa parallelism pasina kushandisa muunganidzi wemarara uye. runtimetime.

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:

  • Added rutsigiro rwematemplate ekufananidza zvikamu zvezvimedu (dynamic arrays, slice). Pakutanga, machisi chaiwo aibvumidzwa, asi ikozvino zvinogoneka kushandisa zvivakwa zvakatemwa ".." kuvhara izvo zvakasara zveiyo array. Semuyenzaniso:

    fn foo(mashoko: &[&str]) {
    fananidza mazwi {

    // inotarisa kutanga kweiyo array uye inofuratira
    zvinhu zvinovatevera
    ["Mhoro", "Nyika", "!", ..] => println!("Mhoro Nyika!"),

    // inotarisa zvinhu zviviri zvekutanga "Foo" uye "Bar", uye zvimwe zvose hazvina kukosha
    ["Foo", "Bar", ..] => println!("Baz"),

    // kufuratira zvese, asi chinhu chekupedzisira chinofanira kunge chiri "!".
    [.., β€œ!”] => println!(β€œ!!!”),

    // muchikamu chekutanga tinosanganisira zvese kunze kwechinhu chekupedzisira, chinofanira kunge chiri "z"
    [tanga @ .., "z"] => println!("inotanga na: {:?}", tanga),

    // muchikamu chekupedzisira tinoisa zvinhu zvose kunze kwechinhu chekutanga, chinofanira kuva "a".
    ["a", end @ ..] => println!("inopera na: {:?}", end),

    zorora => println!("{:?}", zorora),
    }
    }

  • Yakawedzera macro "matches!", iyo inotora chirevo uye pateni sekuisa, uye inodzosera "chokwadi" kana pateni ichienderana nekutaura. Iyo template inogona kushandisa "|" mashandiro uye "kana".

    match self.partial_cmp(zvimwe) {
    Vamwe (Zvishoma) => chokwadi,
    _ => nhema,
    }

    match!(self.partial_cmp(zvimwe), Zvimwe(Zvishoma))

    let foo = 'f';
    kusimbisa!(matches!(foo, 'A'..='Z' | 'a'..='z'));

    regai bhari = Vamwe(4);
    assert!(matches!(bar, Some(x) kana x > 2));

  • Mukuvhunduka mameseji anoratidzwa kana akashandiswa zvisizvo
    mhando Sarudzo uye Mhedzisiro, ikozvino ratidza nhamba dzemitsara ine chinongedzo kune kodhi iyo yakaita dambudziko rekufona, pane zvinongedzo kune kodhi kuita iyo yekufona mu libcore. Semuyenzaniso, shanduko inokanganisa mafoni ekuvhura uye kutarisira pamusoro peSarudzo::Hapana, kana kubondera paunenge uchishandisa unwrap_err, tarisira, tarisira_err, nedzimwe nzira dzakafanana pamhando yeChinyorwa.

  • Iyo Cargo package maneja inopa otomatiki kutsiva kwe "proc_macro crate" mu "yekunze" block yemapakeji ane procedural macros. Shanduko iyi inobvumira iyo "kushandisa" rairo kuti rishandiswe kune maitiro macros pasina kudoma "extern crate proc_macro;" mukodhi. Semuenzaniso, kana chirongwa chikashandisa mutsara "shandisa proc_macro::TokenStream;", ipapo kodhi icharamba ichishanda kana "extern crate proc_macro;" ikabviswa pairi.
  • Kugona kweraibhurari yakajairika kwakawedzerwa. In iter::Empty akawedzera Tumira uye Sync rutsigiro kune chero T kukosha.
    Anofona Pini::{mepu_haina kutariswa, mepu_unchecked_mut} delivered kubva pakudzosa kukosha kwerudzi rwe "Size" kuita.
    In io::Chituko itwa PartialEq uye Eq. Iyo "const" hunhu inosarudza mukana wekushandiswa mune chero mamiriro pachinzvimbo chekugara, kushandiswa yeChimiro ::nzira itsva.

  • Chikamu chitsva cheAPI chaendeswa kuchikamu chakagadzikana, kusanganisira yakagadzikana CondVar ::wait_while, CondVar::wait_timeout_while,
    DebugMap::kiyi, DebugMap::kukosha,
    ManuallyDrop ::tora,
    ptr::slice_from_raw_parts_mut and ptr::slice_from_raw_parts.

  • Kukanganisa::tsanangudzo nzira yarambwa.
  • Yakapihwa yechipiri nhanho rutsigiro rwearv7a-none-eabi uye riscv64gc-isingazivikanwe-linux-gnu mapuratifomu. Tsigiro yeraibhurari yakajairwa yeriscv64gc-isingazivikanwe-linux-gnu chikuva yakapihwa.
    Apple 32-bit mapuratifomu demoted kusvika padanho rechitatu retsigiro, izvo zvinoreva kutsigirwa kwekutanga, asi pasina otomatiki kuyedzwa uye kuburitswa kwevakuru kuvaka. Kudzikira mukutsigira kunokonzerwa nekuti Apple haichatsigire 32-bit mapuratifomu.

Source: opennet.ru

Voeg