Sgaoileadh cànain prògramaidh Rust 1.34

Chaidh cànan prògramadh an t-siostaim Rust 1.34, a chaidh a leasachadh le pròiseact Mozilla, fhoillseachadh. Bidh 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.

Bidh riaghladh cuimhne fèin-ghluasadach Rust a’ saoradh an leasaiche bho làimhseachadh phuing agus a’ dìon an aghaidh dhuilgheadasan ag èirigh bho làimhseachadh cuimhne aig ìre ìosal, leithid slighean cuimhne às deidh an-asgaidh, ro-aithrisean puing null, cus bufair, agus an leithid. Gus leabharlannan a sgaoileadh, dèanamh cinnteach à co-chruinneachadh agus riaghladh eisimeileachd, tha am pròiseact a’ leasachadh manaidsear pacaid Cargo, a leigeas leat na leabharlannan a tha a dhìth airson a’ phrògram fhaighinn ann an aon bhriogadh. Tha an stòr crates.io a’ faighinn taic airson aoigheachd a thoirt do leabharlannan.

Prìomh innleachdan:

  • Tha manaidsear pacaid Cargo air innealan a chuir ris gus obrachadh le clàran pacaid eile a dh’ fhaodas a bhith còmhla ri clàr poblach crates.io. Mar eisimpleir, faodaidh luchd-leasachaidh thagraidhean seilbh a-nis an clàr prìobhaideach aca fhèin a chleachdadh, a dh'fhaodar a chleachdadh nuair a tha iad a’ clàradh eisimeileachd ann an Cargo.toml, agus modal dreach coltach ri crates.io a chuir an sàs airson am bathar, a bharrachd air a bhith a’ toirt iomradh air eisimeileachd air an dà chlàr. io agus do d' chlàir fèin.

    Gus clàr-clàraidh taobh a-muigh a chur ris ~/.cargo/config
    tha roghainn ùr “my-registry” air a thoirt seachad anns an roinn “[clàran]”, agus chaidh roghainn “clèithe eile” a chuir ris gus iomradh a thoirt air a’ chlàr taobh a-muigh ann an eisimeileachd ann an Cargo.toml anns an roinn “[eisimeileachd]”. Gus ceangal ri clàr a bharrachd, dìreach cuir an comharra dearbhaidh anns an fhaidhle ~/.cargo/credentials agus ruith an àithne
    "cargo login --registry=my-registry" agus airson pasgan fhoillseachadh -
    "cargo publish -registry=my-registry";

  • Chuir sinn làn thaic ris airson a bhith a’ cleachdadh a’ ghnìomhaiche “?”. ann an doctests, a leigeas leat còd eisimpleir bho na sgrìobhainnean a chleachdadh mar dheuchainnean. Gnìomhaiche roimhe
    "?" faodar a chleachdadh gus mearachdan a làimhseachadh rè coileanadh deuchainn a-mhàin an làthair a’ ghnìomh “fn main ()” no anns na gnìomhan “#[test]”;

  • Ann am buadhan gnàthaichte a tha air am mìneachadh le bhith a’ cleachdadh macros modh-obrach, tha e comasach seataichean neo-riaghailteach de chomharran a chleachdadh (“#[attr($tokens)]”, “#[attr[$tokens]] agus #[attr{$tokens}]”). Roimhe sin, cha b’ urrainnear eileamaidean a shònrachadh ach ann an cruth craoibhe/ath-chuairteachaidh le bhith a’ cleachdadh litrichean sreang, mar eisimpleir “#[foo(bar, baz(quux, foo =“bar”))]”, ach a-nis tha e comasach àireamhan a chleachdadh (’ #[raon (0. .10)]') agus structaran mar "#[bound(T: MyTrait)]";
  • Chaidh na feartan TryFrom agus TryInto a dhèanamh seasmhach, a’ ceadachadh atharrachaidhean seòrsa le làimhseachadh mhearachdan. Mar eisimpleir, bidh dòighean mar from_be_bytes le seòrsachan integer a’ cleachdadh arrays mar chur-a-steach, ach bidh an dàta gu tric a’ tighinn ann an seòrsa Slice, agus tha e duilich a bhith ag atharrachadh eadar arrays agus sliseagan le làimh. Le cuideachadh bho fheartan ùra, faodar an obrachadh ainmichte a dhèanamh air an itealan tro ghairm gu .try_into(), mar eisimpleir, “let num = u32::from_be_bytes(slice.try_into()?)”. Airson atharrachaidhean a bhios an-còmhnaidh soirbheachail (mar eisimpleir, bho sheòrsa u8 gu u32), chaidh seòrsa mearachd do-chreidsinneach a chuir ris gus leigeil le cleachdadh follaiseach
    TryFrom airson a h-uile gnìomh a tha ann mu thràth de “From”;

  • Rinn sinn dìmeas air a’ ghnìomh CommandExt ::before_exec, a leig le inneal-làimhseachaidh a chuir gu bàs ron cho-ghnìomhaiche a chaidh a chuir gu bàs ann an co-theacs pròiseas cloinne a chaidh a chuir air bhog às deidh a’ ghairm forc (). Fo chumhachan mar sin, dh’ fhaodadh cuid de ghoireasan a’ phròiseas phàrant, leithid tuairisgeulan fhaidhlichean agus raointean cuimhne mapate, a bhith air an dùblachadh, a dh’ fhaodadh leantainn gu giùlan neo-mhìnichte agus obrachadh ceàrr leabharlannan.
    An àite before_exec, thathas a’ moladh an gnìomh mì-shàbhailte CommandExt :: pre_exec a chleachdadh.

  • Seòrsan àireamhan atamach soidhnichte agus gun ainm-sgrìobhte ann am meud bho 8 gu 64 pìosan (mar eisimpleir, AtomicU8), a bharrachd air seòrsachan soidhnichte NonZeroI[8|16|32|54|128].
  • Chaidh cuibhreann ùr den API a ghluasad dhan roinn stàbaill, a’ gabhail a-steach an gin :: type_id, Mearachd:: type_id, slice :: sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant :: checked_[add|sub ] agus chaidh dòighean SystemTime a dhèanamh seasmhach :: checked_[add|sub]. Tha an iter::from_fn agus iter ::successors gnìomhan air an socrachadh;
  • Airson a h-uile seòrsa integer, tha na dòighean checked_pow, saturating_pow, wrapping_pow agus overflowing_pow air an cur an gnìomh;
  • Chuir sinn ris a’ chomas air optimizations a chomasachadh aig an ìre ceangail le bhith a’ sònrachadh an roghainn togail “-C linker-plugin-lto” (bidh rustc a’ cur ri chèile còd Rust a-steach do bitcode LLVM, a leigeas le optimizations LTO a chuir an sàs).

Source: fosgailtenet.ru

Cuir beachd ann