Fa'asa'olotoina o le gagana polokalame Rust 1.74. Su'etusi RustVMM. Toetusi Tusitusi i le Ele

O le faʻasaʻolotoina o le gagana faʻapolokalame faʻamoemoe lautele Rust 1.74, faʻavaeina e le poloketi Mozilla, ae o lea ua atiaʻe i lalo o le faʻauluuluga a le faʻalapotopotoga tutoatasi e leai ni tupe mama Rust Foundation, ua lomia. O le gagana o loʻo taulaʻi i le saogalemu o manatuaga ma maua ai le auala e ausia ai le maualuga maualuga i le faʻatinoina o galuega, aʻo aloese mai le faʻaogaina o le lapisi lapisi ma le taʻavale (ua faʻaitiitia le taimi i le amataga ma le tausiga o le faletusi masani).

O auala e pulea ai manatuaga a Rust e fa'asa'oloto ai le tagata atia'e mai mea sese o le fa'aogaina o fa'ailoga ma puipuia mai fa'afitauli e tula'i mai i le fa'aogaina o mafaufauga maualalo, e pei o avanoa e leai se totogi, fa'aletonu le fa'asinomaga, fa'amama fa'alavelave, ma mea faapena. Ina ia tufatufaina faletusi, faʻamautinoa le faʻapipiʻiina ma pulea faʻalagolago, o le poloketi o loʻo atiaʻe le pule o pusa uta. O le crates.io repository e lagolagoina mo le talimalo faletusi.

O le saogalemu o manatuaga e fa'amalosia i le Rust i le taimi fa'aopoopo e ala i le siakiina o fa'asinomaga, su'esu'eina o mea e umia, iloiloga o mea i le olaga atoa (scoping), ma le iloiloga o le avanoa e manatua ai i le taimi. E maua ai foi e le ele le puipuiga mai le tele o numera, e manaʻomia ai le faʻavaeina o tau fesuiaʻi aʻo leʻi faʻaaogaina, e sili atu le taulimaina o mea sese i totonu o le faletusi masani, faʻaaogaina le manatu o faʻamatalaga e le mafai ona suia ma fesuiaiga e ala i le le mafai, ma ofoina atu le malosi o le taina e faʻaitiitia ai mea sese.

Autu fa'afouga:

  • Fa'aopoopoina le tomai e fa'atulaga siaki lint e ala i le faila o le Cargo.toml fa'atasi ai ma le fa'aaliga o le pule o pusa. Ina ia fa'amalamalamaina le fa'atulagaina o le lint, e pei o le maualuga o le tali (fa'asa, fa'afiti, lapata'i, fa'atagaina), vaega fou "[lints]" ma le "[workspace.lints]" o lo'o tu'uina mai, suiga e amanaia pe a fai se fa'ai'uga. toe fausia. Mo se faʻataʻitaʻiga, nai lo le faʻamaonia o le "-F", "-D", "-W" ma le "-A" fuʻa pe a faʻapipiʻi pe faʻaopoopoina le "#![forbid(unsafe_code)]" ma le "#![deny(clippy). :” uiga i le code) :enum_glob_use)]" ua mafai nei ona fa'aoga i le Fa'aaliga o uta: [lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "deny"
  • O le Crate package manager ua faʻaopoopoina le gafatia e faʻamaonia pe a faʻafesoʻotaʻi i se fale teu oloa. O le tufatufaina faʻavae e aofia ai le lagolago mo le tuʻuina o faʻamaoniga faʻamaonia i faleoloa faʻamaonia Linux (faʻavae i luga o le libsecret), macOS (Keychain) ma Windows (Windows Credential Manager), ae o le faiga na muamua faia faʻapitoa ma faʻatagaina oe e faʻatulagaina galuega ma kamupani eseese mo le teuina ma fa'atupuina fa'ailoga, mo se fa'ata'ita'iga, ua saunia se mea fa'apipi'i mo le fa'aaogaina o le 1Password password manager. E mafai ona manaʻomia le faʻamaoniga e le fale teu oloa mo soʻo se gaioiga, ae le naʻo le faʻamaonia o afifi ua lomia. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Lagolago mo le toe fo'i mai ituaiga fa'atatau (impl_trait_projections) ua fa'amautu, fa'atagaina Self ma T :: Assoc e ta'ua i ituaiga fa'afo'i e pei o le "async fn" ma le "-> impl Trait". struct Afifi<'a, T>(&'a T); // Opaque toe faafoi ituaiga o loʻo taʻua ai le `Self`: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* … */ } fn impl_trait() -> impl Iterator { /* … */ } } trait Trait<'a> { type Assoc; fn fou() -> Self::Assoc; } impl Uiga<'_> mo () { type Assoc = (); fn new() {} } // Opaque toe fo'i ituaiga e ta'ua ai se ituaiga fa'afeso'ota'i: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc { /* … */ } fn a_few_assocs() -> impl Iterator { /* … */ } }
  • O se vaega fou o le API ua siitia i le vaega o fale mautu, e aofia ai metotia ma faʻatinoga o uiga ua faʻamautuina:
  • O le uiga "const", lea e fuafua ai le avanoa e faʻaaogaina ai i soʻo se faʻamatalaga nai lo faʻaauau, e faʻaaogaina i galuega:
    • autu::mem::transmute_copy
    • str::is_ascii
    • [u8]::is_ascii
    • autu::num::Saturating
    • impl Mai mo std::process::Stdio
    • impl Mai mo std::process::Stdio
    • impl Mai mo std::process::Child{Stdin, Stdout, Stderr}
    • impl Mai mo 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::Sese::isi
    • impl TryFrom mo u16
    • impl Mai<&[T; N]> mo Vec
    • impl Mai<&mut [T; N]> mo Vec
    • impl Mai<[T; N]> mo Arc<[T]>
    • impl Mai<[T; N]> mo Rc<[T]>
  • O le tuʻufaʻatasia, mea faigaluega, faletusi masani, ma faʻatupuina mea e mafai ona faʻatinoina ua faʻateleina manaʻoga mo Apple platforms, lea e manaʻomia ai le itiiti ifo i le macOS 10.12 Sierra, iOS 10, ma le tvOS 10 na faʻatuina i le 2016 e faʻatautaia.
  • O le tulaga lona tolu o le lagolago ua faʻatinoina mo le i686-pc-windows-gnullvm platform. O le vaega lona tolu e aofia ai le lagolago fa'avae, ae aunoa ma se fa'ata'ita'iga fa'apitoa, fa'asalalauga o fale fa'aletulafono, ma le fa'amaoniaina o le fa'aogaina o tulafono.
  • O le tulaga lona lua o le lagolago mo le loongarch64-le-iloa-leai se tulaga faʻatulagaina ua faʻatinoina. O le tulaga lona lua o le lagolago e aofia ai se fa'amaoniga fa'apotopotoga.

E le gata i lea, e lua mea na tutupu e fesoʻotaʻi ma le gagana Rust e mafai ona matauina:

  • O le OSTIF (Open Source Technology Improvement Fund), na faia e faʻamalosia ai le saogalemu o galuega faʻavae tatala, na faʻasalalau ai taunuʻuga o le suʻega o le RustVMM poloketi, lea e tuʻuina atu ai vaega mo le fatuina o hypervisors faʻapitoa ma masini masini mataʻituina (VMMs). Kamupani e pei o Intel, Alibaba, Amazon, Google, Linaro ma Red Hat o loʻo auai i le atinaʻeina o le poloketi. Intel Cloud Hypervisor ma Dragonball hypervisors o loʻo faʻavaeina ile RustVMM. Na faʻamaonia e le suʻega le maualuga o le faʻavae code ma le faʻaogaina o metotia i le fausaga ma le faʻatinoga e faʻatatau i le ausiaina o le saogalemu maualuga. I le taimi o le suʻega, e 6 faʻafitauli na faʻaalia e leai se aafiaga tuusaʻo i le saogalemu.
  • Google fa'alauiloa se fa'atinoga fou o le Binder interprocess communication mechanism, toe tusia i le Rust language, i le Linux kernel developer mailing list. O le toe faʻatinoina na faia o se vaega o se poloketi e faʻamalosia ai le saogalemu, faʻalauteleina le saogalemu o polokalame polokalame ma faʻateleina le lelei o le faʻamalamalamaina o faʻafitauli pe a galue ma le manatua i le Android (e tusa ma le 70% o faʻafitauli mataʻutia uma na faʻaalia i le Android e mafua mai i mea sese pe a galue ma manatua. ). O le faʻatinoina o le Binder in Rust ua ausia le tutusa i galuega faʻatasi ma le uluai kopi i le gagana C, pasi uma suʻega AOSP (Android Open-Source Project) ma e mafai ona faʻaaogaina e fatu ai lomiga galue o firmware. O le faʻatinoga o faʻatinoga uma e lua o loʻo i ai i le tulaga tutusa (tuueseese i totonu -1.96% ma + 1.38%).

puna: opennet.ru

Faaopoopo i ai se faamatalaga