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

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

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

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

  • ะ’ ะฟะฐะบะตั‚ะฝะพะผ ะผะตะฝะตะดะถะตั€ะต Cargo ะธ ั€ะตะฟะพะทะธั‚ะพั€ะธะธ crates.io ัั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝะฐ ะฟะพะดะดะตั€ะถะบะฐ ะฟั€ะพั‚ะพะบะพะปะฐ Sparse, ะพะฟั€ะตะดะตะปััŽั‰ะตะณะพ ะฝะพะฒั‹ะน ัะฟะพัะพะฑ ั€ะฐะฑะพั‚ั‹ ั ะธะฝะดะตะบัะพะผ, ะฒ ะบะพั‚ะพั€ะพะผ ะพั‚ั€ะฐะถะตะฝั‹ ะดะพัั‚ัƒะฟะฝั‹ะต ะฒะตั€ัะธะธ ะฒัะตั… ััƒั‰ะตัั‚ะฒัƒัŽั‰ะธั… ะฒ ั€ะตะฟะพะทะธั‚ะพั€ะธะธ ะฟะฐะบะตั‚ะพะฒ. ะะพะฒั‹ะน ะฟั€ะพั‚ะพะบะพะป ะฟะพะทะฒะพะปัะตั‚ ััƒั‰ะตัั‚ะฒะตะฝะฝะพ ะฟะพะฒั‹ัะธั‚ัŒ ัะบะพั€ะพัั‚ัŒ ั€ะฐะฑะพั‚ั‹ ั crates.io ะธ ั€ะตัˆะธั‚ัŒ ะฟั€ะพะฑะปะตะผั‹ ั ะผะฐััˆั‚ะฐะฑะธั€ะพะฒะฐะฝะธะตะผ ะฟั€ะธ ะดะฐะปัŒะฝะตะนัˆะตะผ ั€ะพัั‚ะต ั‡ะธัะปะฐ ะฟะฐะบะตั‚ะพะฒ ะฒ ั€ะตะฟะพะทะธั‚ะพั€ะธะธ.

    ะ”ะปั ัะพะบั€ะฐั‰ะตะฝะธั ะทะฐะดะตั€ะถะตะบ, ะฒะพะทะฝะธะบะฐัŽั‰ะธั… ะธะท-ะทะฐ ะทะฐะณั€ัƒะทะบะธ ะฟะพะปะฝะพะณะพ ะธะฝะดะตะบัะฐ, ะฒ Sparse ะฒะผะตัั‚ะพ ะดะพัั‚ัƒะฟะฐ ะบ ะธะฝะดะตะบััƒ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ Git ะทะฐะดะตะนัั‚ะฒะพะฒะฐะฝะฐ ะฟั€ัะผะฐั ะทะฐะณั€ัƒะทะบะฐ ะฟะพ HTTPS ั‚ะพะปัŒะบะพ ะฝะตะพะฑั…ะพะดะธะผั‹ั… ะธะฝะดะตะบัะฝั‹ั… ะดะฐะฝะฝั‹ั…, ะพั…ะฒะฐั‚ั‹ะฒะฐัŽั‰ะธั… ะทะฐะฒะธัะธะผะพัั‚ะธ ะบะพะฝะบั€ะตั‚ะฝะพะณะพ ะฟั€ะพะตะบั‚ะฐ. ะ”ะปั ะพั‚ะดะฐั‡ะธ ะธะฝะดะตะบัะฝั‹ั… ะดะฐะฝะฝั‹ั… ะทะฐะดะตะนัั‚ะฒะพะฒะฐะฝ ะฝะพะฒั‹ะน ัะตั€ะฒะธั index.crates.io. ะŸะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะฝะพะฒั‹ะน ะฟั€ะพั‚ะพะบะพะป ะฟะปะฐะฝะธั€ัƒัŽั‚ ะทะฐะดะตะนัั‚ะฒะพะฒะฐั‚ัŒ ะฒ ะฒะตั‚ะบะต Rust 1.70, ะฐ ะดะพ ัั‚ะพะณะพ ะดะปั ะตะณะพ ะฒะบะปัŽั‡ะตะฝะธั ะผะพะถะฝะพ ัƒัั‚ะฐะฝะพะฒะธั‚ัŒ ะฟะตั€ะตะผะตะฝะฝัƒัŽ ะพะบั€ัƒะถะตะฝะธั ยซCARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparseยป ะธะปะธ ะดะพะฑะฐะฒะธั‚ัŒ ะฒ ัะตะบั†ะธัŽ ยซ[registries.crates-io]ยป ั„ะฐะนะปะฐ .cargo/config.toml ะฟะฐั€ะฐะผะตั‚ั€ โ€˜protocol = ยซsparseยปโ€˜.

  • ะ”ะพะฑะฐะฒะปะตะฝ ะผะฐะบั€ะพั ยซpin!ยป, ะฟะพะทะฒะพะปััŽั‰ะธะน ัะพะทะดะฐั‚ัŒ ัั‚ั€ัƒะบั‚ัƒั€ัƒ Pin<&mut T> ะธะท ะฒั‹ั€ะฐะถะตะฝะธั ยซTยป ั ะปะพะบะฐะปัŒะฝั‹ะผ ะทะฐะบั€ะตะฟะปะตะฝะธะตะผ ะตะณะพ ัะพัั‚ะพัะฝะธั (ะฒ ะพั‚ะปะธั‡ะธะต ะพั‚ Box::pin ะฝะต ะฒั‹ะดะตะปัะตั‚ ะฟะฐะผัั‚ัŒ ะฒ ะบัƒั‡ะต, ะฐ ะฒั‹ะฟะพะปะฝัะตั‚ ะฟั€ะธะฒัะทะบัƒ ะฝะฐ ัƒั€ะพะฒะฝะต ัั‚ะตะบะฐ).
  • ะŸั€ะตะดะปะพะถะตะฝ ะฟั€ะธะผะตะฝัะตะผั‹ะน ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบ ะพัˆะธะฑะพะบ ั€ะฐัะฟั€ะตะดะตะปะตะฝะธั ะฟะฐะผัั‚ะธ, ะฟั€ะธะผะตะฝัะตะผั‹ะน ะฟั€ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ัˆั‚ะฐั‚ะฝะพะณะพ ะฟะฐะบะตั‚ะฐ alloc. ะŸั€ะธะปะพะถะตะฝะธั ะฒ ะบะพั‚ะพั€ั‹ั… ะฒะบะปัŽั‡ะฐะตั‚ัั ั‚ะพะปัŒะบะพ alloc (ะฑะตะท std) ะฟั€ะธ ัะฑะพัั… ะฒั‹ะดะตะปะตะฝะธั ะฟะฐะผัั‚ะธ ะพั‚ะฝั‹ะฝะต ะฑัƒะดัƒั‚ ะฒั‹ะทั‹ะฒะฐั‚ัŒ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบ ยซpanic!ยป, ะบะพั‚ะพั€ั‹ะน ะฟั€ะธ ะถะตะปะฐะฝะธะธ ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ะฟะตั€ะตั…ะฒะฐั‡ะตะฝ ะฟั€ะธ ะฟะพะผะพั‰ะธ ยซ#[panic_handler]ยป. ะŸั€ะพะณั€ะฐะผะผั‹, ะธัะฟะพะปัŒะทัƒัŽั‰ะธะต ะฑะธะฑะปะธะพั‚ะตะบัƒ std, ะบะฐะบ ะธ ั€ะฐะฝัŒัˆะต ะฑัƒะดัƒั‚ ะฒั‹ะฒะพะดะธั‚ัŒ ะธะฝั„ะพั€ะผะฐั†ะธัŽ ะพะฑ ะพัˆะธะฑะบะต ะฒ stderr ะธ ะฐะฒะฐั€ะธะนะฝะพ ะทะฐะฒะตั€ัˆะฐั‚ัŒ ะฒั‹ะฟะพะปะฝะตะฝะธะต.
  • เบžเบฒเบเบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡:
    • {core,std}::pin::pin!
    • impl From<bool> for {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut ะดะปั PathBuf
  • ะŸั€ะธะทะฝะฐะบ ยซconstยป, ะพะฟั€ะตะดะตะปััŽั‰ะธะน ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฒ ะปัŽะฑะพะผ ะบะพะฝั‚ะตะบัั‚ะต ะฒะผะตัั‚ะพ ะบะพะฝัั‚ะฐะฝั‚, ะฟั€ะธะผะตะฝั‘ะฝ ะฒ ั„ัƒะฝะบั†ะธะธ VecDeque::new.
  • ะ”ะปั ั€ะฐะฑะพั‚ั‹ ะฝะฐ ะฟะปะฐั‚ั„ะพั€ะผะต Android ั‚ะตะฟะตั€ัŒ ั‚ั€ะตะฑัƒะตั‚ัั ะบะฐะบ ะผะธะฝะธะผัƒะผ NDK r25 (API 19), ั‚.ะต. ะผะธะฝะธะผะฐะปัŒะฝะฐั ะฟะพะดะดะตั€ะถะธะฒะฐะตะผะฐั ะฒะตั€ัะธั Android ะฟะพะฒั‹ัˆะตะฝะฐ ะดะพ 4.4 (KitKat).
  • ะ ะตะฐะปะธะทะพะฒะฐะฝ ั‚ั€ะตั‚ะธะน ัƒั€ะพะฒะตะฝัŒ ะฟะพะดะดะตั€ะถะบะธ ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). ะขั€ะตั‚ะธะน ัƒั€ะพะฒะตะฝัŒ ะฟะพะดั€ะฐะทัƒะผะตะฒะฐะตั‚ ะฑะฐะทะพะฒัƒัŽ ะฟะพะดะดะตั€ะถะบัƒ, ะฝะพ ะฑะตะท ะฐะฒั‚ะพะผะฐั‚ะธะทะธั€ะพะฒะฐะฝะฝะพะณะพ ั‚ะตัั‚ะธั€ะพะฒะฐะฝะธั, ะฟัƒะฑะปะธะบะฐั†ะธะธ ะพั„ะธั†ะธะฐะปัŒะฝั‹ั… ัะฑะพั€ะพะบ ะธ ะฟั€ะพะฒะตั€ะบะธ ะฒะพะทะผะพะถะฝะพัั‚ะธ ัะฑะพั€ะบะธ ะบะพะดะฐ.

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

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