Sgaoileadh cànain prògramaidh Rust 1.57

Chaidh foillseachadh cànan prògramadh an t-siostaim Rust 1.57, 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 ag amas air sàbhailteachd cuimhne, a’ toirt seachad riaghladh cuimhne fèin-ghluasadach, agus a’ toirt seachad dòigh air co-shìnteachd àrd-obrach a choileanadh gun a bhith a’ cleachdadh inneal-cruinneachaidh sgudail no ùine ruith (tha ùine ruith air a lughdachadh gu toiseach tòiseachaidh is cumail suas an leabharlainn àbhaisteach).

Bidh riaghladh cuimhne fèin-ghluasadach Rust a’ sàbhaladh an leasaiche bho mhearachdan nuair a bhios e 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.

Prìomh innleachdan:

  • Chaidh cleachdadh a’ mhacro “panic!” a dhèanamh seasmhach. ann an co-theacsan a chaidh a chruthachadh aig àm cur ri chèile, leithid dearbhaidhean “const fn”. A bharrachd, a bharrachd air a bhith a 'cleachdadh "panic!" tha dearbhaidhean const a’ ceadachadh am macro “assert!” a chleachdadh. agus cuid de APIan leabharlainn àbhaisteach eile. Chan eil seasmhachd fhathast a’ còmhdach a’ bhun-structair cruthachaidh gu lèir, mar sin mar a tha e an-dràsta am macro “panic!” cha ghabh a chleachdadh ach le teudan staitigeach (panic!(“…)) no le luach singilte “&str” nuair a chuireas tu (panic! ("{}", a)) an àite, a bu chòir a bhith cuingichte gu bhith a’ cur “{” an àite }" gun fòrmatadh a dhèanamh air sònrachaidhean is seòrsaichean eile. Anns an àm ri teachd, thèid iomchaidheachd macros ann an co-theacsan seasmhach a leudachadh, ach tha na comasan seasmhach gu leòr mar-thà gus dearbhaidhean dearbhaidh a dhèanamh aig an ìre cruinneachaidh: const _: () = dearbhaich!(std :: mem::size_of ::() == 64 ); const _: () = dearbhaich!(std::mem::size_of::() == 8);
  • Tha manaidsear pacaid Cargo a’ ceadachadh pròifilean a chleachdadh le ainmean neo-riaghailteach, gun a bhith cuibhrichte gu “dev”, “release”, “test” agus “bench”. Mar eisimpleir, gus optimization a chomasachadh aig an ìre ceangail (LTO) dìreach nuair a thèid na co-chruinneachaidhean toraidh deireannach a chruthachadh, faodaidh tu pròifil “riochdachaidh” a chruthachadh ann an Cargo.toml agus am bratach “lto = true” a chuir ris. Ach, nuair a tha thu a’ mìneachadh do phròifil fhèin, feumaidh tu pròifil a tha ann mu thràth a shònrachadh gus na roghainnean bunaiteach a shealbhachadh bhuaithe. Tha an eisimpleir gu h-ìosal a’ cruthachadh pròifil “riochdachaidh” a chuireas ris a’ phròifil “release” le bhith a’ toirt a-steach a’ bhratach “lto = true”. Tha am pròifil fhèin air a chuir an gnìomh le bhith a’ gairm cargo leis an roghainn “-profile production”, agus thèid na stuthan cruinneachaidh a chuir anns an eòlaire “targaid / cinneasachadh”. [profile.production] inherits = "release" lto = fìor
  • Chaidh cleachdadh try_reserve airson na seòrsaichean Vec, String, HashMap, HashSet agus VecDeque a dhèanamh seasmhach, a leigeas leat àite a ghlèidheadh ​​​​ro-làimh airson àireamh sònraichte de eileamaidean de sheòrsa sònraichte gus tricead gnìomhachd riarachadh cuimhne a lughdachadh agus a sheachnadh tubaistean rè obrachadh air sgàth dìth cuimhne.
  • Tha e ceadaichte macros a shònrachadh le braces lùbach ann an abairtean mar "m!{ .. }.method()" agus "m!{ .. }?".
  • Chaidh coileanadh an fhaidhle::read_to_end agus read_to_string gnìomhan a mheudachadh.
  • Chaidh taic airson sònrachadh Unicode ùrachadh gu dreach 14.0.
  • Leudaich sinn an àireamh de ghnìomhan le comharradh “#[must_use]” gus rabhadh a thoirt seachad ma thèid an luach tilleadh a leigeil seachad, a chuidicheas le bhith ag aithneachadh mhearachdan a dh’ adhbhraich le bhith a’ gabhail ris gun atharraich gnìomh luachan seach luach ùr a thilleadh.
  • Cùl-taic deuchainneach air a chur ris airson gineadh còd a’ cleachdadh libgccjit.
  • Chaidh cuibhreann ùr den API a ghluasad chun roinn de stàball, a’ toirt a-steach dòighean agus buileachadh feartan air an socrachadh:
    • [T; N] :: as_mut_slice
    • [T; N]:: as_slice
    • cruinneachaidhean ::TryReserveError
    • HashMap :: feuch_reserve
    • HashSet :: feuch_reserve
    • String :: feuch_reserve
    • String :: try_reserve_exact
    • Vec :: feuch_reserve
    • Vec :: feuch_reserve_exact
    • VecDeque :: feuch_reserve
    • VecDeque :: feuch_reserve_exact
    • Iterator ::mapa_fhad
    • iter::MapWhile
    • proc_macro :: tha_ ri fhaighinn
    • Òrdugh:: get_program
    • Òrdugh:: get_args
    • Òrdugh:: get_envs
    • Òrdugh:: get_current_dir
    • CommandArgs
    • CommandEnvs
  • Tha am feart “const”, a tha a’ dearbhadh an gabh a chleachdadh ann an co-theacs sam bith an àite a bhith seasmhach, air a chleachdadh ann an sanas gnìomh:: unreachable_unchecked.
  • Chaidh an treas ìre de thaic a chuir an gnìomh airson an armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi agus armv7a-kmc- àrd-ùrlaran solid_asp3-eabihf. Tha an treas ìre a’ toirt a-steach taic bhunaiteach, ach às aonais deuchainn fèin-ghluasadach, foillseachadh toglaichean oifigeil, no sgrùdadh an gabh an còd a thogail.

Source: fosgailtenet.ru

Cuir beachd ann