Ho lokolloa ha puo ea lenaneo la Rust 1.74. Tlhahlobo ea RustVMM. Ho Ngola hape Binder ho Rust

Ho lokolloa ha puo ea lenaneo la Rust 1.74 ka kakaretso, e thehiloeng ke morero oa Mozilla, empa hona joale e ntlafalitsoeng ka tlas'a ts'ebetso ea mokhatlo o ikemetseng o sa etseng phaello oa Rust Foundation, e hatisitsoe. Puo e shebana le ts'ireletso ea mohopolo 'me e fana ka mekhoa ea ho finyella mosebetsi o phahameng oa ho ts'oara mosebetsi ha o ntse o qoba ho sebelisoa ha moqoqo oa lithōle le nako ea ho sebetsa (nako ea ho sebetsa e fokotsehile ho qala ho qala le ho boloka laebrari e tloaelehileng).

Mekhoa ea ho sebetsana le memori ea Rust e boloka moqapi ho tsoa liphosong ha a laola lintlha le ho sireletsa khahlanong le mathata a hlahang ka lebaka la ho tšoara memori ea boemo bo tlaase, joalo ka ho fumana sebaka sa memori ka mor'a hore e lokolloe, ho tlosa li-null pointer, buffer overruns, joalo-joalo. Ho aba lilaebrari, ho fana ka meaho le ho laola litšepe, projeke e nts'etsapele mookameli oa thepa ea Cargo. Sebaka sa polokelo ea crates.io se tšehetsoa bakeng sa lilaebrari tse amohelang batho.

Tšireletseho ea memori e fanoa ka Rust ka nako ea ho bokella ka ho hlahloba litšupiso, ho boloka tlaleho ea botho ba ntho, ho boloka tlaleho ea bophelo ba ntho (scopes), le ho lekola ho nepahala ha phihlello ea mohopolo nakong ea ts'ebetso ea khoutu. Rust e boetse e fana ka ts'ireletso khahlano le phallo e felletseng, e hloka ho qalisoa ha boleng bo fapaneng pele e sebelisoa, e sebetsana le liphoso hamolemo laebraring e tloaelehileng, e sebelisa mohopolo oa litšupiso tse ke keng tsa fetoha le mefuta e fapaneng ka mokhoa o ikhethileng, e fana ka ho thaepa ho tiileng ho fokotsa liphoso tse utloahalang.

Litlhahiso tse ka sehloohong:

  • E kentse bokhoni ba ho lokisa lint checks ka faele ea Cargo.toml ka pontšo ea mookameli oa sephutheloana. Ho hlalosa litlhophiso tsa lint, joalo ka boemo ba karabo (thibela, latola, hlokomelisa, lumella), likarolo tse ncha "[lints]" le "[workspace.lints]" li sisintsoe, liphetoho tseo ho tsona li eloang hloko ha ho etsoa qeto mabapi le ho aha bocha. Ka mohlala, ho e-na le ho hlakisa lifolakha tsa “-F”, “-D”, “-W” le “-A” ha u kopanya kapa u eketsa “#![hanela(unsafe_code)]” le “#![deny(clippy) :” litšoaneleho tsa khoutu) :enum_glob_use)]" joale e ka sebelisoa ho Cargo manifest: [lints.rust] unsafe_code = "thibela" [lints.clippy] enum_glob_use = "hana"
  • Motsamaisi oa sephutheloana sa Crate o kentse bokhoni ba ho netefatsa ha o hokela sebakeng sa polokelo. Kabo ea mantlha e kenyelletsa ts'ehetso ea ho beha liparamente tsa netefatso mabenkeleng a netefatso ea Linux (e thehiloeng ho libsecret), macOS (Keychain) le Windows (Windows Credential Manager), empa sistimi e ile ea etsoa ka mokhoa o tloaelehileng mme e u lumella ho hlophisa mosebetsi le bafani ba fapaneng bakeng sa ho boloka le ho boloka. ho hlahisa li-tokens, mohlala, plugin e lokiselitsoe ho sebelisa molaoli oa password oa 1Password. Netefatso e kanna ea hlokoa ke polokelo bakeng sa ts'ebetso efe kapa efe, eseng feela ho netefatsa hore liphutheloana li hatisitsoe. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Ts'ehetso ea likhakanyo tsa mofuta oa ho khutlisa (impl_trait_projections) e tsitsitse, e lumella Self le T :: Assoc ho boleloa mefuteng ea ho khutlisa e kang "async fn" le "-> impl Trait". struct Wrapper<'a, T>(&'a T); // Mefuta e khutlang e sa bonahaleng e buang ka `Self`: impl Wrapper<'_, ()> {async fn async_fn() -> Self {/* … */ } fn impl_trait() -> impl Iterator { /* … */ } } tšobotsi Trait<'a> {mofuta oa Assoc; fn e ncha () -> Self :: Assoc; } impl Trait <'_> bakeng sa () {mofuta oa Assoc = (); fn e ncha() {} } // Mefuta ea ho khutla e sa bonahaleng e buang ka mofuta o amanang le ona: impl<'a, T: Trait<'a>> Wrapper<'a, T> {async fn mk_assoc() -> T::Assoc {/* … */ } fn a_few_assocs() -> impl Iterator {/* … */ }}
  • Karolo e ncha ea API e fetiselitsoe sehlopheng sa ba tsitsitseng, ho kenyelletsa le mekhoa le ts'ebetsong ea mekhoa e tsitsitseng:
  • Sebopeho sa "consst", se khethollang monyetla oa ho se sebelisa maemong afe kapa afe ho fapana le li-constants, se sebelisoa mesebetsing:
    • mantlha::mem::transmute_copy
    • str::ke_ascii
    • [u8]::ke_ascii
    • mantlha::palo::E khotsofatsang
    • impl Ho tloha bakeng sa std::process::Stdio
    • impl Ho tloha bakeng sa std::process::Stdio
    • impl From for std::process::Child{Stdin, Stdout, Stderr}
    • impl From for 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::Phoso::tse ling
    • impl TryFrom bakeng sa u16
    • impl Ho tsoa ho <&[T; N]> bakeng sa Vec
    • impl Ho tsoa ho<&mut [T; N]> bakeng sa Vec
    • impl Ho tsoa ho<[T; N]> bakeng sa Arc<[T]>
    • impl Ho tsoa ho<[T; N]> bakeng sa Rc<[T]>
  • Moqapi, lisebelisoa tsa lisebelisoa, laeborari e tloaelehileng, le lisebelisoa tse hlahisoang ke lisebelisoa li ekelitse litlhoko tsa li-platform tsa Apple, tse seng li hloka bonyane macOS 10.12 Sierra, iOS 10, le tvOS 10 e lokollotsoeng ka 2016 ho sebetsa.
  • Boemo ba boraro ba tšehetso bo kentsoe tšebetsong bakeng sa sethala sa i686-pc-windows-gnullvm. Boemo ba boraro bo kenyelletsa ts'ehetso ea mantlha, empa ntle le tlhahlobo ea boiketsetso, meaho ea semmuso ea phatlalatso, kapa ho hlahloba hore na khoutu e ka hahuoa.
  • Boemo ba bobeli ba ts'ehetso bakeng sa sethala sa sepheo sa loongarch64-se sa tsejoeng-ha se se se kentsoe ts'ebetsong. Boemo ba bobeli ba ts'ehetso bo kenyelletsa tiiso ea kopano.

Ho feta moo, liketsahalo tse peli tse amanang le puo ea Rust li ka hlokomeloa:

  • OSTIF (Letlōle la Ntlafatso ea Theknoloji ea Open Source), e entsoeng ho matlafatsa ts'ireletso ea merero e bulehileng ea mohloli, e phatlalalitse liphetho tsa tlhahlobo ea morero oa RustVMM, e fanang ka likarolo tsa ho theha li-hypervisors tse khethehileng le li-monitor machine (VMMs). Likhamphani tse kang Intel, Alibaba, Amazon, Google, Linaro le Red Hat li kenya letsoho ntlafatsong ea morero. Intel Cloud Hypervisor le Dragonball hypervisors li ntse li ntlafatsoa ho latela RustVMM. Tlhatlhobo e netefalitse boleng bo phahameng ba motheo oa khoutu le ts'ebeliso ea mekhoa ea meaho le ts'ebetsong e reretsoeng ho fihlela ts'ireletso e phahameng. Nakong ea tlhahlobo ea lichelete, ho ile ha hlokomeloa mathata a 6 a neng a se na phello e tobileng ho polokeho.
  • Google e hlahisitse ts'ebetsong e ncha ea mokhoa oa puisano oa Binder interprocess, o ngotsoeng bocha ka puo ea Rust, lethathamong la mangolo la Linux kernel. Ts'ebetso e ncha e entsoe e le karolo ea morero oa ho matlafatsa ts'ireletso, ho khothaletsa mekhoa e sireletsehileng ea mananeo le ho eketsa bokhoni ba ho khetholla mathata ha o sebetsa ka mohopolo ho Android (hoo e ka bang 70% ea bofokoli bohle bo kotsi bo bonts'itsoeng ho Android bo bakoa ke liphoso ha o sebetsa ka mohopolo. ). Ts'ebetsong ea Binder in Rust e fihletse tekano ts'ebetsong le mofuta oa pele oa puo ea C, e fetisa liteko tsohle tsa AOSP (Android Open-Source Project) mme e ka sebelisoa ho theha likhatiso tse sebetsang tsa firmware. Ts'ebetso ea ts'ebetsong ka bobeli e batla e le boemong bo lekanang (ho kheloha ka hare ho -1.96% le + 1.38%).

Source: opennet.ru

Eketsa ka tlhaloso