Rust 1.38 Chirongwa Mutauro Kuburitswa

rakabudiswa system programming mutauro kuburitswa Ngura 1.38, 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:

  • Yakawedzera pombi yekubatanidza modhi (pipelined), umo kuvakwa kwekasitiri kireti pakiti kunotanga nekukurumidza kana metadata yekutsamira yave kuwanikwa, pasina kumirira kuti kuunganidzwa kwayo kupere. Paunenge uchigadzira pasuru, zvinotsamira hazvidi kuunganidzwa zvizere, kungotsanangura metadata, iyo inosanganisira rondedzero yemhando, zvinoenderana, uye zvinhu zvinotengeswa kunze kwenyika. Metadata inoitwa kuti iwanikwe pakutanga mukugadzirisa maitiro, saka mapakeji akabatanidzwa anogona kuunganidzwa kare kare. Paunenge uchivaka mapakeji ega, iyo yakarongwa modhi haikanganisi kuita, asi kana iyo kuvaka ichivhara mapakeji ane matavi anotsamira, iyo yakazara nguva yekuvaka inogona kuderedzwa ne10-20%;
  • Inova nechokwadi chekuonekwa kwekushandiswa kusiri kwemabasa std::mem::uninitialized ΠΈ std::mem::zeroed. Semuyenzaniso, std::mem::uninitialized yakanakira kukurumidza kugadzira arrays, asi inorasisa muunganidzi nekuti inoratidzika kunge yakatangwa, asi muchokwadi kukosha kunoramba kusati kwatanga. Iyo mem :: uninitialized basa rakatomakwa sekunge rakarambwa uye zvinokurudzirwa kushandisa mhando yepakati panzvimbo PamweUniti. Kana iri mem ::zeroed, basa iri rinogona kukonzera matambudziko nemhando dzisingakwanisi kugamuchira zero values.

    Kubatsira kuona maitiro asina kutsanangurwa, kuburitswa kutsva kunowedzera lint cheki kumugadziri anoona mamwe matambudziko ane mem ::uninitialized kana mem::zeroed. Semuyenzaniso, iwe zvino wawana kukanganisa paunenge uchiedza kushandisa mem::uninitialized kana mem::zeroed nemhando &T neBhokisiβ€ΉTβ€Ί, izvo zvinomiririra zvinhu zvinonongedza zvisingakwanisi kubvuma zvisina maturo;

  • Iyo "#[yakadzikiswa]" hunhu hwakawedzerwa kuti kubvumira crate mapakeji kumakirwe echinyakare uye akarongerwa kubviswa mune ramangwana. Kubva kuRust 1.38, hunhu uhu hunogonawo kushandiswa kune macros;
  • Yakawedzera kugona kushandisa iyo "#[global_allocator]" hunhu muma submodules;
  • Akawedzera basa std::chero::type_name, iyo inokubvumira kuti uwane zita remhando, iyo inogona kubatsira pakugadzirisa zvinangwa. Semuenzaniso, panguva yekuitwa kwechirongwa iwe unogona kuziva kuti ndeupi rudzi rwainzi basa racho:

    fn gen_valueβ€ΉT: Default>() -β€Ί T {
    println!("Kutanga chiitiko che{}", std::chero::type_name::β€ΉTβ€Ί());
    Default::default()
    }

    fn chikuru() {
    rega _: i32 = gen_value(); # "i32" ichadhindwa
    rega _: Tambo = gen_value (); # ichadhinda "alloc::string::String"
    }

  • Mabasa akawedzerwa eraibhurari yakajairwa:
    • slice ::{concat, connect, join} ava kukwanisa kutora kukosha &[T] kuwedzera ku&T;
    • "*const T" uye "*mut T" zvino shandisa marker::Unpin;
    • "Arcβ€Ή[T]β€Ί" uye "Rcβ€Ή[T]β€Ί" zvino shandisa FromIteratorβ€ΉTβ€Ί;
    • iter::{StepBy, Peekable, Take} ikozvino shandisa DoubleEndedIterator.
    • ascii :: EscapeDefault inoshandisa Clone uye Display.
  • Chikamu chitsva che APIs chakaendeswa kune yakagadzikana chikamu, kusanganisira nzira dzakagadziriswa
    • β€Ή*const Tβ€Ί::cast, β€Ή*mut Tβ€Ί::cast,
    • Nguva::as_secs_f{32|64},
    • Nguva::div_duration_f{32|64},
    • Nguva::div_f{32|64},
    • Nguva::kubva_secs_f{32|64},
    • Nguva::mul_f{32|64},
    • division operations nezvasara
      div_euclid uye rem_euclid kune ese ekutanga primitives;

  • Yakawedzerwa rutsigiro rwekutsanangura iyo "--maficha" sarudzo kakawanda kugonesa akasiyana maficha mune cargo package maneja;
  • Iyo compiler inopa chetatu level tsigiro yenzvimbo dzakanangwa aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc zvinangwa, armvux7-zvisingazivikanwi- -gnueabi, armv7-isingazivikanwe-linux-musleabi, hexagon-isingazivikanwe-linux-musl uye riscv32i-isingazivikanwe-hapana-elf. Iyo yechitatu nhanho inosanganisira yekutanga tsigiro, asi pasina otomatiki kuyedzwa uye kuburitswa kwepamutemo kuvaka.

Source: opennet.ru

Voeg