Rust 1.45 Chirongwa Mutauro Kuburitswa

rakabudiswa kuburitsa 1.45 yemutauro wepurogiramu yemutauro ngura, 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 inobvisa zvikanganiso kana ichishandisa anongedza uye inodzivirira kubva kune yakaderera-level memory manipulation, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, 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:

  • Yakabviswa kwenguva refu kukanganisa paunenge uchiita shanduko pakati pemanhamba nemapoinzi anoyangarara. Sezvo Rust compiler inoshandisa LLVM senge backend, mhando yekushandura mashandiro akaitwa kuburikidza neLLVM yepakati kodhi mirairo senge. fptoui, iyo ine chinhu chimwe chakakosha - maitiro asina kutsanangurwa kana kukosha kwacho kusingaenderane nerudzi rwechinangwa. Semuenzaniso, kana uchishandura kukosha kwekuyangarara 300 nemhando f32 kune nhamba yerudzi u8, mhedzisiro yacho haifungidzike uye inogona kusiyana pane akasiyana masisitimu. Dambudziko nderekuti chimiro ichi chinoonekwa mukodhi isina kunyorwa se "isina kuchengetedzeka".

    Kubva paRust 1.45, hunhu hwemhando yekufashukira hunodzorwa zvakanyanya, uye iyo "se" shanduko yekushanda inoongorora mafashama uye inomanikidza kukosha kuchinjirwa kune yakakwira kana kushomeka kukosha kwerudzi rwechinangwa (semuenzaniso uri pamusoro, kukosha kwe. 300 yaizoshandurwa kuita 255). Kudzima macheki akadaro, mamwe maAPI anofona "{f64, f32}::to_int_unchecked" anopihwa, achishanda mune isina kuchengetedzeka mode.

    fn cast(x: f32) -> u8 {
    x uye u8
    }

    fn chikuru() {
    let too_big = 300.0;
    let too_small = -100.0;
    regai nan = f32::NAN;

    rega x: f32 = 1.0;
    rega y: u8 = isina kuchengeteka {x.to_int_unchecked()};

    println!("too_big_casted = {}", cast(too_big)); // kuburitsa 255
    println!("too_small_casted = {}", cast(too_small)); // zvabuda 0
    println!("not_a_number_casted = {}", cast(nan)); // kuburitsa 0
    }

  • Shandisa yakagadzikana process macrosbasa-sekutaura, matemplate, uye zvirevo. Pakutanga, macros akadaro aisakwanisa kudanwa kwese kwese, asi mune zvimwe zvikamu zvekodhi (sekudanwa kwakasiyana, isina kupindirana neimwe kodhi). Kuwedzera nzira iyo macros inogona kudanwa, yakafanana nemabasa, yaive imwe yezvaidiwa kuti webhu hurongwa hushande. chitundumuseremusere mukuburitswa kwakagadzikana kweRust. Pakutanga, kuwana imwe shanduko mukutsanangura vanobata muRocket kunodiwa kugonesa chinhu chekuyedza chinonzi "proc_macro_hygiene", icho chisipo mushanduro dzakagadzikana dzeRust. Kuita uku kwave kuvakwa mukuburitswa kwakagadzikana kwemutauro.
  • Inotenderwa kushandisa masanji ane mhando "char" kudzokorodza pamusoro pemhando dzemhando (ops::{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    ye ch in 'a'..='z' {
    print!("{}", ch);
    }
    println!(); // Achadhinda "abcdefghijklmnopqrstuvwxyz"

  • Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira yakagadzikana
    Arc::as_ptr,
    BtreeMap ::bvisa_kupinda,
    Rc::as_ptr,
    rc::Haina simba::as_ptr,
    rc::Haina simba::kubva_raw,
    rc::Haina simba::mu_raw,
    str::strip_prefix,
    str::strip_suffix,
    sync::Isina kusimba::as_ptr,
    sync::Haina simba::kubva_raw,
    sync::Isina kusimba::mu_raw,
    char::UNICODE_VERSION,
    Nguva::yakagadziriswa_pa,
    Span::inowanikwa_pa,
    Span::mixed_site,
    unix::maitiro::CommandExt::arg0.

  • Iyo rustc compiler yakawedzera tsigiro yekupfuura akasiyana-siyana anonangwa papuratifomu maficha achishandisa "chinangwa-chinhu" mureza, semuenzaniso, "-C target-feature=+avx2+fma". Mireza mitsva yakawedzerwawo:
    "kumanikidza-kusunungura-matafura" kugadzira kusunungura kufona matafura, zvisinei negwara rekubata njodzi; "embed-bitcode" kutonga kana LLVM bitcode inosanganisirwa mumarlibs anogadzirwa. Iyo "embed-bitcode" mureza inogoneswa nekusarudzika muCargo kukwirisa nguva yekuvaka uye disk nzvimbo yekushandisa.

  • Chikamu chechitatu chekutsigirwa chakapihwa mipsel-sony-psp uye thumbv7a-uwp-windows-msvc mapuratifomu. Iyo yechitatu nhanho inosanganisira yekutanga tsigiro, asi pasina otomatiki kuyedzwa uye kuburitswa kwepamutemo kuvaka.

Uyezve, inogona kucherechedzwa nyaya nezvekugadzira zviri nyore Apps mumutauro weRust, kutanga kushandisa system bootloader uye yakagadzirira kuzvitakura-yega pane iyo inoshanda sisitimu.
Chinyorwa chacho ndechekutanga munhevedzano yakatsaurirwa kuratidza matekiniki ari kudiwa mune yakaderera-chikamu chirongwa uye OS kusimudzira.

Source: opennet.ru

Voeg