Sakin yaren shirye-shirye na Rust 1.74. RustVMM. Sake rubuta Binder a Tsatsa

An buga yaren shirye-shirye na Rust 1.74 na gabaɗaya, wanda aikin Mozilla ya kafa, amma yanzu an haɓaka shi a ƙarƙashin inuwar wata kungiya mai zaman kanta mai zaman kanta ta Rust Foundation. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya kuma yana ba da hanyoyin cimma babban daidaiton aiki yayin guje wa yin amfani da mai tara shara da lokacin aiki (an rage lokacin aiki zuwa farawa na asali da kiyaye daidaitaccen ɗakin karatu).

Hanyoyin sarrafa ƙwaƙwalwar Rust suna ceton mai haɓakawa daga kurakurai yayin sarrafa masu nuni da kuma kariya daga matsalolin da suka taso saboda ƙarancin kulawar ƙwaƙwalwar ajiya, kamar samun damar wurin ƙwaƙwalwar ajiya bayan an 'yantar da shi, cire maƙasudin null, buffer overruns, da dai sauransu. Don rarraba ɗakunan karatu, samar da gini da sarrafa abubuwan dogaro, aikin yana haɓaka manajan fakitin Kaya. Ana tallafawa ma'ajiyar crates.io don ɗaukar ɗakunan karatu.

Ana ba da amincin ƙwaƙwalwar ajiya a cikin Tsatsa a lokacin tattarawa ta hanyar duba tunani, kiyaye bin diddigin mallakar abu, kiyaye tsawon rayuwa (masu iyawa), da tantance daidaiton damar ƙwaƙwalwar ajiya yayin aiwatar da lambar. Tsatsa kuma yana ba da kariya daga ambaliya mai lamba, yana buƙatar ƙaddamar da ƙima mai mahimmanci kafin amfani, yana sarrafa kurakurai mafi kyau a cikin daidaitaccen ɗakin karatu, yana amfani da ra'ayi na nassoshi marasa canzawa da masu canji ta tsohuwa, yana ba da buga rubutu mai ƙarfi don rage kurakurai masu ma'ana.

Manyan sabbin abubuwa:

  • Ƙara ikon daidaita lint cak ta hanyar fayil ɗin Cargo.toml tare da bayyana manajan fakitin. Don ayyana saitunan lint, kamar matakin amsawa (haramta, ƙaryatawa, gargaɗi, ba da izini), ana ba da shawarar sabbin sassan “[lints]” da “[workspace.lints]”, canje-canjen da aka yi la’akari da su yayin yanke shawara game da su. sake ginawa. Misali, maimakon tantance tutocin “-F”, “-D”, “-W” da “-A” yayin hadawa ko kara “#! :" halayen lambar) :enum_glob_use)]" yanzu ana iya amfani dashi a cikin bayyanar Cargo: [lints.rust] unsafe_code = "hana" [lints.clippy] enum_glob_use = "ki yarda"
  • Manajan fakitin Crate ya ƙara ikon tantancewa lokacin haɗawa zuwa wurin ajiya. Kunshin asali ya haɗa da goyan baya don sanya sigogin tantancewa a cikin shagunan takaddun shaida na Linux (dangane da libsecret), macOS (Keychain) da Windows (Mai sarrafa Sirri na Windows), amma tsarin an fara sanya shi na zamani kuma yana ba ku damar tsara aiki tare da masu samarwa daban-daban don adanawa da adanawa. samar da alamu, alal misali, an shirya plugin don amfani da mai sarrafa kalmar wucewa ta 1Password. Ana iya buƙatar tabbatarwa ta wurin ajiyar kayan aiki don kowane aiki, ba kawai don tabbatar da cewa an buga fakitin ba. ~/.cargo/config.toml [registry] global-credential-providers = ["kaya: alama", "kaya: libsecret"]
  • Taimako don tsinkayar nau'in dawowa (impl_trait_projections) an daidaita shi, yana barin Kai da T :: Assoc da za a ambata a cikin nau'ikan dawowa kamar "async fn" da "-> impl Trait". struct Wrapper<'a, T>(&'a T); // Nau'in dawowar da ba su da kyau waɗanda suka ambaci 'Kai': impl Wrapper <'_, ()> {async fn async_fn () -> Kai {/* … */ } fn impl_trait () -> impl Iterator { /* … */ } } Halayen halayen <'a> {nau'in Assoc; fn new() -> Kai::Assoc; } impl Hali <'_> don () {nau'in Assoc = (); fn new() {}} // Nau'o'in dawowar da ba su da kyau waɗanda suka ambaci nau'in haɗin gwiwa: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T :: Assoc {/* … */ } fn a_few_assocs() -> impl Iterator { /*…/} }
  • An koma wani sabon yanki na API zuwa nau'in barga, gami da hanyoyin da aiwatar da halaye an daidaita su:
  • Ana amfani da sifa na "const", wanda ke ƙayyade yiwuwar amfani da shi a cikin kowane mahallin maimakon akai-akai, a cikin ayyuka:
    • core:: mem:: transmute_copy
    • str :: is_ascii
    • [u8] :: is_ascii
    • core::num::Saturating
    • impl Daga don std :: tsari :: Studio
    • impl Daga don std :: tsari :: Studio
    • impl Daga don std :: tsari :: Child {Stdin, Stdout, Stderr}
    • impl Daga don std :: tsari :: Child {Stdin, Stdout, Stderr}
    • std :: ffi :: OsString :: daga_encoded_bytes_unchecked
    • std :: ffi :: OsString :: cikin_incoded_bytes
    • std :: ffi :: OsStr :: daga_encoded_bytes_unchecked
    • std :: ffi :: OsStr :: as_encoded_bytes
    • std :: io :: Kuskure :: wani
    • impl TryFrom ku 16
    • impl Daga <&[T; N]> don Vec
    • impl Daga <&mut [T; N]> don Vec
    • impl Daga <[T; N]> don Arc<[T]>
    • impl Daga <[T; N]> na Rc<[T]>
  • Mai tarawa, kayan aiki, ɗakin karatu na yau da kullun, da abubuwan aiwatar da aikace-aikacen da aka samar sun haɓaka buƙatu don dandamali na Apple, yanzu suna buƙatar aƙalla macOS 10.12 Sierra, iOS 10, da tvOS 10 waɗanda aka saki a cikin 2016 don gudana.
  • An aiwatar da matakin tallafi na uku don dandalin i686-pc-windows-gnulvm. Mataki na uku ya ƙunshi tallafi na asali, amma ba tare da gwaji ta atomatik ba, buga ginin hukuma, ko duba ko za a iya gina lambar.
  • Mataki na biyu na tallafi na loongarch64-ba a san-ba-dandali da aka yi niyya ba. Mataki na biyu na tallafi ya ƙunshi garantin taro.

Bugu da ƙari, ana iya lura da abubuwa biyu masu alaƙa da harshen Rust:

  • OSTIF (Asusun Inganta Fasaha na Buɗe), wanda aka ƙirƙira don ƙarfafa tsaro na ayyukan buɗe ido, ya buga sakamakon binciken binciken aikin RustVMM, wanda ke ba da abubuwan haɗin gwiwa don ƙirƙirar ƙayyadaddun hypervisors na musamman da na'ura mai ƙima (VMMs). Kamfanoni irin su Intel, Alibaba, Amazon, Google, Linaro da Red Hat suna shiga cikin ci gaban aikin. Intel Cloud Hypervisor da Dragonball hypervisors ana haɓaka su akan RustVMM. Binciken ya tabbatar da ingancin tushe na lambar da kuma amfani da dabaru a cikin gine-gine da aiwatarwa da nufin cimma iyakar tsaro. A yayin binciken, an gano matsalolin 6 waɗanda ba su da tasiri kai tsaye ga aminci.
  • Google ya gabatar da sabon aiwatar da hanyar sadarwa ta hanyar sadarwa ta Binder, wanda aka sake rubutawa cikin yaren Rust, zuwa jerin wasikun masu haɓaka kernel na Linux. An sake yin aikin a matsayin wani ɓangare na aikin don ƙarfafa tsaro, inganta ingantattun dabarun shirye-shirye da haɓaka haɓakar gano matsaloli yayin aiki tare da ƙwaƙwalwar ajiya a cikin Android (kusan 70% na duk raunin haɗari da aka gano a cikin Android ana haifar da kurakurai yayin aiki tare da ƙwaƙwalwar ajiya). ). Aiwatar da Binder a cikin Rust ya sami daidaito cikin aiki tare da sigar asali a cikin yaren C, ya wuce duk gwajin AOSP (Android Open-Source Project) kuma ana iya amfani dashi don ƙirƙirar bugu na firmware na aiki. Ayyukan aiwatarwa guda biyu kusan a matakin ɗaya ne (raɓawa tsakanin -1.96% da + 1.38%).

source: budenet.ru

Add a comment