เบเบฒเบ™เบ›เปˆเบญเบเบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบก Rust 1.74. เบเบฒเบ™เบเบงเบ”เบชเบญเบš RustVMM. Rewriting Binder เปƒเบ™ Rust

เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ—เบตเปˆเบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ—เบปเปˆเบงเป„เบ› Rust 1.74, เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ Mozilla เปเบ•เปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เบญเบธเบ›เบฐเบ–เปเบฒเบ‚เบญเบ‡เบญเบปเบ‡เบเบฒเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ—เบตเปˆเบšเปเปˆเบซเบงเบฑเบ‡เบœเบปเบ™เบเปเบฒเป„เบฅ Rust Foundation, เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒ. เบžเบฒเบชเบฒเบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบ‚เบฐเบซเบ™เบฒเบ™เบ‚เบญเบ‡เบงเบฝเบเบชเบนเบ‡เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญเปเบฅเบฐเป€เบงเบฅเบฒเปเบฅเปˆเบ™ (runtime เบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบฅเบฐเบเบฒเบ™เบฎเบฑเบเบชเบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™).

เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡ Rust เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ manipulating pointers เปเบฅเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒ, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบ, dereferencing null pointers, buffer overruns, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เป€เบžเบทเปˆเบญเปเบˆเบเบขเบฒเบเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช, เป‚เบ„เบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒ. เบ„เบฑเบ‡เป€เบเบฑเบš crates.io เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบšเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”.

เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบขเบนเปˆเปƒเบ™ Rust เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบกเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ, เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบญเบฒเบเบธเบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ (เบ‚เบญเบšเป€เบ‚เบ”), เปเบฅเบฐเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”. Rust เบเบฑเบ‡เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™เบเบฒเบ™ overflows integer, เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบšเบฑเบ‡เบ„เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒเบ•เบปเบงเปเบ›เบเปˆเบญเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰, เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™, เบ™เปเบฒเปƒเบŠเป‰เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡ immutable เปเบฅเบฐเบ•เบปเบงเปเบ›เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบžเบดเบกเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบขเปˆเบฒเบ‡เบกเบตเป€เบซเบ”เบœเบปเบ™.

เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบ•เบปเป‰เบ™เบ•เป:

  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฒเบ™เบเบงเบ”เบชเบญเบš lint เบœเปˆเบฒเบ™เป„เบŸเบฅเปŒ Cargo.toml เบ”เป‰เบงเบ manifest เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”. เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ lint, เป€เบŠเบฑเปˆเบ™: เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡ (เบซเป‰เบฒเบก, เบ›เบฐเบ•เบดเป€เบชเบ”, เป€เบ•เบทเบญเบ™, เบญเบฐเบ™เบธเบเบฒเบ”), เบžเบฒเบเบชเปˆเบงเบ™เปƒเบซเบกเปˆ "[lints]" เปเบฅเบฐ "[workspace.lints]" เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเปˆเบฝเบงเบเบฑเบš. เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบฅเบฐเบšเบธเบ—เบธเบ‡ โ€œ-Fโ€, โ€œ-Dโ€, โ€œ-Wโ€ เปเบฅเบฐ โ€œ-Aโ€ เป€เบกเบทเปˆเบญเบ›เบฐเบเบญเบš เบซเบผเบทเป€เบžเบตเปˆเบก โ€œ#![forbid(unsafe_code)]โ€ เปเบฅเบฐ โ€œ#![deny(clippy :โ€ attributes to the code) :enum_glob_use)]" เบ”เบฝเบงเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เปƒเบ™ Cargo manifest: [lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "เบ›เบฐเบ•เบดเป€เบชเบ”"
  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ” Crate เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™. เบเบฒเบ™เปเบˆเบเบขเบฒเบเบžเบทเป‰เบ™เบ–เบฒเบ™เบ›เบฐเบเบญเบšเบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบงเบฒเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบขเบทเบ™เบขเบฑเบ™เปƒเบ™เบฎเป‰เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบˆเปเบฒ Linux (เบญเบตเบ‡เปƒเบชเปˆ libsecret), macOS (Keychain) เปเบฅเบฐ Windows (Windows Credential Manager), เปเบ•เปˆเบฅเบฐเบšเบปเบšเป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™เปเบšเบšเป‚เบกเบ”เบนเบฅเบฒเปเบฅเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ•เปˆเบฒเบ‡เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบฅเบฐ. เบเบฒเบ™เบชเป‰เบฒเบ‡ tokens, เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, plugin เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™ 1Password. เบเบฒเบ™เบžเบดเบชเบนเบ”เบขเบทเบ™เบขเบฑเบ™เบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป‚เบ”เบ repository เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปƒเบ”เบซเบ™เบถเปˆเบ‡, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบžเบทเปˆเบญเบขเบทเบ™เบขเบฑเบ™เบงเปˆเบฒ packages เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ. ~/.cargo/config.toml [registry] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ„เบฒเบ”เบเบฒเบ™เบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™ (impl_trait_projections) เป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบปเบ‡เบ—เบตเปˆ, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐ T::Assoc เบ–เบทเบเบเปˆเบฒเบงเป€เบ–เบดเบ‡เปƒเบ™เบ›เบฐเป€เบžเบ”เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™เป€เบŠเบฑเปˆเบ™ "async fn" เปเบฅเบฐ "-> impl Trait". เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ Wrapper<'a, T>(&'a T); // เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เปเบšเบš opaque เบ—เบตเปˆเบเปˆเบฒเบงเป€เบ–เบดเบ‡ `เบ•เบปเบ™เป€เบญเบ‡`: impl Wrapper<'_, ()> { async fn async_fn() -> เบ•เบปเบ™เป€เบญเบ‡ { /* โ€ฆ */ } fn impl_trait() -> impl Iterator { /* โ€ฆ */ } } เบฅเบฑเบเบชเบฐเบ™เบฐเบฅเบฑเบเบชเบฐเบ™เบฐ<'a> { เบ›เบฐเป€เบžเบ” Assoc; fn new() -> เบ•เบปเบ™เป€เบญเบ‡::Assoc; } impl Trait<'_> for () { type Assoc = (); fn new() {} } // เบ›เบฐเป€เบžเบ”เบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เปเบšเบšเบšเปเปˆเบŠเป‰เบณเบ—เบตเปˆเบเปˆเบฒเบงเป€เบ–เบดเบ‡เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc { /* โ€ฆ */ } fn a_few_assocs() -> impl Iterator { /* โ€ฆ */ } }
  • เบžเบฒเบเบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡:
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "const", เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ:
    • เบซเบผเบฑเบ::mem::transmute_copy
    • str::is_ascii
    • [u8]::is_ascii
    • เบซเบผเบฑเบ ::num::เบญเบตเปˆเบกเบ•เบปเบง
    • impl เบˆเบฒเบเบชเปเบฒเบฅเบฑเบš std::process::Stdio
    • impl เบˆเบฒเบเบชเปเบฒเบฅเบฑเบš std::process::Stdio
    • impl เบˆเบฒเบเบชเปเบฒเบฅเบฑเบš std::process::Child{Stdin, Stdout, Stderr}
    • impl เบˆเบฒเบเบชเปเบฒเบฅเบฑเบš 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::เบœเบดเบ”เบžเบฒเบ”::เบญเบทเปˆเบ™เป†
    • impl TryFrom เบชเปเบฒเบฅเบฑเบš u16
    • impl เบˆเบฒเบ<&[T; N]>เบชเปเบฒเบฅเบฑเบš Vec
    • impl เบˆเบฒเบ<&mut [T; N]>เบชเปเบฒเบฅเบฑเบš Vec
    • impl เบˆเบฒเบ<[T; N]> เบชเปเบฒเบฅเบฑเบš Arc<[T]>
    • impl เบˆเบฒเบ<[T; N]> เบชเปเบฒเบฅเบฑเบš Rc<[T]>
  • เป‚เบ›เบฃเปเบเบฃเบก compiler, เป€เบ„เบทเปˆเบญเบ‡เบกเบท, เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เปเบฅเบฐ เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป„เบ”เป‰เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบชเบณเบฅเบฑเบšเปเบžเบฅเบ”เบŸเบญเบก Apple, เบ•เบญเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบขเปˆเบฒเบ‡เปœเป‰เบญเบ macOS 10.12 Sierra, iOS 10, เปเบฅเบฐ tvOS 10 เบ—เบตเปˆเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปƒเบ™เบ›เบต 2016 เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™.
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต i686-pc-windows-gnullvm. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เบžเบดเบกเป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”.
  • เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš loongarch64-unknown-none เป€เบงเบ—เบตเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบตเบชเบญเบ‡เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ›เบฐเบเบญเบš.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบชเบญเบ‡เป€เบซเบ”เบเบฒเบ™เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบžเบฒเบชเบฒ Rust เบชเบฒเบกเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป„เบ”เป‰:

  • OSTIF (Open Source Technology Improvement Fund), เบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป€เบžเบทเปˆเบญเป€เบชเบตเบกเบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”, เป„เบ”เป‰เป€เบœเบตเบเปเบœเปˆเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป‚เบ„เบ‡เบเบฒเบ™ RustVMM, เป€เบŠเบดเปˆเบ‡เบชเบฐเบซเบ™เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ hypervisors เบชเบฐเป€เบžเบฒเบฐเบซเบ™เป‰เบฒเบงเบฝเบเปเบฅเบฐ virtual machine monitors (VMMs). เบšเปเบฅเบดเบชเบฑเบ”เป€เบŠเบฑเปˆเบ™ Intel, Alibaba, Amazon, Google, Linaro เปเบฅเบฐ Red Hat เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™. Intel Cloud Hypervisor เปเบฅเบฐ Dragonball hypervisors เบเปเบฒเบฅเบฑเบ‡เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ RustVMM. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป„เบ”เป‰เบขเบทเบ™เบขเบฑเบ™เบ„เบธเบ™เบ™เบฐเบžเบฒเบšเบชเบนเบ‡เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป€เบ•เบฑเบเบ™เบดเบเปƒเบ™เบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบชเบนเบ‡เบชเบธเบ”. เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš, 6 เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ–เบทเบเบฅเบฐเบšเบธเบงเปˆเบฒเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเป‚เบ”เบเบเบปเบ‡เบ•เปเปˆเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž.
  • เบเบนเป‚เบเป„เบ”เป‰เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบซเบกเปˆเบ‚เบญเบ‡เบเบปเบ™เป„เบเบเบฒเบ™เบชเบทเปˆเบชเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ Binder, เบ‚เบฝเบ™เปƒเบซเบกเปˆเปƒเบ™เบžเบฒเบชเบฒ Rust, เปƒเบซเป‰เบเบฑเบšเบฅเบฒเบเบŠเบทเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ Linux kernel. เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ„เบทเบ™เปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเป€เบชเบตเบกเบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž, เบชเบปเปˆเบ‡เป€เบชเบตเบกเป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเบ›เบญเบ”เป„เบžเปเบฅเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบšเบฑเบ™เบซเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™ Android (เบ›เบฐเบกเบฒเบ™ 70% เบ‚เบญเบ‡เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบญเบฑเบ™เบ•เบฐเบฅเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ Android เปเบกเปˆเบ™เป€เบเบตเบ”เบˆเบฒเบเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. ). เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ Binder เปƒเบ™ Rust เป„เบ”เป‰เบšเบฑเบ™เบฅเบธเบ„เบงเบฒเบกเบชเบฐเป€เบซเบกเบตเบžเบฒเบšเปƒเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปƒเบ™เบžเบฒเบชเบฒ C, เบœเปˆเบฒเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš AOSP (Android Open-Source Project) เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบชเบฐเบšเบฑเบšเป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ firmware. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบชเบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบšเบ”เบฝเบงเบเบฑเบ™ ( deviations เบžเบฒเบเปƒเบ™ -1.96% เปเบฅเบฐ +1.38%).

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™