Kuburitswa kwemutauro wechirongwa Rust 2021 (1.56)

Kuburitswa kweiyo system programming mutauro Rust 1.56, yakavambwa neMozilla purojekiti, asi ikozvino yakagadziridzwa pasi pekutsigirwa kwesangano rakazvimirira rerust Foundation, raburitswa. Pamusoro peiyo yakajairwa vhezheni nhamba, kuburitswa kwacho kunotemerwa Rust 2021 uye kunoratidza kudzikamiswa kweshanduko dzakarongwa mumakore matatu apfuura. Rust 2021 ichashandawo sechikonzero chekuwedzera kushanda kwemakore matatu anotevera, zvakafanana nekusunungurwa kweRust 2018 kwakava hwaro hwekuvandudzwa kwemutauro mumakore matatu apfuura.

Kuti uchengetedze kuenderana, vanogadzira vanogona kushandisa "2015", "2018" uye "2021" mavara muzvirongwa zvavo, zvichibvumira zvirongwa kuti zvibatanidzwe nemitauro yenyika zvimedu zvinoenderana neshanduro dzakasarudzwa dzeRust. Zvinyorwa zvakaunzwa kuti zviparadzanise shanduko dzisingaenderani uye zvinogadziriswa mune metadata yemapaketi ekutakura zvinhu kuburikidza nechikamu che "edition" muchikamu che[package]. Semuenzaniso, "2018" edition inosanganisira kushanda kwakagadzikana kubva pakupera kwa2018 uye zvakare inovhara dzimwe shanduko dzese dzisingatadze kuenderana. Iyo 2021 edition inosanganisirawo kudyidzana-kutyora maficha akakurudzirwa mune yazvino 1.56 kuburitswa uye kubvumidzwa kuti iitwe mune ramangwana. Pamusoro pemutauro wacho pachawo, vapepeti vanotarisawo mamiriro ezvishandiso uye zvinyorwa.

Kusawirirana kukuru kwakanyorwa muRust 2021:

  • Kuparadzanisa Capture muKuvharwa - Kuvharwa ikozvino kunogona kutora ega ega mazita emunda pane iyo identifier yese. Somuenzaniso, "|| demo + 1" inongotora "demo" pane kuti "a".
  • Iyo IntoIterator hunhu hwezvirongwa: array.into_iter() inokutendera kuti udzokorore pamusoro pezvinhu zvakarongwa nehunhu, kwete nemareferensi.
  • Kugadziriswa kwe "|" mataurirwo akashandurwa mune macro_rules (Boolean OR) mumapatani - Iyo ":pat" inofananidzira mumachisi ikozvino inoremekedza "A | B".
  • Iyo cargo package maneja inosanganisira nekusarudzika yechipiri vhezheni yechinhu chinogadzirisa, rutsigiro rwakaonekwa muRust 1.51.
  • Iyo TryFrom, TryInto uye FromIterator maitiro akawedzerwa kune yekutanga yakajairwa raibhurari module.
  • The panic!(..) and assert!(expr, ..) macros now always use format_args!(..) kufomati tambo, dzakafanana neprintln!().
  • Matauriro ident#, identΒ»..." uye ident'...' zvakachengetwa mumutauro we syntax.
  • Yakafambiswa bare_trait_objects uye ellipsis_inclusive_range_patterns yambiro kune kukanganisa.

Nyowani muRust 1.56:

  • MuCargo.toml, mu "[package]" chikamu, iyo ngura-version munda yakawedzerwa, kuburikidza iyo iwe unogona kuona iyo shoma inotsigirwa shanduro yeRust ye crate package. Kana iyo yazvino vhezheni isingaenderane neyakatsanangurwa parameter, Cargo inomira kushanda nemhosho meseji.
  • Kana patani ichifananidzwa uchishandisa "binding @ pattern" mataurirwo, tsigiro inopihwa pakutsanangura zvimwe zvinosungirwa (semuenzaniso, "let matrix @ Matrix {row_len, .. } = get_matrix();").
  • Chikamu chitsva cheAPI chakaendeswa kuchikamu cheyakagadzikana, kusanganisira nzira uye mashandisirwo ehunhu zvakadzikamiswa:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter ::mu_zvikamu
    • musimboti::kutya::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::kunya_ku
    • Mutambo::kuchemedza_ku
    • OsString::shrink_to
    • PathBuf ::shrink_to
    • BinaryHeap::kuderedza_ku
    • VecDeque::shrink_to
    • HashMap::kuderedza_ku
    • HashSet ::shrink_to
  • Iyo "const" hunhu, iyo inosarudza mukana wekushandisa mune chero mamiriro pachinzvimbo chezvisingaperi, inoshandiswa mumabasa.
    • std::mem::transmute
    • [T]::kutanga
    • [T]::kupatsanura_kutanga
    • [T]::pekupedzisira
    • [T]::split_kupedzisira
  • Iyo compiler yakachinjirwa kushandisa LLVM vhezheni 13.
  • Yechipiri nhanho yerutsigiro yakashandiswa kune aarch64-apple-ios-sim chikuva uye chechitatu nhanho yepowerpc-isingazivikanwe-freebsd uye riscv32imc-esp-espidf mapuratifomu. Chikamu chechitatu chinosanganisira rutsigiro rwekutanga, asi pasina otomatiki kuyedzwa, kushambadza official kuvaka, kana kutarisa kuti kodhi inogona kuvakwa.

Rangarira kuti Rust yakanangana nekuchengetedza ndangariro, inopa otomatiki ndangariro manejimendi, uye inopa nzira yekuwana yakakwira parallelism mukuita basa pasina kushandisa muunganidzi wemarara kana nguva yekumhanya (nguva yekumhanya inoderedzwa kuita yekutanga yekutanga uye kuchengetedza raibhurari yakajairwa).

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. Kugovera maraibhurari, kuve nechokwadi kuungana uye kugadzirisa zvinotsamira, chirongwa ichi chiri kugadzira Cargo package maneja. Iyo crates.io repository inotsigirwa kuitisa maraibhurari.

Source: opennet.ru

Voeg