Doli në publik gjuha e programimit Rust 1.74. Auditimi i RustVMM. Rishkrimi i Binder në Rust.

ËshtĂ« publikimi i versionit 1.74 tĂ« gjuhĂ«s sĂ« programimit Rust, e cila u zhvillua fillimisht nga Mozilla, tani nĂ«n mbikĂ«qyrjen e Fondacionit Rust, njĂ« organizatĂ« jo-fitimprurĂ«se. Gjuha Ă«shtĂ« fokusuar nĂ« sigurinĂ« e memorie dhe ofron mjete pĂ«r tĂ« arritur paralelizĂ«m tĂ« lartĂ« nĂ« ekzekutimin e detyrave, pa pĂ«rdorur mbledhĂ«sin e plehrave dhe runtime (runtime pĂ«rfshin vetĂ«m inicializimin bazĂ« dhe mbĂ«shtetje e bibliotekĂ«s standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.

Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

TĂ« rejat kryesore:

  • Shtuar mundĂ«sia pĂ«r konfigurimin e kontrollave lint pĂ«rmes skedĂ«s Cargo.toml, e cila pĂ«rmban manifestin e menaxherit tĂ« paketave. PĂ«r tĂ« pĂ«rcaktuar konfigurimet lint, siç janĂ« niveli i reagimit (forbid, deny, warn, allow), janĂ« propozuar seksione tĂ« reja "[lints]" dhe "[workspace.lints]", ndryshimi i tĂ« cilave merret parasysh nĂ« vendimin pĂ«r rindĂ«rtim. PĂ«r shembull, nĂ« vend tĂ« pĂ«rcaktimit tĂ« flagjeve tĂ« ndĂ«rtimit "-F", "-D", "-W" dhe "-A" ose shtimit tĂ« atributeve "#![forbid(unsafe_code)]" dhe "#![deny(clippy::enum_glob_use)]" nĂ« kod, tani mund tĂ« pĂ«rdoret nĂ« manifestin Cargo: [lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "deny"
  • Menaxherit tĂ« paketave Crate i Ă«shtĂ« shtuar mundĂ«sia e autentifikimit nĂ« lidhje me repositoriumin. NĂ« paketĂ«n themelore Ă«shtĂ« pĂ«rfshirĂ« mbĂ«shtetje pĂ«r vendosjen e parametrave tĂ« autentifikimit nĂ« magazinat e akteve Linux (baze libsecret), macOS (Keychain) dhe Windows (Windows Credential Manager), por sistemi Ă«shtĂ« ndĂ«rtuar fillimisht tĂ« jetĂ« modular dhe lejon organizimin e punĂ«s me ofrues tĂ« ndryshĂ«m pĂ«r ruajtjen dhe gjenerimin e tokeneve, pĂ«r shembull, Ă«shtĂ« pĂ«rgatitur njĂ« plugin pĂ«r pĂ«rdorimin e menaxherit tĂ« fjalĂ«kalimeve 1Password. Autentifikimi mund tĂ« kĂ«rkohet nga repositoriumi pĂ«r çdo operacion, e jo vetĂ«m pĂ«r konfirmimin e publikimit tĂ« paketave. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • MbĂ«shtetja e projekteve pĂ«r llojet e kthimit (impl_trait_projections) Ă«shtĂ« stabilizuar, duke lejuar pĂ«rmendjen e Self dhe T::Assoc nĂ« llojet e kthimit, tĂ« tilla si "async fn" dhe "-> impl Trait". struct Wrapper<‘a, T>(&’a T); // Llojet e pamundura tĂ« kthimeve qĂ« pĂ«rmendin `Self`: impl Wrapper<‘_, ()> { async fn async_fn() -> Self { /* 
 */ } fn impl_trait() -> impl Iterator { /* 
 */ } } trait Trait<‘a> { type Assoc; fn new() -> Self::Assoc; } impl Trait<‘_> pĂ«r () { type Assoc = (); fn new() {} } // Llojet e pamundura tĂ« kthimeve qĂ« pĂ«rmendin njĂ« lloj tĂ« lidhur: impl<‘a, T: Trait<‘a>> Wrapper<‘a, T> { async fn mk_assoc() -> T::Assoc { /* 
 */ } fn a_few_assocs() -> impl Iterator<Item = T::Assoc> { /* 
 */ } }
  • NjĂ« sasi e re API Ă«shtĂ« kaluar nĂ« kategorinĂ« stabile, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« tipazheve:
  • Karakteristika «const», qĂ« pĂ«rcakton mundĂ«sinĂ« e pĂ«rdorimit nĂ« çdo kontekst nĂ« vend tĂ« konstantave, Ă«shtĂ« aplikuar nĂ« funksionet:
    • core::mem::transmute_copy
    • str::is_ascii
    • [u8]::is_ascii
    • core::num::Saturating
    • impl From pĂ«r std::process::Stdio
    • impl From pĂ«r std::process::Stdio
    • impl From pĂ«r std::process::Child{Stdin, Stdout, Stderr}
    • impl From pĂ«r 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::other
    • impl TryFrom<char> pĂ«r u16
    • impl<T: Clone, const N: usize> From<&[T; N]> pĂ«r Vec<T>
    • impl<T: Clone, const N: usize> From<&mut [T; N]> pĂ«r Vec<T>
    • impl<T, const N: usize> From<[T; N]> pĂ«r Arc<[T]>
    • impl<T, const N: usize> From<[T; N]> pĂ«r Rc<[T]>
  • NĂ« kompilator, veglat, bibliotekĂ«n standarde dhe skedarĂ«t ekzekutiv tĂ« aplikacioneve janĂ« rritur kĂ«rkesat pĂ«r platformat Apple: tani nevojiten tĂ« paktĂ«n versionet macOS 10.12 Sierra, iOS 10 dhe tvOS 10, tĂ« lansuara nĂ« vitin 2016.
  • ËshtĂ« zbatuar niveli i tretĂ« i mbĂ«shtetje pĂ«r platformĂ«n i686-pc-windows-gnullvm. Niveli i tretĂ« nĂ«nkupton mbĂ«shtetje tĂ« bazuar, por pa teste automatike, publikim tĂ« ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« pĂ«r ndĂ«rtimin e kodit.
  • ËshtĂ« zbatuar niveli i dytĂ« i mbĂ«shtetje pĂ«r platformĂ«n loongarch64-unknown-none. Niveli i dytĂ« i mbĂ«shtetjes nĂ«nkupton garantimin e ndĂ«rtimit.

Përveç kësaj, mund të përmenden dy ngjarje të lidhura me gjuhën Rust:

  • Fondi OSTIF (Open Source Technology Improvement Fund), i themeluar me qĂ«llim pĂ«r tĂ« forcuar sigurinĂ« e projekteve tĂ« hapura, publikoi rezultatet e auditi tĂ« projektit RustVMM, qĂ« ofron komponente pĂ«r krijimin e hipervizorĂ«ve dhe monitorĂ«ve specifikĂ« pĂ«r detyra tĂ« caktuara. makinave virtuale (VMM). NĂ« zhvillimin e projektit marrin pjesĂ« kompani si Intel, Alibaba, Amazon, Google, Linaro dhe Red Hat. Nga RustVMM zhvillohen hipervizorĂ«t Intel Cloud Hypervisor dhe Dragonball. Auditi konfirmoi cilĂ«sinĂ« e lartĂ« tĂ« bazĂ«s sĂ« kodit dhe pĂ«rdorimin nĂ« arkitekturĂ« dhe implementim tĂ« teknikave tĂ« orientuara drejt arritjes sĂ« maksimaleve sigurisĂ«. GjatĂ« auditi, u identifikuan 6 çështje qĂ« nuk kanĂ« ndikim direkt mbi sigurinĂ«.
  • Kompania Google publikoi nĂ« listĂ«n e saj tĂ« shpĂ«rndarjes pĂ«r zhvilluesit e bĂ«rthamĂ«s Linux njĂ« realizim tĂ« ri tĂ« mekanizmit pĂ«r ndĂ«rveprimin midis proceseve Binder, tĂ« shkruar nĂ« gjuhĂ«n Rust. Ristrukturimi u realizua nĂ« kuadĂ«r tĂ« njĂ« projekti pĂ«r tĂ« forcuar sigurinĂ«, pĂ«r tĂ« promovuar praktikat e programimit tĂ« sigurta dhe pĂ«r tĂ« rritur efikasitetin e identifikimit tĂ« problemeve gjatĂ« punĂ«s me memorien nĂ« Android (rreth 70% e tĂ« gjitha dobĂ«sive tĂ« rrezikshme tĂ« identifikuara nĂ« Android shkaktohen nga gabimet gjatĂ« punĂ«s me memorien). Realizimi i Binder nĂ« Rust arriti paritet nĂ« funksionalitet me variantin e tij origjinal nĂ« gjuhĂ«n C, kalon tĂ« gjitha provat AOSP (Android Open-Source Project) dhe mund tĂ« pĂ«rdoret pĂ«r tĂ« krijuar redaksionet e punĂ«s tĂ« firmuerave. Performanca e tĂ« dy realizimeve Ă«shtĂ« nĂ« njĂ« nivel tĂ« ngjashĂ«m (shkallĂ«t nga -1.96% deri nĂ« +1.38%).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster