Sgaoileadh cànan prògramadh Rust 1.74. Sgrùdadh RustVMM. Ath-sgrìobhadh Binder ann an Rust

Chaidh foillseachadh cànan prògramadh adhbhar coitcheann Rust 1.74, 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:

  • Chuir sinn ris a’ chomas air sgrùdaidhean lint a rèiteachadh tron ​​​​fhaidhle Cargo.toml leis a’ mhanaidsear pacaid follaiseach. Gus suidheachaidhean lint a mhìneachadh, leithid an ìre freagairt (toirmisg, diùltadh, rabhadh, cead), thathas a’ moladh earrannan ùra “[lints]” agus “[workspace.lints]”, anns a bheilear a’ toirt aire do atharrachaidhean nuair a thathar a’ dèanamh co-dhùnadh mu dheidhinn ath-thogail. Mar eisimpleir, an àite a bhith a’ sònrachadh nam brataichean “-F”, “-D”, “-W” agus “-A” nuair a bhios tu a’ cruinneachadh no a’ cur na “#! [forbid(unsafe_code)]” agus “#![àicheadh ​​(clippy) :” buadhan a' chòd) :enum_glob_use)]" a-nis a chleachdadh ann am manifesto Cargo: [lints.rust] unsafe_code = "toirmisg" [lints.clippy] enum_glob_use = "aicheadh"
  • Tha manaidsear pacaid Crate air comas a chuir ris gus dearbhadh nuair a tha iad a’ ceangal ri stòr. Tha am pasgan bunaiteach a’ toirt a-steach taic airson a bhith a’ cur paramadairean dearbhaidh ann an stòran teisteanais Linux (stèidhichte air libsecret), macOS (Keychain) agus Windows (Manaidsear Creideas Windows), ach tha an siostam air a dhèanamh modular an toiseach agus leigidh e leat obair a chuir air dòigh le diofar sholaraichean airson stòradh is stòradh. a’ gineadh comharran, mar eisimpleir, chaidh plugan ullachadh airson a bhith a’ cleachdadh manaidsear facal-faire 1Password. Dh’ fhaodadh gum bi feum aig an stòr air dearbhadh airson gnìomhachd sam bith, chan ann a-mhàin gus dearbhadh gun deach pacaidean fhoillseachadh. ~/.cargo/config.toml [clàradh] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Chaidh taic airson ro-mheasaidhean seòrsa tilleadh (impl_trait_projections) a dhèanamh seasmhach, a’ leigeil le Self and T ::Assoc a bhith air an ainmeachadh ann an seòrsachan tilleadh leithid “async fn” agus “-> impl Trait”. struct Wrapper <'a, T>(&'a T); ... } } trait Trait < 'a> { seòrsa Assoc; fn new() -> Fèin ::Assoc; } impl Trait <'_> airson () { seòrsa Assoc = (); fn new() {} } // Seòrsaichean tilleadh neo-shoilleir a tha a' toirt iomradh air seòrsa co-cheangailte: impl <'a, T: Trait <'a>> Wrapper <'a, T> { async fn mk_assoc() -> T ::Assoc { /* … */ } fn a_few_assocs() -> impl Iterator { /* … */ } }
  • Chaidh cuibhreann ùr den API a ghluasad chun roinn de stàball, a’ toirt a-steach dòighean agus buileachadh feartan air an socrachadh:
  • Tha am feart “const”, a tha a’ dearbhadh comasachd a chleachdadh ann an co-theacsa sam bith an àite seasmhach, air a chleachdadh anns na gnìomhan:
    • bunaiteach:: mem::transmute_copy
    • str::is_ascii
    • [u8] ::is_ascii
    • bunaiteach::num::Saturating
    • impl Bho airson std :: pròiseas :: Stdio
    • impl Bho airson std :: pròiseas :: Stdio
    • impl Bho airson std :: pròiseas :: Leanabh {Stdin, Stdout, Stderr}
    • impl Bho airson std :: pròiseas :: Leanabh {Stdin, Stdout, Stderr}
    • std ::ffi :: OsString :: from_encoded_bytes_unchecked
    • std ::ffi :: OsString :: into_encoded_bytes
    • std ::ffi :: OsStr :: from_encoded_bytes_unchecked
    • std ::ffi :: OsStr :: as_encoded_bytes
    • std :: io :: Mearachd :: eile
    • impl TryFrom airson u16
    • impidh Bho <&[T; N]> airson Vec
    • impidh Bho <&mut[T; N]> airson Vec
    • impidh Bho <[T; N]> airson Arc<[T]>
    • impidh Bho <[T; N]> airson Rc<[T]>
  • Tha an inneal-cruinneachaidh, an inneal, an leabharlann àbhaisteach, agus na h-innealan a chaidh a ghineadh le tagraidhean air àrdachadh a thoirt air riatanasan airson àrd-ùrlaran Apple, a-nis ag iarraidh co-dhiù macOS 10.12 Sierra, iOS 10, agus tvOS 10 a chaidh a leigeil ma sgaoil ann an 2016 airson a ruith.
  • Chaidh an treas ìre de thaic a chuir an gnìomh airson an àrd-ùrlar i686-pc-windows-gnullvm. 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.
  • Chaidh an dàrna ìre de thaic airson an àrd-ùrlar targaid loongarch64-unknown-none a chuir an gnìomh. Tha an dàrna ìre de thaic a’ toirt a-steach gealltanas co-chruinneachaidh.

A bharrachd air an sin, faodar dà thachartas co-cheangailte ris a’ chànan Rust a thoirt fa-near:

  • Tha an OSTIF (Maoin Leasachaidh Teicneòlais Stòr Fosgailte), a chaidh a chruthachadh gus tèarainteachd phròiseactan stòr fosgailte a neartachadh, air toraidhean sgrùdadh air pròiseact RustVMM fhoillseachadh, a bheir seachad co-phàirtean airson a bhith a’ cruthachadh hypervisors a tha sònraichte do ghnìomhachd agus sgrùdairean innealan brìgheil (VMMn). Tha companaidhean leithid Intel, Alibaba, Amazon, Google, Linaro agus Red Hat a’ gabhail pàirt ann an leasachadh a’ phròiseict. Thathas a’ leasachadh hypervisors Intel Cloud Hypervisor agus Dragonball stèidhichte air RustVMM. Dhaingnich an sgrùdadh càileachd àrd bunait còd agus cleachdadh dhòighean anns an ailtireachd agus buileachadh a tha ag amas air an tèarainteachd as àirde a choileanadh. Rè an sgrùdaidh, chaidh 6 duilgheadasan a chomharrachadh nach tug buaidh dhìreach air sàbhailteachd.
  • Thug Google a-steach buileachadh ùr den inneal conaltraidh eadar-phròiseas Binder, air ath-sgrìobhadh sa chànan Rust, gu liosta puist leasaiche kernel Linux. Chaidh an ath-obair a dhèanamh mar phàirt de phròiseact gus tèarainteachd a neartachadh, dòighean prògramadh tèarainte adhartachadh agus èifeachdas a bhith ag aithneachadh dhuilgheadasan nuair a bhios tu ag obair le cuimhne ann an Android (tha timcheall air 70% de na so-leòntachd cunnartach a chaidh a chomharrachadh ann an Android air adhbhrachadh le mearachdan nuair a bhios tu ag obair le cuimhne ). Tha buileachadh Binder in Rust air co-ionannachd a choileanadh ann an gnìomhachd leis an dreach tùsail anns a’ chànan C, air a dhol seachad air a h-uile deuchainn AOSP (Android Open-Source Project) agus faodar a chleachdadh gus deasachaidhean obrach de firmware a chruthachadh. Tha coileanadh an dà bhuileachadh timcheall air an aon ìre (sgaraidhean taobh a-staigh -1.96% agus +1.38%).

Source: fosgailtenet.ru

Cuir beachd ann