Famoahana ny fiteny fandaharana Rust 1.74. RustVMM audit. Rewriting Binder in Rust

Navoaka ny fiteny fandaharana Rust 1.74 amin'ny tanjona ankapobeny, naorin'ny tetikasa Mozilla saingy novolavolaina ankehitriny eo ambany fiahian'ny fikambanana tsy miankina Rust Foundation. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny ary manome fitaovana ahafahana manatratra ny fitovian'ny asa avo lenta sady misoroka ny fampiasana mpanangom-pako sy ny fotoana fandehanana (ahena ny fotoana fampandehanana amin'ny fanombohana fototra sy fikojakojana ny tranomboky mahazatra).

Ny fomba fitantanana fitadidian'i Rust dia mamonjy ny mpamorona amin'ny hadisoana rehefa manodinkodina ny tondro ary miaro amin'ny olana mipoitra noho ny fikarakarana fitadidiana ambany, toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany, ny fanafoanana ireo tondro tsy misy dikany, ny fihoaran'ny buffer, sns. Mba hizarana trano famakiam-boky, manome fananganana ary mitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Ny fiarovana ny fitadidiana dia omena ao amin'ny Rust amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fanaraha-maso ny fananana zavatra, ny fanaraha-maso ny androm-piainan'ny zavatra (scopes), ary ny fanombanana ny fahamarinan'ny fidirana fahatsiarovana mandritra ny famonoana ny code. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky fanombohana tsy maintsy atao ny soatoavina miovaova alohan'ny fampiasana, mitantana ny lesoka tsara kokoa ao amin'ny tranomboky mahazatra, mampihatra ny foto-kevitry ny references sy ny variables tsy miova amin'ny alΓ lan'ny default, manolotra fanoratana static mahery mba hampihenana ny fahadisoana lojika.

Fanavaozana lehibe:

  • Nampiana ny fahafahana manitsy ny fisavana lint amin'ny alΓ lan'ny rakitra Cargo.toml miaraka amin'ny manifest manager package. Mba hamaritana ny firafitry ny lint, toy ny haavon'ny famaliana (mandrara, mandΓ , mampitandrina, mamela), fizarana vaovao "[lints]" sy "[workspace.lints]" no atolotra, fanovana izay raisina rehefa mandray fanapahan-kevitra momba fanorenana indray. Ohatra, raha tokony hamaritra ny saina β€œ-F”, β€œ-D”, β€œ-W” ary β€œ-A” rehefa manangona na manampy ny β€œ#![forbid(unsafe_code)]” sy β€œ#![deny(clippy) :” ny toetran'ny kaody): enum_glob_use)]" dia azo ampiasaina ao amin'ny Cargo manifest: [lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "deny"
  • Ny mpitantana fonosana Crate dia nanampy ny fahafahana manamarina rehefa mifandray amin'ny tahiry iray. Ny fonosana fototra dia misy fanohanana amin'ny fametrahana mari-pamantarana fanamarinana ao amin'ny fivarotana fahazoan-dΓ lana Linux (mifototra amin'ny libsecret), macOS (Keychain) ary Windows (Windows Credential Manager), fa ny rafitra dia natao modular tamin'ny voalohany ary mamela anao handamina asa miaraka amin'ireo mpamatsy isan-karazany amin'ny fitehirizana sy Mamorona famantarana, ohatra, misy plugin nomanina hampiasa ny mpitantana ny tenimiafina 1Password. Ny fanamarinana dia mety takian'ny tahiry ho an'ny asa rehetra, fa tsy hanamarina fotsiny fa efa navoaka ny fonosana. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • Ny fanohanan'ny vinavina karazana fiverenana (impl_trait_projections) dia niorina, ka nahafahan'ny Self sy T::Assoc ho voatonona amin'ny karazana fiverenana toy ny "async fn" sy "->impl Trait". struct Wrapper<'a, T>(&'a T); // Karazana fiverenana manjavozavo izay milaza ny `Self`: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* … */ } fn impl_trait() -> impl Iterator { /* … */ } } toetra Toetra<'a> { karazana Assoc; fn new() -> Self::Assoc; } impl Toetra<'_> ho an'ny () { karazana Assoc = (); fn new() {} } // Karazana fiverenana manjavozavo izay milaza karazana mifandraika: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc { /* … */ } fn a_few_assocs() -> impl Iterator { /* … */ } }
  • Ny ampahany vaovao amin'ny API dia nafindra ho amin'ny sokajy stable, ao anatin'izany ny fomba sy ny fampiharana ny toetra efa niorina:
  • Ny toetra "const", izay mamaritra ny mety hampiasana azy amin'ny toe-javatra rehetra fa tsy constants, dia ampiasaina amin'ny fiasa:
    • core::mem::transmute_copy
    • str::is_ascii
    • [u8]::is_ascii
    • fototra::num::Manenika
    • impl Avy amin'ny std::process::Stdio
    • impl Avy amin'ny 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::Error::hafa
    • impl TryFrom ho u16
    • impl Avy amin'ny<&[T; N]> ho an'ny Vec
    • impl Avy amin'ny<&mut [T; N]> ho an'ny Vec
    • impl Avy amin'ny<[T; N]> ho an'ny Arc<[T]>
    • impl Avy amin'ny<[T; N]> ho an'ny Rc<[T]>
  • Ny compiler, ny fitaovana, ny tranomboky mahazatra, ary ny fampiharana fampiharana novolavolaina dia nampitombo ny fepetra takiana amin'ny sehatra Apple, izay mila macOS 10.12 Sierra, iOS 10, ary tvOS 10 navoaka tamin'ny 2016 fara-fahakeliny.
  • Ny ambaratonga fahatelo fanohanana dia nampiharina ho an'ny sehatra i686-pc-windows-gnullvm. Ny ambaratonga fahatelo dia misy fanohanana fototra, saingy tsy misy fitsapana mandeha ho azy, famoahana fananganana ofisialy, na fanamarinana raha azo amboarina ny kaody.
  • Ny ambaratonga faharoa amin'ny fanohanana ny sehatra loongarch64-tsy fantatra-tsy misy kendrena dia nampiharina. Ny ambaratonga faharoa amin'ny fanohanana dia misy fiantohana fivoriambe.

Fanampin'izany, misy tranga roa mifandraika amin'ny fiteny Rust azo marihina:

  • Ny OSTIF (Open Source Technology Improvement Fund), noforonina mba hanamafisana ny fiarovana ny tetikasa open source, dia namoaka ny valin'ny fanaraha-maso ny tetikasa RustVMM, izay manome singa amin'ny famoronana hypervisors manokana amin'ny asa sy mpanara-maso milina virtoaly (VMM). Mandray anjara amin'ny fampandrosoana ny tetikasa ireo orinasa toa an'i Intel, Alibaba, Amazon, Google, Linaro ary Red Hat. Intel Cloud Hypervisor sy Dragonball hypervisors dia novolavolaina mifototra amin'ny RustVMM. Ny fanaraha-maso dia nanamafy ny kalitao avo lenta amin'ny code base sy ny fampiasana teknika amin'ny maritrano sy ny fampiharana mikendry ny hahazoana fiarovana ambony indrindra. Nandritra ny fanaraha-maso dia nahitana olana 6 izay tsy nisy fiantraikany mivantana tamin'ny fiarovana.
  • Google dia nampiditra fampiharana vaovao ny rafi-pifandraisana Binder interprocess, naverina nosoratana tamin'ny fiteny Rust, ao amin'ny lisitry ny mailaka mpamorona kernel Linux. Ny fanavaozana dia natao ho ampahany amin'ny tetikasa hanamafisana ny fiarovana, hampiroborobo ny teknika fandaharana azo antoka ary hampitombo ny fahombiazan'ny famantarana ny olana rehefa miasa amin'ny fitadidiana ao amin'ny Android (manodidina ny 70% amin'ny vulnerability mampidi-doza rehetra hita ao amin'ny Android dia vokatry ny fahadisoana rehefa miasa amin'ny fitadidiana. ). Ny fampiharana ny Binder amin'ny Rust dia nahatratra ny fitoviana amin'ny fiasa miaraka amin'ny dikan-teny voalohany amin'ny fiteny C, mandalo ny fitsapana AOSP (Android Open-Source Project) ary azo ampiasaina hamoronana fanontana firmware miasa. Ny fahombiazan'ny fampiharana roa dia eo amin'ny ambaratonga mitovy (fiviliana ao anatin'ny -1.96% sy +1.38%).

Source: opennet.ru

Add a comment