αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Rust 1.74 αŸ” αžŸαžœαž“αž€αž˜αŸ’αž˜ RustVMM αŸ” αž€αžΆαžšαžŸαžšαžŸαŸαžš Binder αž‘αžΎαž„αžœαž·αž‰αž“αŸ…αž€αŸ’αž“αž»αž„ Rust

αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž—αžΆαžŸαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΌαž‘αŸ… Rust 1.74 αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž‚αž˜αŸ’αžšαŸ„αž„ Mozilla αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž§αž”αžαŸ’αžαž˜αŸ’αž—αž–αžΈαž’αž„αŸ’αž‚αž€αžΆαžšαž˜αž·αž“αžšαž€αž”αŸ’αžšαžΆαž€αŸ‹αž…αŸ†αžŽαŸαž‰αž―αž€αžšαžΆαž‡αŸ’αž™ Rust Foundation αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αŸ” αž—αžΆαžŸαžΆαž•αŸ’αžαŸ„αžαž›αžΎαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž…αž„αž…αžΆαŸ† αž“αž·αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž—αžΆαž–αžŸαŸ’αžšαž”αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž„αžΆαžšαžαŸ’αž–αžŸαŸ‹ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαž˜αžΌαž›αžŸαŸ†αžšαžΆαž˜ αž“αž·αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž˜αŸ‰αŸ„αž„αžšαžαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž‘αŸ…αž‡αžΆαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž€αžΆαžšαžαŸ‚αž‘αžΆαŸ†αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš)αŸ”

αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžšαž”αžŸαŸ‹ Rust αž‡αž½αž™αžŸαž„αŸ’αžšαŸ’αž‚αŸ„αŸ‡αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž–αžΈαž€αŸ†αž αž»αžŸαž“αŸ…αž–αŸαž›αžšαŸ€αž”αž…αŸ†αž‘αŸ’αžšαž“αž·αž… αž“αž·αž„αž€αžΆαžšαž–αžΆαžšαž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž” αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαžαŸ†αž”αž“αŸ‹αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αž›αŸ‚αž„ αž€αžΆαžšαž–αž“αŸ’αž™αžΆαžšαž‘αŸ’αžšαž“αž·αž…αž…αž„αŸ’αž’αž»αž›αž‘αž‘αŸ αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαžŸαž…αŸ†αžŽαž»αŸ‡αŸ”αž›αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž…αŸ‚αž€αž…αžΆαž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž€αžŸαžΆαž„ αž“αž·αž„αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™ αž‚αž˜αŸ’αžšαŸ„αž„αž’αž—αž·αžœαžŒαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αž‘αŸ†αž“αž·αž‰αŸ” αžƒαŸ’αž›αžΆαŸ†αž„ crates.io αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αŸ”

αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž‡αžΌαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Rust αž“αŸ…αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž―αž€αžŸαžΆαžšαž™αŸ„αž„ αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαžŠαžΆαž“αž“αŸƒαž—αžΆαž–αž‡αžΆαž˜αŸ’αž…αžΆαžŸαŸ‹αžœαžαŸ’αžαž» αž€αžΆαžšαžαžΆαž˜αžŠαžΆαž“αž’αžΆαž™αž»αž€αžΆαž›αžšαž”αžŸαŸ‹αžœαžαŸ’αžαž» (αžœαž·αžŸαžΆαž›αž—αžΆαž–) αž“αž·αž„αž€αžΆαžšαžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸƒαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαŸ” αž…αŸ’αžšαŸ‚αŸ‡αž€αŸαž•αŸ’αžαž›αŸ‹αž€αžΆαžšαž€αžΆαžšαž–αžΆαžšαž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αž…αŸ†αž“αž½αž“αž‚αžαŸ‹αž›αžΎαžŸαž…αŸ†αžŽαž»αŸ‡ αž‘αžΆαž˜αž‘αžΆαžšαž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž“αŸƒαžαž˜αŸ’αž›αŸƒαž’αžαŸαžšαž˜αž»αž“αž–αŸαž›αž”αŸ’αžšαžΎ αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αŸ†αž αž»αžŸαž”αžΆαž“αž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž’αž“αž»αžœαžαŸ’αžαž‚αŸ„αž›αž‚αŸ†αž“αž·αžαž“αŸƒαžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“ αž“αž·αž„αž’αžαŸαžšαžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžšαž‹αž·αžαž·αžœαž“αŸ’αžαžαŸ’αž›αžΆαŸ†αž„ αžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž€αŸ†αž αž»αžŸαž‘αžΌαž‡αžΈαžαž›αŸ”

αž€αžΆαžšαž…αŸ’αž“αŸƒαž”αŸ’αžšαžŒαž·αžαžŸαŸ†αžαžΆαž“αŸ‹αŸ—αŸ–

  • αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™ lint αžαžΆαž˜αžšαž™αŸˆαž―αž€αžŸαžΆαžš Cargo.toml αž‡αžΆαž˜αž½αž™ manifest αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ lint αžŠαžΌαž…αž‡αžΆαž€αž˜αŸ’αžšαž·αžαž†αŸ’αž›αžΎαž™αžαž” (αž αžΆαž˜αžƒαžΆαžαŸ‹ αž”αžŠαž·αžŸαŸαž’ αž–αŸ’αžšαž˜αžΆαž“ αž’αž“αž»αž‰αŸ’αž‰αžΆαž) αž•αŸ’αž“αŸ‚αž€αžαŸ’αž˜αžΈ β€œ[lints]” αž“αž·αž„ "[workspace.lints]” αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž“αžΎαž‘αžΎαž„ αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž™αž€αž˜αž€αž–αž·αž…αžΆαžšαžŽαžΆαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αŸ†αž–αžΈ αž€αžΆαžšαž€αžŸαžΆαž„αž‘αžΎαž„αžœαž·αž‰αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‘αž„αŸ‹ β€œ-F”, β€œ-D”, β€œ-W” αž“αž·αž„ β€œ-A” αž“αŸ…αž–αŸαž›αžŠαŸ†αž‘αžΎαž„ αž¬αž”αž“αŸ’αžαŸ‚αž˜ β€œ#![forbid(unsafe_code)]” αž“αž·αž„ β€œ#![deny(cppy :” attributes to the code) :enum_glob_use)]" αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αžΆαž…αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„ Cargo manifest: [lints.rust] unsafe_code = "forbid" [lints.clippy] enum_glob_use = "αž”αžŠαž·αžŸαŸαž’"
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αž‰αŸ’αž…αž”αŸ‹ Crate αž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž—αžΆαž–αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžƒαŸ’αž›αžΆαŸ†αž„αŸ” αž€αžΆαžšαž…αŸ‚αž€αž…αžΆαž™αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŠαžΆαž€αŸ‹αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž αžΆαž„αž–αŸαžαŸŒαž˜αžΆαž“αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž›αžΈαž“αž»αž… (αž•αŸ’αž’αŸ‚αž€αž›αžΎ libsecret), macOS (Keychain) αž“αž·αž„ Windows (αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αŸαžαŸŒαž˜αžΆαž“αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžšαž”αžŸαŸ‹αžœαžΈαž“αžŠαžΌ) αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ†αž”αžΌαž„αž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž› αž“αž·αž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž•αŸ’αžŸαŸαž„αŸ—αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž“αž·αž„ αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŸαž‰αŸ’αž‰αžΆαžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αŸ†αž“αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž–αžΆαž€αŸ’αž™αžŸαž˜αŸ’αž„αžΆαžαŸ‹ 1Password αŸ” αž€αžΆαžšαž•αŸ’αž‘αŸ€αž„αž•αŸ’αž‘αžΆαžαŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαŸ„αž™αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŽαžΆαž˜αž½αž™ αž˜αž·αž“αž˜αŸ‚αž“αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžαžΆαž€αž‰αŸ’αž…αž”αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž“αŸ„αŸ‡αž‘αŸαŸ” ~/.cargo/config.toml [αž…αž»αŸ‡αž”αž‰αŸ’αž‡αžΈ] global-credential-providers = ["cargo:token", "cargo:libsecret"]
  • αž€αžΆαžšβ€‹αž‚αžΆαŸ†αž‘αŸ’αžšβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αžΆαžšβ€‹αž–αŸ’αž™αžΆαž€αžšβ€‹αž”αŸ’αžšαž—αŸαž‘β€‹αžαŸ’αžšαž‘αž”αŸ‹ (impl_trait_projections) αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αž˜αžΆαž“β€‹αž›αŸ†αž“αžΉαž„ αžŠαŸ‚αž›β€‹αž’αž“αž»αž‰αŸ’αž‰αžΆαžβ€‹αž±αŸ’αž™β€‹αžαŸ’αž›αž½αž“β€‹αž―αž„ αž“αž·αž„ T:: Assoc αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž›αžΎαž€β€‹αž‘αžΎαž„β€‹αž€αŸ’αž“αž»αž„β€‹αž”αŸ’αžšαž—αŸαž‘β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αžŠαžΌαž…β€‹αž‡αžΆ "async fn" αž“αž·αž„ "-> impl Trait" αŸ” struct Wrapper<'a, T>(&'a T); // αž”αŸ’αžšαž—αŸαž‘β€‹αžαŸ’αžšαž‘αž”αŸ‹β€‹αžŸαŸ’αžšαž’αžΆαž”αŸ‹β€‹αžŠαŸ‚αž›β€‹αž“αž·αž™αžΆαž™β€‹αž’αŸ†αž–αžΈ `αžαŸ’αž›αž½αž“αž―αž„`: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* … */ } fn impl_trait() -> impl Iterator { /* … */ } } αž…αžšαž·αžαž›αž€αŸ’αžαžŽαŸˆ<'a> { αž”αŸ’αžšαž—αŸαž‘ Assoc; fn new() -> αžαŸ’αž›αž½αž“αž―αž„ ::Assoc; } impl αž›αž€αŸ’αžαžŽαŸˆ<'_> αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ () { αž”αŸ’αžšαž—αŸαž‘ 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_αž˜αž·αž“αž”αžΆαž“αž’αžΈαž€
    • std::ffi::OsString::into_encoded_bytes
    • std::ffi::OsStr::from_encoded_bytes_αž˜αž·αž“αž’αžΈαž€
    • 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]>
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ αž”αŸ’αžšαž’αž”αŸ‹αž§αž”αž€αžšαžŽαŸ αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŸαŸ’αžŠαž„αŸ‹αžŠαžΆαžš αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž“αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆ Apple αžŠαŸ‚αž›αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž€αžΆαžšαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹ macOS 10.12 Sierra, iOS 10 αž“αž·αž„ tvOS 10 αžŠαŸ‚αž›αž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž€αŸ’αž“αž»αž„αž†αŸ’αž“αžΆαŸ† 2016 αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”
  • αž€αž˜αŸ’αžšαž·αžαž‘αžΈαž”αžΈαž“αŸƒαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαŸαž‘αž·αž€αžΆ i686-pc-windows-gnullvm αŸ” αž€αž˜αŸ’αžšαž·αžαž‘αžΈαž”αžΈαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžš αž¬αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆαžαžΎαž€αžΌαžŠαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž¬αž’αžαŸ‹αŸ”
  • αž€αž˜αŸ’αžšαž·αžαž‘αžΈαž–αžΈαžšαž“αŸƒαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ loongarch64-unknown-none platform platform αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαŸ” αž€αž˜αŸ’αžšαž·αžαž‘αžΈαž–αžΈαžšαž“αŸƒαž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž’αžΆαž“αžΆαž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž–αžΈαžšαžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž—αžΆαžŸαžΆ Rust αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αŸ–

  • OSTIF (αž˜αžΌαž›αž“αž·αž’αž·αž€αŸ‚αž›αž˜αŸ’αž’αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž ) αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž–αž„αŸ’αžšαžΉαž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž”αŸ’αžšαž—αž–αž”αžΎαž€αž…αŸ†αž αž”αžΆαž“αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αžŸαžΆαž™αž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžŸαžœαž“αž€αž˜αŸ’αž˜αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ RustVMM αžŠαŸ‚αž›αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžΆαžŸαž’αžΆαžαž»αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž§αž”αž€αžšαžŽαŸαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž–αž·αžŸαŸαžŸαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž—αžΆαžšαž€αž·αž…αŸ’αž… αž“αž·αž„αž˜αŸ‰αžΌαž“αžΈαž‘αŸαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž (VMMs) αŸ” αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžŠαžΌαž…αž‡αžΆ Intel, Alibaba, Amazon, Google, Linaro αž“αž·αž„ Red Hat αž€αŸ†αž–αž»αž„αž…αžΌαž›αžšαž½αž˜αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αŸ” Intel Cloud Hypervisor αž“αž·αž„ Dragonball hypervisors αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž•αŸ’αž’αŸ‚αž€αž›αžΎ RustVMM αŸ” αžŸαžœαž“αž€αž˜αŸ’αž˜αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž–αžΈαž‚αž»αžŽαž—αžΆαž–αžαŸ’αž–αžŸαŸ‹αž“αŸƒαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠ αž“αž·αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ αž“αž·αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αŸ’αž“αž»αž„αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž’αžαž·αž”αžšαž˜αžΆαŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž’αŸ’αžœαžΎαžŸαžœαž“αž€αž˜αŸ’αž˜ αž”αž‰αŸ’αž αžΆαž…αŸ†αž“αž½αž“ 6 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžαžΆαž˜αž·αž“αž˜αžΆαž“αž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αžŠαž›αŸ‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αŸ”
  • Google αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαŸ’αž˜αžΈαž“αŸƒαž™αž“αŸ’αžαž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž’αž“αŸ’αžαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš Binder αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αžΎαž„αžœαž·αž‰αž‡αžΆαž—αžΆαžŸαžΆ Rust αž‘αŸ…αž€αžΆαž“αŸ‹αž”αž‰αŸ’αž‡αžΈαžŸαŸ†αž”αž»αžαŸ’αžšαžšαž½αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž…αŸ” αž€αžΆαžšαž„αžΆαžšαž‘αžΎαž„αžœαž·αž‰αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„αž–αž„αŸ’αžšαžΉαž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž›αžΎαž€αž€αž˜αŸ’αž–αžŸαŸ‹αž”αž…αŸ’αž…αŸαž€αž‘αŸαžŸαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž“αž·αž„αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž”αž‰αŸ’αž αžΆαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš Android (αž”αŸ’αžšαž αŸ‚αž› 70% αž“αŸƒαž—αžΆαž–αž„αžΆαž™αžšαž„αž‚αŸ’αžšαŸ„αŸ‡αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ Android αž‚αžΊαž”αžŽαŸ’αžαžΆαž›αž˜αž€αž–αžΈαž€αŸ†αž αž»αžŸαž“αŸ…αž–αŸαž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αŸ” ) αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž Binder in Rust αž‘αž‘αž½αž›αž”αžΆαž“αž—αžΆαž–αžŸαŸ’αž˜αžΎαž‚αŸ’αž“αžΆαž“αŸƒαž˜αž»αžαž„αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αŸ†αžŽαŸ‚αžŠαžΎαž˜αž‡αžΆαž—αžΆαžŸαžΆ C αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ AOSP (Android Open-Source Project) αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž’αžΆαž…αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αžΆαŸ†αž„αž–αžΈαžšαž‚αžΊαž”αŸ’αžšαž αŸ‚αž›αž“αŸ…αž€αž˜αŸ’αžšαž·αžαžŠαžΌαž…αž‚αŸ’αž“αžΆ (αž‚αž˜αŸ’αž›αžΆαžαž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž„αŸ‹ -1.96% αž“αž·αž„ +1.38%) αŸ”

αž”αŸ’αžšαž—αž–: opennet.ru

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹