Ukukhishwa kolimi lokuhlela lwe-Rust 1.74. Ukuhlolwa kwe-RustVMM. Ibhala kabusha i-Binder ku-Rust

Ulimi lokuhlela lwenhloso evamile i-Rust 1.74, olwasungulwa iphrojekthi ye-Mozilla kodwa manje oluthuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, lukhululiwe. Ulimi lugxile ekuphepheni kwenkumbulo futhi luhlinzeka ngezindlela zokuzuza ukufana kwemisebenzi ephezulu kuyilapho ugwema ukusetshenziswa komqoqi kadoti nesikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Izindlela zokuphatha inkumbulo kaRust zisindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi avikele ezinkingeni eziphakama ngenxa yokuphatha inkumbulo esezingeni eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukuhoxisa izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Ukuphepha kwenkumbulo kunikezwa ku-Rust ngesikhathi sokuhlanganiswa ngokuhlolwa kwereferensi, ukulandelela ubunikazi bento, ukulandelela isikhathi sokuphila kwento (izikophu), nokuhlola ukulunga kokufinyelela inkumbulo ngesikhathi sokwenziwa kwekhodi. I-Rust iphinde inikeze isivikelo ekuchichimeni okuphelele, idinga ukuqaliswa okuyisibopho kwamanani ahlukahlukene ngaphambi kokusetshenziswa, iphatha amaphutha kangcono kulabhulali evamile, isebenzisa umqondo wezithenjwa ezingaguquleki nokuguquguqukayo ngokuzenzakalelayo, inikeza ukuthayipha okuqinile okuqinile ukuze kuncishiswe amaphutha anengqondo.

Okuqanjiwe okuyinhloko:

  • Kwengezwe ikhono lokumisa ukuhlola kwe-lint ngefayela le-Cargo.toml nge-manifest yomphathi wephakheji. Ukuze uchaze izilungiselelo ze-lint, njengezinga lokuphendula (vimbela, phika, xwayisa, vumela), izigaba ezintsha “[ama-lints]” kanye ne-[workspace.lints]” ziyahlongozwa, izinguquko ezicatshangelwa lapho kuthathwa isinqumo mayelana ukwakha kabusha. Isibonelo, esikhundleni sokucacisa amafulegi “-F”, “-D”, “-W” kanye “-A” lapho ehlanganiswa noma engeza okuthi “#![vimbela(ikhodi_engaphephile)]” kanye “#![phika(clippy) :” izibaluli zekhodi) :enum_glob_use)]" manje ingasetshenziswa ku-Cargo manifest: [lints.rust] unsafe_code = "vimbela" [lints.clippy] enum_glob_use = "phika"
  • Umphathi wephakheji we-Crate wengeze amandla okuqinisekisa lapho uxhumeka endaweni yokugcina. Iphakheji eyisisekelo ihlanganisa ukusekelwa kokubeka amapharamitha wokuqinisekisa ezitolo zokuqinisekisa ze-Linux (ngokusekelwe ku-libsecret), i-macOS (Keychain) ne-Windows (I-Windows Credential Manager), kodwa uhlelo ekuqaleni lwenziwa i-modular futhi lukuvumela ukuthi uhlele umsebenzi nabahlinzeki abahlukahlukene ukuze ugcine futhi ukukhiqiza amathokheni, isibonelo, i-plugin isilungiselwe ukusebenzisa umphathi wephasiwedi we-1Password. Ukufakazela ubuqiniso kungase kudingwe inqolobane yanoma yikuphi ukusebenza, hhayi nje ukuqinisekisa ukuthi amaphakheji ashicilelwe. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Usekelo lwezilinganiso zohlobo lokubuyisela (impl_trait_projections) luzinzile, okuvumela i-Self kanye ne-T::Assoc ukuba kukhulunywe ngayo ezinhlotsheni zokubuyisela ezifana ne-"async fn" kanye ne-"->impl Trait". i-struct Wrapper<'a, T>(&'a T); // Izinhlobo zokubuyisela ezi-Opaque ezikhuluma ``Uqobo`: impl Wrapper<'_, ()> {async fn async_fn() -> Self {/* … */ } fn impl_trait() -> impl Iterator { /* … */ } } i-trait Trait<'a> {uhlobo lwe-Assoc; fn new() -> Self::Assoc; } i-impl Trait<'_> ye () {uhlobo lwe-Assoc = (); fn new() {} } } // Izinhlobo zokubuyisela ezi-Opaque ezikhuluma ngohlobo oluhlotshaniswayo: impl<'a, T: Trait<'a>> I-Wrapper<'a, T> {async fn mk_assoc() -> T::Assoc { /* … */ } fn a_few_assocs() -> impl Iterator {/* … */ }}
  • Ingxenye entsha ye-API iyiswe esigabeni sokuzinza, okuhlanganisa izindlela nokusetshenziswa kwezimpawu kuzinzile:
  • Isibaluli esithi "const", esinquma ukuthi kungenzeka yini ukusisebenzisa kunoma yimuphi umongo esikhundleni sama-constants, sisetshenziswa emisebenzini:
    • core::mem::transmute_copy
    • str::is_ascii
    • [u8]::is_ascii
    • umnyombo::inamba::Ukusuthisa
    • impl Ukusuka kokuthi std::process::Stdio
    • impl Ukusuka kokuthi 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_akuhloliwe
    • std::ffi::OsString::kumabhayithi_ekhodid
    • std::ffi::OsStr::from_encoded_bytes_akuhloliwe
    • std::ffi::OsStr::as_encoded_bytes
    • std::io::Iphutha::okunye
    • impl TryFrom kwe u16
    • impl Kusuka ku-<&[T; N]>ye-Vec
    • impl Kusuka ku-<&mut [T; N]>ye-Vec
    • impl Kusukela ku-<[T; N]> ye-Arc<[T]>
    • impl Kusukela ku-<[T; N]> nge-Rc<[T]>
  • Umhlanganisi, ikhithi yamathuluzi, umtapo wolwazi ojwayelekile, kanye nokusebenziseka kwezicelo okukhiqiziwe kuye kwanda izidingo zamapulatifomu e-Apple, manje adinga okungenani i-macOS 10.12 Sierra, iOS 10, ne-tvOS 10 ekhishwe ngo-2016 ukuthi isebenze.
  • Izinga lesithathu lokusekela seliqalisiwe kungxenyekazi ye-i686-pc-windows-gnullvm. Ileveli yesithathu ibandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela izakhiwo ezisemthethweni, noma ukuhlola ukuthi ikhodi ingakhiwa yini.
  • Izinga lesibili losekelo lweplathifomu eqondiwe ye-loongarch64-engaziwa-ayikho isetshenzisiwe. Izinga lesibili losekelo libandakanya isiqinisekiso somhlangano.

Ukwengeza, izenzakalo ezimbili ezihlobene nolimi lwe-Rust zingaqashelwa:

  • I-OSTIF (Isikhwama Sokuthuthukisa Ubuchwepheshe Bokuvula Umthombo), esakhelwe ukuqinisa ukuphepha kwamaphrojekthi omthombo ovulekile, ishicilele imiphumela yocwaningomabhuku lwephrojekthi ye-RustVMM, ehlinzeka ngezingxenye zokudala ama-hypervisors aqondene nomsebenzi kanye nama-virtual machine monitors (VMMs). Izinkampani ezifana ne-Intel, i-Alibaba, i-Amazon, i-Google, i-Linaro ne-Red Hat zibamba iqhaza ekuthuthukisweni kwephrojekthi. I-Intel Cloud Hypervisor kanye ne-Dragonball hypervisors ziyathuthukiswa ngokusekelwe ku-RustVMM. Ukucwaningwa kwamabhuku kuqinisekise izinga eliphezulu lesisekelo sekhodi kanye nokusetshenziswa kwamasu ekwakhiweni nasekusetshenzisweni okuhloswe ekuzuzeni ukuvikeleka okuphezulu. Ngesikhathi sokucwaningwa kwamabhuku, kuhlonzwe izinkinga eziyisi-6 ezingazange zibe nomthelela oqondile kwezokuphepha.
  • I-Google yethule ukuqaliswa okusha kwendlela yokuxhumana ye-Binder, ebhalwe kabusha ngolimi lwe-Rust, ohlwini lokuposa lonjiniyela we-Linux kernel. Ukusetshenzwa kabusha kwenziwe njengengxenye yephrojekthi yokuqinisa ezokuphepha, ukukhuthaza amasu okuhlela avikelekile kanye nokwandisa ukusebenza kahle kokuhlonza izinkinga lapho usebenza ngenkumbulo ku-Android (cishe u-70% wabo bonke ubungozi obutholakala ku-Android bubangelwa amaphutha lapho usebenza ngenkumbulo. ). Ukuqaliswa kwe-Binder in Rust kuzuze ukulingana ekusebenzeni ngenguqulo yoqobo ngolimi C, kuphumelele zonke izivivinyo ze-AOSP (Android Open-Source Project) futhi kungasetshenziswa ukudala izinhlelo zokusebenza ze-firmware. Ukusebenza kwakho kokubili ukuqaliswa cishe kusezingeni elifanayo (ukuchezuka ngaphakathi -1.96% kanye +1.38%).

Source: opennet.ru

Engeza amazwana