Rust 1.82 scaoileadh. Brabhsálaí nua bunaithe ar Rust. Ag baint úsáide as meirge i Volvo

Tá scaoileadh na teanga ríomhchláraithe ilchuspóireach Rust 1.82, a bhunaigh an tionscadal Mozilla, ach atá forbartha anois faoi choimirce na heagraíochta neamhspleách neamhbhrabúis Rust Foundation, foilsithe. Díríonn an teanga ar shábháilteacht chuimhne agus cuireann sé bealaí ar fáil chun comhthreomhaireacht ard poist a bhaint amach agus úsáid á baint as bailitheoir truflais agus am rite a sheachaint (laghdaítear am rite go buntúsú agus cothabháil na leabharlainne caighdeánach).

Sábhálann modhanna láimhseála cuimhne Rust an forbróir ó earráidí nuair a bhíonn leideanna á n-ionramháil agus cosnaíonn siad i gcoinne fadhbanna a thagann chun cinn mar gheall ar láimhseáil cuimhne ar leibhéal íseal, mar shampla rochtain a fháil ar limistéar cuimhne tar éis é a shaoradh, leideanna nialais a dhíroghnú, róchaiteachas maoláin, etc. Chun leabharlanna a dháileadh, tógáil a sholáthar agus spleáchais a bhainistiú, forbraíonn an tionscadal an bainisteoir pacáiste lasta. Tacaítear leis an stór crates.io chun leabharlanna a óstáil.

Cuirtear sábháilteacht chuimhne ar fáil i Rust ag am tiomsaithe trí sheiceáil tagartha, súil a choinneáil ar úinéireacht réad, súil a choinneáil ar shaolréanna réad (scóip), agus measúnú a dhéanamh ar cheart an rochtain chuimhne le linn fhorghníomhú an chóid. Soláthraíonn Rust cosaint freisin i gcoinne ró-shreabhadh slánuimhir, éilíonn túsú éigeantach luachanna athraitheacha roimh úsáid, láimhseálann sé earráidí níos fearr sa leabharlann caighdeánach, cuireann sé coincheap na dtagairtí agus na n-athróg do-athraithe i bhfeidhm de réir réamhshocraithe, cuireann clóscríobh statach láidir ar fáil chun earráidí loighciúla a íoslaghdú.

Príomh-nuálaíochtaí:

  • Tá an t-ordú “info” curtha leis an mbainisteoir pacáiste lasta chun faisnéis faoi phacáiste a thaispeáint sa stór.
  • Tacaíocht bhreise don chomhréir "use<..>" in "impl Trait", a shonraíonn faisnéis faoi chineálacha folaithe. Mar shampla, sonraíonn "impl Trait + use<'x, T>" nach gceadaítear ach na paraiméadair "x" agus "T" a úsáid i gcineál folaithe.
  • Tá comhréir ar leith molta chun amhthreoir a chruthú, a chuirfear in ionad na macraí a úsáideadh roimhe seo: tá an t-oibreoir “&raw const expr” curtha in ionad na macra “addr_of!(expr)”, agus tá an macra “addr_of_mut!(expr)” curtha ina ionad ag an oibreoir “&raw mut” expr”. struct Pacáilte { not_aligned_field: i32, } fn príomh() { ligean p = Pacáilte { not_aligned_field: 1_82 }; // Seanbhealach chun pointeoir amh a chruthú a ligean ptr = std::ptr::addr_of!(p.not_aligned_field); // Bealach nua chun pointeoir amh a chruthú le ptr = &raw const p.not_aligned_field; lig val = neamhshábháilte { ptr.read_unaligned() }; }
  • Is féidir feidhmeanna agus tairisigh shábháilte a shainiú le saolré ‘statach’ taobh istigh de bhloic sheachtracha leis an tréith “neamhshábháilte” (roimhe seo, ní fhéadfadh ach an tréith “neamhshábháilte” a bheith ag gach eilimint in “seachtrach neamhshábháilte”)): taobh amuigh neamhshábháilte { pub safe TAU statach : f64; tábhairne sábháilte fn sqrt(x: f64) -> f64; tábhairne neamhshábháilte fn strlen(p: *const u8) -> úsáid; }
  • Meastar anois go bhfuil na tréithe no_mangle, link_section agus export_name, a bhféadfadh iompar neamhshainithe a bheith mar thoradh orthu, neamhshábháilte agus go dteastaíonn bratach “neamhshábháilte” shainráite uathu, mar shampla: #[unsafe(no_mangle)] pub fn my_global_function() { }
  • Ligeann meaitseáil patrún do chineálacha folamh a scipeáil, mar shampla "enum Void {}" nó struchtúir le réimse folamh infheicthe. bain úsáid as std::tiontú::Infallible; tábhairne fn unwrap_without_panic (x: Toradh ) -> T { lig OK(x) = x; // Is féidir "Earráid" a scipeáil x }
  • Tá iompar caighdeánaithe ag na cineálacha le haghaidh uimhreacha snámhphointe (f32 agus f64) agus iad ag próiseáil luachanna NaN neamh-uimhriúla (0.0/0.0), agus ceadaíonn siad freisin oibríochtaí snámhphointe a úsáid i const fn.
  • Soláthraíonn iatáin cóimeála an cumas oibriúcháin a úsáid leis an tréith “const” chun luachanna uimhriúla slánuimhreacha a úsáid go díreach gan iad a stóráil i gclár ar dtús. const MSG: &str = "Dia duit, ar domhan!\n"; neamhshábháilte { core::arch::asm!( “mov rdx, {LEN} // ginfear an treoir 'mov rdx, 14′", LEN = const MSG.len(), … ); }
  • Ceadaítear dul i ngleic le habairtí leis an aitreabúid “statach” i gcomhthéacs sábháilte gan bloc neamhshábháilte a shainiú (ní chuireann na hoibreoirí “&raw mut” agus “&raw const” isteach ar luach an operand agus ní chruthaíonn siad ach pointeoir chuige): statach mut STATIC_MUT: Cineál = Cineál::nua( ); seachtrach "C" { statach EXTERN_STATIC: Cineál; } fn príomh() { let static_mut_ptr = &raw mut STATIC_MUT; lig extern_static_ptr = &raw const EXTERN_STATIC; }
  • Aistríodh cuid nua den API chuig an gcatagóir de chobhsaí, lena n-áirítear modhanna agus cur i bhfeidhm na dtréithe a chobhsú:
    • std::snáithe::Tógálaí::spawn_dísheiceáil
    • std::str::CharIndices::fritháireamh
    • std :: rogha :: Rogha :: is_none_or
    • [T] ::tá_sórtáilte
    • [T] ::tá_sórtáilte_de réir
    • [T] ::is_sorted_by_eochair
    • Iterator::tá_sórtáilte
    • Iterator::is_sorted_by
    • Iterator::is_sorted_by_eochair
    • std::todhchaí::Réidh:: isteach_inner
    • std::iter:: athrá_n
    • impl DoubleEndedIterator for Take

      Foinse: oscailtenet.ru

Add a comment