Rust 1.82 air a leigeil ma sgaoil. Brabhsair Úr stèidhichte air Rust. A 'cleachdadh Rust ann an Volvo

Chaidh foillseachadh cànan prògramadh adhbhar coitcheann Rust 1.82, a chaidh a stèidheachadh le pròiseact Mozilla, ach a chaidh a leasachadh a-nis fo sgèith na buidhne neo-eisimeileach neo-phrothaideach Rust Foundation, fhoillseachadh. Tha an cànan a’ cuimseachadh air sàbhailteachd cuimhne agus a’ toirt seachad dòighean air co-shìnteachd obrach àrd a choileanadh fhad ‘s a tha e a’ seachnadh cleachdadh neach-cruinneachaidh sgudail agus ùine ruith (tha ùine ruith air a lughdachadh gu toiseach tòiseachaidh agus cumail suas an leabharlann àbhaisteach).

Bidh dòighean làimhseachaidh cuimhne Rust a’ sàbhaladh an leasaiche bho mhearachdan nuair a bhios iad a’ làimhseachadh chomharran agus a’ dìon an aghaidh dhuilgheadasan a thig am bàrr mar thoradh air làimhseachadh cuimhne aig ìre ìosal, leithid faighinn gu raon cuimhne às deidh dha a bhith air a shaoradh, a’ toirt iomradh air comharran null, cus bufair, msaa. Gus leabharlannan a sgaoileadh, togail a thoirt seachad agus eisimeileachd a riaghladh, bidh am pròiseact a’ leasachadh manaidsear pacaid Cargo. Tha an stòr crates.io a’ faighinn taic airson aoigheachd a thoirt do leabharlannan.

Tha sàbhailteachd cuimhne air a thoirt seachad ann an Rust aig àm cruinneachaidh tro sgrùdadh iomraidh, cumail sùil air seilbh nithean, cumail sùil air beatha nithean (scopes), agus measadh dè cho ceart ‘s a tha ruigsinneachd cuimhne rè coileanadh còd. Bidh Rust cuideachd a’ toirt dìon an aghaidh thar-shruthan iomlan, a’ feumachdainn luachan caochlaideach a thòiseachadh mus tèid an cleachdadh, a’ làimhseachadh mhearachdan nas fheàrr san leabharlann àbhaisteach, a’ cur an gnìomh bun-bheachd iomraidhean neo-sheasmhach agus caochladairean gu bunaiteach, a’ tabhann clò-sgrìobhadh làidir statach gus mearachdan loidsigeach a lughdachadh.

PrĂŹomh innleachdan:

  • Chaidh an Ă ithne “info” a chuir ris a’ mhanaidsear pacaid bathair gus fiosrachadh mu phasgan a thaisbeanadh san stòr.
  • Chuir sinn taic ris a’ cho-chòrdadh “use<..>” ann an “impl Trait”, a shònraicheas fiosrachadh mu sheòrsan falaichte. Mar eisimpleir, tha "impl Trait + use <'x, T>" a' sònrachadh nach eil ach na paramadairean "x" agus "T" ceadaichte a chleachdadh ann an seòrsa falaichte.
  • Chaidh co-chòrdadh air leth a mholadh airson comharran amh a chruthachadh, a’ dol an Ă ite macros a chaidh a chleachdadh roimhe seo: chaidh a’ ghnĂŹomhaiche “&raw const expr” a chuir na Ă ite a’ macro “addr_of! (expr)”, agus chaidh am macro “addr_of_mut! (expr)” a chuir na Ă ite. leis a’ ghnĂŹomhaiche “&raw mut” expr ”. struct Packed { not_aligned_field: i32, } fn main() { let p = Pacaichte { not_aligned_field: 1_82 }; // Seann dòigh air puing amh a chruthachadh let ptr = std::ptr::addr_of!(p.not_aligned_field); // Dòigh Ăšr air puing amh a chruthachadh let ptr = &raw const p.not_aligned_field; leig val = mĂŹ-shĂ bhailte { ptr.read_unaligned() }; }
  • Tha e comasach a-nis gnĂŹomhan sĂ bhailte agus seasmhach a mhĂŹneachadh le beatha ‘statach’ taobh a-staigh blocaichean taobh a-muigh leis a’ fheart “mĂŹ-shĂ bhailte” (roimhe seo, cha b’ urrainn ach am feart “neo-shĂ bhailte” a bhith aig a h-uile eileamaid ann an “taobh a-muigh cunnartach”)): taobh a-muigh cunnartach { pub TAU statach sĂ bhailte: f64; taigh-seinnse sĂ bhailte fn sqrt(x: f64) -> f64; taigh-seinnse neo-shĂ bhailte fn strlen(p: *const u8) -> cleachd; }
  • Tha na buadhan no_mangle, link_section agus export_name, a dh’ fhaodadh giĂšlan neo-mhĂŹnichte leantainn, air am meas a-nis mĂŹ-shĂ bhailte agus feumach air bratach “mĂŹ-shĂ bhailte” shoilleir, mar eisimpleir: #[unsafe(no_mangle)] pub fn my_global_function() { }
  • Tha maidseadh pĂ train a’ leigeil le seòrsaichean falamh a bhith air an leum, leithid “enum Void {}” no structaran le raon falamh a chithear. cleachd std ::tionndaidh ::Infallible; pub fn unwrap_without_panic (x: Toradh ) -> T { leig Ok(x) = x; // Faodar “mearachd” a leum x }
  • Tha giĂšlan Ă bhaisteach aig na seòrsaichean airson Ă ireamhan puing-fleòdraidh (f32 agus f64) nuair a thathar a’ giullachd luachan NaN neo-Ă ireamhach (0.0/0.0), agus leigidh iad cuideachd gnĂŹomhachd puing-fleòdraidh a chleachdadh ann an const fn.
  • Tha cuir a-steach co-chruinneachadh a’ toirt comas oparands leis a’ bhuadh “const” a chleachdadh gus luachan Ă ireamhach iomlan a chleachdadh gu dĂŹreach gun a bhith gan stòradh ann an clĂ r an-toiseach. const MSG: &str = "Hello, a shaoghal!\n"; mĂŹ-shĂ bhailte { core::arch::asm!("mov rdx, {LEN} // thèid an stiĂšireadh 'mov rdx, 14′" a chruthachadh, LEN = const MSG.len(), … ); }
  • Tha dèiligeadh ri abairtean leis a’ bhuadh “statach” ceadaichte ann an co-theacsa sĂ bhailte gun a bhith a’ mĂŹneachadh bloc mĂŹ-shĂ bhailte (chan eil na gnĂŹomhaichean “&raw mut” agus “&raw const” a’ toirt buaidh air luach an operand agus dĂŹreach a’ cruthachadh puing dha): static mut STATIC_MUT: Seòrsa = Seòrsa :: Ăšr( ); taobh a-muigh "C" { statach EXTERN_STATIC: Seòrsa; } fn main() {let static_mut_ptr = &raw mut STATIC_MUT; let extern_static_ptr = &raw const EXTERN_STATIC; }
  • Chaidh cuibhreann Ăšr den API a ghluasad chun roinn de stĂ ball, a’ toirt a-steach dòighean agus buileachadh feartan air an socrachadh:
    • std :: snĂ ithlean :: Builder :: spawn_unchecked
    • std :: str :: CharIndices :: offset
    • std :: roghainn :: Roghainn :: is_none_or
    • [T] :: air a sheòrsachadh
    • [T] :: air a rèiteachadh_by
    • [T] :: is_sorted_by_key
    • Iterator :: air a rèiteachadh
    • Iterator ::is_sorted_by
    • Iterator ::is_sorted_by_key
    • std :: Ă m ri teachd :: Deiseil :: into_inner
    • std ::iter :: ath-aithris_n
    • impl DoubleEndedIterator for Take

      Source: fosgailtenet.ru

Cuir beachd ann