Kutulutsidwa kwa chilankhulo cha pulogalamu ya Rust 1.74. Malingaliro a kampani RustVMM. Kulembanso Binder mu Dzimbiri

Chilankhulo chothandizira anthu ambiri Rust 1.74, chomwe chinakhazikitsidwa ndi polojekiti ya Mozilla koma tsopano chapangidwa mothandizidwa ndi bungwe lodziyimira pawokha lopanda phindu la Rust Foundation, chatulutsidwa. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira ndipo chimapereka njira zopezera kufananiza kwakukulu kwa ntchito ndikupewa kugwiritsa ntchito chotolera zinyalala ndi nthawi yothamanga (nthawi yothamanga imachepetsedwa kuti ikhale yoyambira ndikukonza laibulale yokhazikika).

Njira zogwiritsira ntchito kukumbukira za Rust zimapulumutsa wopanga ku zolakwika pamene akuwongolera zolozera ndikuteteza ku zovuta zomwe zimadza chifukwa cha kukumbukira kwapang'onopang'ono, monga kupeza malo okumbukira atamasulidwa, kuchotsa zolozera zopanda pake, ma buffer overruns, etc. Kugawira malaibulale, kupereka zomanga ndi kusamalira zodalira, pulojekitiyi imapanga woyang'anira phukusi la Cargo. Malo osungiramo crates.io amathandizidwa kuti azisunga malaibulale.

Kutetezedwa kwa Memory kumaperekedwa mu Rust panthawi yophatikiza kudzera pakuwunika, kuyang'anira umwini wa chinthu, kuyang'anira nthawi ya moyo wa chinthu (ma scopes), ndikuwunika kulondola kwa kukumbukira kukumbukira panthawi yopanga ma code. Dzimbiri limaperekanso chitetezo ku kusefukira kwazinthu zonse, kumafuna kukhazikitsidwa kovomerezeka kwa zinthu zosinthika musanagwiritse ntchito, kuwongolera zolakwika bwino mulaibulale yokhazikika, kumagwiritsa ntchito lingaliro la maumboni osasinthika ndi zosintha mwachisawawa, kumapereka zilembo zolimba kuti muchepetse zolakwika zomveka.

Zatsopano zazikulu:

  • Yawonjezera kuthekera kosintha ma lint cheke kudzera pa fayilo ya Cargo.toml yokhala ndi chiwonetsero chazoyang'anira phukusi. Kufotokozera makonda a lint, monga mulingo wa mayankho (kuletsa, kukana, kuchenjeza, kulola), magawo atsopano "[lints]" ndi "[workspace.lints]" akuperekedwa, zosintha zomwe zimaganiziridwa popanga chisankho chokhudza kumanganso. Mwachitsanzo, m’malo motchula mbendera β€œ-F”, β€œ-D”, β€œ-W” ndi β€œ-A” pamene mukusonkhanitsa kapena kuwonjezera β€œ#![letsa(unsafe_code)]” ndi β€œ#![kana(clippy) :” zofananira ndi code) :enum_glob_use)]" tsopano zitha kugwiritsidwa ntchito mu chiwonetsero cha Cargo: [lints.rust] unsafe_code = "zoletsa" [lints.clippy] enum_glob_use = "kana"
  • Woyang'anira phukusi la Crate wawonjezera kuthekera kotsimikizira polumikizana ndi chosungira. Kugawa koyambira kumaphatikizapo kuthandizira kuyika magawo ovomerezeka m'masitolo ovomerezeka a Linux (kutengera libsecret), macOS (Keychain) ndi Windows (Windows Credential Manager), koma dongosololi lidapangidwa poyambirira ndipo limakupatsani mwayi wokonza ntchito ndi othandizira osiyanasiyana kuti musunge ndikusunga. kupanga zizindikiro, mwachitsanzo, pulogalamu yowonjezera yakonzedwa kuti igwiritse ntchito 1Password password manager. Kutsimikizira kungafunike ndi nkhokwe pa ntchito iliyonse, osati kungotsimikizira kuti phukusi lasindikizidwa. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Thandizo la zowonetsera zamtundu wobwerera (impl_trait_projections) zakhazikika, kulola Self ndi T :: Assoc kutchulidwa mumitundu yobwezera monga "async fn" ndi "-> impl Trait". struct Wrapper <'a, T>(&'a T); // Mitundu yobwereza yosawoneka bwino yomwe imatchula `Self`: impl Wrapper<'_, ()> {async fn async_fn() -> Self {/* … */ } fn impl_trait() -> impl Iterator {/* … */ }} chikhalidwe <'a> {mtundu wa Assoc; fn new() -> Self ::Assoc; } impl Trait <'_> kwa () {mtundu wa Assoc = (); fn new() {} } // Mitundu yobwerera ya Opaque yomwe imatchula mtundu wogwirizana: impl<'a, T: Trait<'a>> Wrapper<'a, T> {async fn mk_assoc() -> T::Assoc {/* … */ } fn a_few_assocs() -> impl Iterator {/* … */ }}
  • Gawo latsopano la API lasunthidwa ku gulu lokhazikika, kuphatikiza njira ndi kukhazikitsidwa kwa machitidwe akhazikika:
  • Lingaliro la "const", lomwe limatsimikizira kuthekera kogwiritsa ntchito mwanjira iliyonse m'malo mwa zokhazikika, limagwiritsidwa ntchito muzochita:
    • pachimake::mem::transmute_copy
    • str::ndi_ascii
    • [u8]::ndi_ascii
    • pachimake::nambala::Kukhutitsa
    • impl Kuchokera kwa std::process::Stdio
    • impl Kuchokera kwa std::process::Stdio
    • impl Kuchokera kwa std::process::Child{Stdin, Stdout, Stderr}
    • impl Kuchokera kwa std::process::Child{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::Zolakwika::zina
    • impl TryFrom pa u16
    • impl Kuchokera <&[T; N]> Za Vec
    • impl Kuchokera ku<&mut [T; N]> Za Vec
    • impl Kuchokera ku<[T; N]> kwa Arc<[T]>
    • impl Kuchokera ku<[T; N]> kwa Rc<[T]>
  • Zophatikiza, zida, laibulale yokhazikika, ndi zoyeserera zopangidwira zawonjezera zofunikira pamapulatifomu a Apple, omwe tsopano akufunika macOS 10.12 Sierra, iOS 10, ndi tvOS 10 yomwe idatulutsidwa mu 2016 kuti iyambe.
  • Gawo lachitatu lothandizira lakhazikitsidwa pa nsanja ya i686-pc-windows-gnullvm. Mulingo wachitatu umakhudzanso chithandizo choyambirira, koma popanda kuyesa kokha, kusindikiza kovomerezeka, kapena kuwona ngati code ingamangidwe.
  • Gawo lachiwiri lothandizira pa nsanja ya loongarch64-yosadziwika-palibe yakhazikitsidwa. Gawo lachiwiri la chithandizo limaphatikizapo chitsimikizo cha msonkhano.

Kuphatikiza apo, zochitika ziwiri zokhudzana ndi chilankhulo cha Dzimbiri zitha kudziwika:

  • OSTIF (Open Source Technology Improvement Fund), yomwe idapangidwa kuti ilimbikitse chitetezo cha mapulojekiti otseguka, yasindikiza zotsatira za kafukufuku wa polojekiti ya RustVMM, yomwe imapereka zigawo zopangira ma hypervisors okhudzana ndi ntchito ndi makina oyang'anira makina (VMMs). Makampani monga Intel, Alibaba, Amazon, Google, Linaro ndi Red Hat akugwira nawo ntchito yokonza ntchitoyi. Intel Cloud Hypervisor ndi Dragonball hypervisors akupangidwa kutengera RustVMM. Kufufuzako kunatsimikizira khalidwe lapamwamba la code maziko ndi kugwiritsa ntchito njira muzomangamanga ndi kukhazikitsa cholinga chofuna kupeza chitetezo chokwanira. Pa kafukufukuyu, mavuto a 6 adadziwika omwe sanakhudze mwachindunji chitetezo.
  • Google idakhazikitsa njira yatsopano yolumikizirana ndi Binder interprocess, yolembedwanso m'chinenero cha Rust, pamndandanda wamakalata a Linux kernel. Kukonzanso kunachitika ngati gawo la projekiti yolimbitsa chitetezo, kulimbikitsa njira zotetezedwa ndikuwonjezera luso lozindikira zovuta mukamagwira ntchito ndi kukumbukira mu Android (pafupifupi 70% yazovuta zonse zodziwika mu Android zimayamba chifukwa cha zolakwika mukamagwira ntchito ndi kukumbukira. ). Kukhazikitsa kwa Binder mu Rust kwakwaniritsa magwiridwe antchito ndi mtundu woyambirira wa chilankhulo cha C, kumadutsa mayeso onse a AOSP (Android Open-Source Project) ndipo angagwiritsidwe ntchito kupanga zosintha zogwira ntchito za firmware. Kuchita kwa machitidwe onsewa ndi pafupifupi pamlingo womwewo (zosiyana mkati -1.96% ndi + 1.38%).

Source: opennet.ru

Kuwonjezera ndemanga