Rust 1.34 scaoileadh teanga cláir

Tá an teanga ríomhchláraithe chórais Rust 1.34, arna fhorbairt ag an tionscadal Mozilla, eisithe. Díríonn an teanga ar shábháilteacht chuimhne, soláthraíonn bainistíocht cuimhne uathoibríoch, agus cuireann sé bealach ar fáil chun comhthreomhaireacht ard-tasc a bhaint amach gan bailitheoir truflais nó am rite a úsáid.

Déanann bainistíocht cuimhne uathoibríoch Rust an forbróir a shaoradh ó ionramháil pointeora agus cosnaíonn sé i gcoinne fadhbanna a eascraíonn as ionramháil cuimhne ísealleibhéil, amhail rochtain saor ó chuimhne iar-saor in aisce, dereferences pointeoir nialasach, róchaiteachas maoláin, agus a leithéidí. Chun leabharlanna a dháileadh, tionól a chinntiú agus spleáchais a bhainistiú, tá an tionscadal ag forbairt an bhainisteora pacáiste lasta, a ligeann duit na leabharlanna atá ag teastáil don chlár a fháil i gcliceáil amháin. Tacaítear leis an stór crates.io chun leabharlanna a óstáil.

Príomh-nuálaíochtaí:

  • Tá uirlisí curtha leis ag an mbainisteoir pacáiste lasta chun oibriú le clárlanna pacáiste eile ar féidir leo a bheith ar aon dul leis an gclár poiblí crates.io. Mar shampla, is féidir le forbróirí feidhmchlár dílsithe a gclár príobháideach féin a úsáid anois, ar féidir a úsáid agus spleáchais á liostú i Cargo.toml, agus samhail leagan cosúil le crates.io a chur i bhfeidhm dá gcuid táirgí, chomh maith le spleáchais a tharchur chuig an dá chliabhán. io agus chuig do chlár féin.

    Chun clárlann sheachtrach a chur le ~/.cargo/config
    soláthraítear rogha nua “mo chlárlann” sa rannán “[clárlanna]”, agus cuireadh rogha “eile-chliathbhosca” leis chun an clárlann sheachtrach i spleáchais in Cargo.toml a lua sa rannán “[spleáchais]”. Chun ceangal le clárlann bhreise, níl le déanamh ach an comhartha fíordheimhnithe a chur sa chomhad ~/.cargo/credentials agus rith an t-ordú
    "logáil lasta --registry=mo-chlár" agus chun pacáiste a fhoilsiú -
    "cargo publish -registry=mo-chlár";

  • Cuireadh tacaíocht iomlán leis chun an t-oibreoir “?” a úsáid. i ndochtúirí, a cheadaíonn duit cód samplach ón doiciméadú a úsáid mar thástálacha. Oibreoir roimhe seo
    "?" d’fhéadfaí é a úsáid chun earráidí a láimhseáil le linn na tástála a dhéanamh ach amháin i láthair na feidhme “fn main()” nó sna feidhmeanna “#[test]”;

  • I dtréithe saincheaptha sainithe ag baint úsáide as macraí nós imeachta, is féidir úsáid a bhaint as tacair treallach comharthaí (“#[attr($tokens)]”, “#[attr[$tokens]] agus #[attr{$tokens}]”) . Roimhe seo, níorbh fhéidir eilimintí a shonrú ach i bhfoirm chrainn/athchúrsach trí úsáid a bhaint as teaghlitreacha, mar shampla “#[foo(bar, baz(quux, foo =“bar”))]”, ach anois is féidir áireamháin a úsáid (' #[raon(0. .10)]') agus tógálacha amhail “#[bound(T: MyTrait)]”;
  • Tá na tréithe TryFrom agus TryInto cobhsaithe, rud a ligeann do thiontuithe cineáil le láimhseáil earráidí. Mar shampla, úsáideann modhanna cosúil le from_be_bytes le cineálacha slánuimhir eagair mar ionchur, ach is minic a thagann na sonraí i gcineál Slice, agus tá sé ina fhadhb de láimh aistriú idir arrays agus slices. Le cabhair ó shaintréithe nua, is féidir an oibríocht sonraithe a dhéanamh ar an eitilt trí ghlao chuig .try_into(), mar shampla, “let num = u32::from_be_bytes(slice.try_into()?)”. I gcás tiontuithe a n-éiríonn leo i gcónaí (mar shampla, ó chineál u8 go dtí u32), cuireadh cineál earráide dothuigthe leis chun úsáid thrédhearcach a cheadú
    TryFrom le haghaidh gach feidhmithe reatha de "Ó";

  • Rinne sé an fheidhm CommandExt::before_exec a dhícheadú, a cheadaigh láimhseálaí a fhorghníomhú roimh an exec a cuireadh i gcrích i gcomhthéacs próisis linbh a forbraíodh tar éis an ghlao forc(). Faoi choinníollacha den sórt sin, d’fhéadfaí roinnt acmhainní den phróiseas tuismitheora, amhail tuairisceoirí comhaid agus réimsí cuimhne léarscáilithe, a mhacasamhlú, rud a d’fhéadfadh iompar neamhshainithe agus oibriú mícheart na leabharlann a bheith mar thoradh air.
    In ionad before_exec, moltar an fheidhm neamhshábháilte CommandExt:: pre_exec a úsáid.

  • Cineálacha slánuimhreacha adamhach cobhsaithe sínithe agus neamhshínithe ó 8 go 64 giotán (mar shampla, AtomicU8), chomh maith le cineálacha sínithe NonZeroI[8|16|32|54|128].
  • Aistríodh cuid nua den API go dtí an chatagóir chobhsaí, lena n-áirítear Aon::type_id, Earráid::type_id, slice:: sort_by_cached_key, str::éalú_*, str::split_ascii_whitespace, Meandaracha::seiceáilte_[add|sub ] agus modhanna SystemTime cobhsaithe ::shecked_[add|fo]. Cobhsaíodh feidhmeanna an iter::from_fn agus iter::successors;
  • I gcás gach cineál slánuimhir, cuirtear na modhanna checked_pow, saturating_pow, wrapping_pow agus overflowing_pow i bhfeidhm;
  • Cuireadh leis an gcumas leas iomlán a bhaint ag an gcéim nasctha tríd an rogha tógála “-C linker-plugin-lto” a shonrú (tiomsaíonn rust cód Rust isteach i gcód giotán LLVM, rud a ligeann do leas iomlán a bhaint as LTO a chur i bhfeidhm).

Foinse: oscailtenet.ru

Add a comment