Rust 1.34 Chirongwa Mutauro Kuburitswa

zvakaitika system programming mutauro kuburitswa Ngura 1.34, yakagadzirwa 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:

  • Iye Cargo package maneja akawedzera maturusi ekushanda nemamwe mapakeji registries anogona kugarisana ne crates.io public registry. Semuyenzaniso, vagadziri vezvishandiso zvevaridzi vanogona ikozvino kushandisa yavo yakavanzika registry, iyo inogona kushandiswa pakunyora zvinotsamira muCargo.toml, uye kushandisa shanduro yemhando yakafanana ne crates.io yezvigadzirwa zvavo, pamwe nekutarisa zvinotsamira kune ese ari maviri makrete. io uye kune yako registry.

    Kuwedzera maregistries ekunze ku .cargo/config (iri mu$HOME kana mudhairekitori repasuru)
    akapa chikamu "[marejista]", uye kushandisa registry yekunze, sarudzo ye "registry" yabuda mutsananguro yekutsamira kwega kwega muCargo.toml. Kuti ubatanidze kune imwe registry, ingoisa chiratidzo chechokwadi mu ~/.cargo/credentials faira wobva wamhanyisa murayiro.
    "cargo login --registry = my-registry" uye kuburitsa pasuru -
    "cargo publish -registry=my-registry";

  • Yakawedzera rutsigiro rwakazara rwekushandisa iyo "?" mumiyedzo dzidziso, zvichikubvumidza kushandisa kodhi yemuenzaniso kubva pane zvinyorwa sebvunzo. Kare mushandisi
    "?" inogona kushandiswa kubata zvikanganiso panguva yekuedza chete pamberi pe "fn main()" basa kana mu "#[test]" mabasa;

  • Mune tsika hunhu hunotsanangurwa uchishandisa procedural macros akapa kugona kushandisa chero zvibodzwa seti (β€œ#[attr($tokens)]”, β€œ#[attr[$tokens]] uye #[attr{$tokens}]”). Kare, zvinhu zvaingogona kududzwa mumuti/mufomu inodzokororwa uchishandisa tambo literals, semuenzaniso β€œ#[foo(bar, baz(quux, foo = β€œbar”))]”, asi iko zvino zvave kugoneka kushandisa manhamba (' #[range(0. .10)]') uye zvivakwa zvakaita seβ€œ#[kusungwa(T: MyTrait)]”;
  • Mhando dzakagadzikana (hunhu) TryFrom ΠΈ TryInto, kubvumira shanduko yemhando ine kukanganisa kubata. Semuyenzaniso, nzira dzakaita sekubva_be_bytes dzine marudzi akakwana dzinoshandisa arrays sekuisa, asi data rinowanzouya riri reSlice type, uye kushandura pakati pezvimedu nezvidimbu zvinonetsa kuita nemaoko. Nerubatsiro rweunhu hutsva, kushanda kwakatarwa kunogona kuitwa pakubhururuka kuburikidza nekufona ku.try_into(), semuenzaniso, "let num = u32::from_be_bytes(slice.try_into()?)". Kune shanduko dzinogara dzichibudirira (semuenzaniso, kubva pamhando u8 kusvika u32), mhando yekukanganisa yawedzerwa Infallible, kubvumira kushandiswa kwakajeka
    TryFrom kune ese aripo ekuita e "Kubva";

  • Basa rakaregwa CommandExt::before_exec, iyo yaibvumira mubati kuti aurawe asati aita exec, iyo yaiitwa mumamiriro ekuita kwemwana akafukidzwa mushure meforogo () kufona. Pasi pemamiriro ezvinhu akadai, zvimwe zviwanikwa zvemaitiro evabereki, senge faira descriptors uye mepu yekurangarira nzvimbo, zvinogona kudzokororwa, izvo zvinogona kutungamira kune isina kutsanangurwa maitiro uye zvisirizvo kushanda kwemaraibhurari.
    Inokurudzirwa kushandisa isina kuchengetedzeka basa pane before_exec CommandExt::pre_exec.

  • Yakagadzikana yakasainwa uye isina kusainwa maatomu emhando dzemhando dzakakura kubva pa8 kusvika pa64 bits (semuenzaniso, AtomicU8), pamwe chete nemhando dzakasaina NonZeroI[8|16|32|64|128].
  • Chikamu chitsva cheAPI chaendeswa kuchikamu chakatsiga, kusanganisira iyo Chero::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] uye nzira dzeSystemTime dzakadzikamiswa ::checked_[add|sub]. The iter::from_fn uye iter::successors mabasa akagadziriswa;
  • Pamhando dzose dzakakwana, nzira dzechecked_pow, saturating_pow, wrapping_pow uye overflowing_pow dzinoshandiswa;
  • Yakawedzera kugona kugonesa optimizations padanho rekubatanidza nekutsanangura iyo "-C linker-plugin-lto" yekuvaka sarudzo.

Source: opennet.ru

Voeg