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

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

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

  • ะกั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝ ั‚ะธะฟะฐะถ (trait) เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”, ะบะพั‚ะพั€ั‹ะน ะฟั€ะตะดัั‚ะฐะฒะปัะตั‚ ะทะฝะฐั‡ะตะฝะธะต, ะฒั‹ั‡ะธัะปะตะฝะธะต ะบะพั‚ะพั€ะพะณะพ ะฒะพะทะผะพะถะฝะพ ะตั‰ั‘ ะฝะต ะทะฐะฒะตั€ัˆะตะฝะพ ะฒ ะฟั€ะพั†ะตััะต ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฑะปะพะบะพะฒ async / .await. ะžะฟั€ะตะดะตะปัะตะผั‹ะต ะฟั€ะธ ะฟะพะผะพั‰ะธ Future ะฐัะธะฝั…ั€ะพะฝะฝั‹ะต ะทะฝะฐั‡ะตะฝะธั ะดะฐัŽั‚ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟั€ะพะดะพะปะถะธั‚ัŒ ะฒั‹ะฟะพะปะฝะตะฝะธะต ะฒ ะฟะพั‚ะพะบะต ะฟะพะปะตะทะฝะพะน ั€ะฐะฑะพั‚ั‹, ะฟะพะฟัƒั‚ะฝะพ ะพะถะธะดะฐั ะทะฐะฒะตั€ัˆะตะฝะธั ะฒั‹ั‡ะธัะปะตะฝะธะน ะพะฟั€ะตะดะตะปั‘ะฝะฝะพะณะพ ะทะฝะฐั‡ะตะฝะธั;
  • ะกั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝะฐ ะฑะธะฑะปะธะพั‚ะตะบะฐ เบˆเบฑเบ”เบชเบฑเบ™, ะฟั€ะตะดะพัั‚ะฐะฒะปััŽั‰ะฐั ัƒะผะฝั‹ะต ัƒะบะฐะทะฐั‚ะตะปะธ ะธ ะบะพะปะปะตะบั†ะธะธ ะดะปั ัƒะฟั€ะฐะฒะปะตะฝะธั ั€ะฐะทะผะตั‰ะฐะตะผั‹ะผะธ ะฒ ะฟะฐะผัั‚ะธ ะทะฝะฐั‡ะตะฝะธัะผะธ. ะ”ะปั ะฒั‹ะดะตะปะตะฝะธั ะฟะฐะผัั‚ะธ ะฒ std ั‚ะตะฟะตั€ัŒ ะฟั€ะธะผะตะฝัะตั‚ัั ั‚ะธะฟ เบชเบดเปˆเบ‡เปœเบถเปˆเบ‡, ะบะพั‚ะพั€ั‹ะน ั€ะตัะบัะฟะพั€ั‚ะธั€ัƒัŽั‚ัั ะธะท alloc. ะžั‚ะดะตะปัŒะฝะพะต ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต alloc ะธะผะตะตั‚ ัะผั‹ัะป ะฒ ะฟั€ะธะปะพะถะตะฝะธัั… ะฝะต ะฟั€ะธะฒัะทะฐะฝะฝั‹ั… ะบ std (ยซ#![no_std]ยป), ะฐ ั‚ะฐะบะถะต ะฒ ะฑะธะฑะปะธะพั‚ะตะบะฐั…, ั€ะฐััั‡ะธั‚ะฐะฝะฝั‹ั… ะฝะฐ ะฟั€ะธะผะตะฝะตะฝะธะต ะฒ ะฟะพะดะพะฑะฝั‹ั… ะฟั€ะพะณั€ะฐะผะผะฐั… ะฑะตะท std;
  • ะ”ะปั ะพะฑั…ะพะดะฐ ะฟั€ะพะฒะตั€ะพะบ ะบะพั€ั€ะตะบั‚ะฝะพะน ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ ะทะฝะฐั‡ะตะฝะธะน เบชเบฐเป€เปœเบต ะฟั€ะพะผะตะถัƒั‚ะพั‡ะฝั‹ะน ั‚ะธะฟ เบšเบฒเบ‡เบ—เบตเปœเปˆเบงเบ, ะบะพั‚ะพั€ั‹ะน ะผะพะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะฒะผะตัั‚ะพ ั„ัƒะฝะบั†ะธะธ mem::uninitialized, ะฒ ะบะฐั‡ะตัั‚ะฒะต ะตั‘ ะฑะพะปะตะต ะฑะตะทะพะฟะฐัะฝะพะน ะฐะปัŒั‚ะตั€ะฝะฐั‚ะธะฒั‹. ะคัƒะฝะบั†ะธั mem::uninitialized ัƒะดะพะฑะฝะฐ ะดะปั ะฑั‹ัั‚ั€ะพะณะพ ัะพะทะดะฐะฝะธั ะผะฐััะธะฒะพะฒ, ะฝะพ ะฒะฒะพะดะธั‚ ะบะพะผะฟะธะปัั‚ะพั€ ะฒ ะทะฐะฑะปัƒะถะดะตะฝะธะต, ั‚ะฐะบ ะบะฐะบ ัะพะทะดะฐั‘ั‚ ะฒะธะดะธะผะพัั‚ัŒ ะฒั‹ะฟะพะปะฝะตะฝะธั ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธะธ, ะฝะพ ะฒ ะดะตะนัั‚ะฒะธั‚ะตะปัŒะฝะพัั‚ะธ ะทะฝะฐั‡ะตะฝะธะต ะพัั‚ะฐั‘ั‚ัั ะฝะตะธะฝะธั†ะธะฐะปะธะทะธั€ะพะฒะฐะฝะฝั‹ะผ. MaybeUninit ะฟะพะทะฒะพะปัะตั‚ ัะฒะฝะพ ัƒะบะฐะทะฐั‚ัŒ ะบะพะผะฟะธะปัั‚ะพั€ัƒ, ั‡ั‚ะพ ะทะฝะฐั‡ะตะฝะธะต ะฝะตะธะฝะธั†ะธะฐะปะธะทะธั€ะพะฒะฐะฝะพ, ัƒั‡ะตัั‚ัŒ ัะฒัะทะฐะฝะฝะพะต ั ัั‚ะธะผ ะฒะพะทะผะพะถะฝะพะต ะฝะตะพะฟั€ะตะดะตะปั‘ะฝะฝะพะต ะฟะพะฒะตะดะตะฝะธะต, ะฐ ั‚ะฐะบะถะต ะฒ ะฟั€ะพะณั€ะฐะผะผะฐั… ะพั€ะณะฐะฝะธะทะพะฒะฐั‚ัŒ ะฟั€ะพะฒะตั€ะบัƒ ั‡ะตั€ะตะท ยซmaybe_t:ยป ะธ ะฟะพัั‚ะฐะฟะฝัƒัŽ ะธะฝะธั†ะธะฐะปะธะทะฐั†ะธัŽ ั ะฟะพะผะตั‚ะบะพะน ะตั‘ ะทะฐะฒะตั€ัˆะตะฝะธั ะฟั€ะธ ะฟะพะผะพั‰ะธ ะฒั‹ะทะพะฒะฐ ยซ.assume_init()ยป. ะก ะฟะพัะฒะปะตะฝะธะตะผ MaybeUninit ั„ัƒะฝะบั†ะธั mem::uninitialized ะฟะตั€ะตะฒะตะดะตะฝะฐ ะฒ ั€ะฐะทั€ัะด ัƒัั‚ะฐั€ะตะฒัˆะธั… ะธ ะฝะต ั€ะตะบะพะผะตะฝะดะพะฒะฐะฝะฐ ะบ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธัŽ;
  • ะขะตั…ะฝะธะบะฐ NLL (Non-Lexical Lifetimes), ั€ะฐััˆะธั€ะธะฒัˆะฐั ัะธัั‚ะตะผัƒ ัƒั‡ั‘ั‚ะฐ ะฒั€ะตะผะตะฝะธ ะถะธะทะฝะธ ะทะฐะธะผัั‚ะฒะพะฒะฐะฝะฝั‹ั… ะฟะตั€ะตะผะตะฝะฝั‹ั…, ัั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝะฐ ะดะปั ัะทั‹ะบะฐ Rust 2015 (ะธะทะฝะฐั‡ะฐะปัŒะฝะพ NLL ะฟะพะดะดะตั€ะถะธะฒะฐะปัั ั‚ะพะปัŒะบะพ Rust 2018). ะ’ะผะตัั‚ะพ ะฟั€ะธะฒัะทะบะธ ะฒั€ะตะผะตะฝะธ ะถะธะทะฝะธ ะฝะฐ ะปะตะบัะธั‡ะตัะบะพะผ ัƒั€ะพะฒะฝะต, NLL ะพััƒั‰ะตัั‚ะฒะปัะตั‚ ัƒั‡ั‘ั‚ ะฝะฐ ัƒั€ะพะฒะฝะต ะฝะฐะฑะพั€ะฐ ัƒะบะฐะทะฐั‚ะตะปะตะน ะฒ ะณั€ะฐั„ะต ะฟะพั‚ะพะบะฐ ะฒั‹ะฟะพะปะฝะตะฝะธั. ะŸะพะดะพะฑะฝั‹ะน ะฟะพะดั…ะพะด ะฟะพะทะฒะพะปัะตั‚ ัƒะฒะตะปะธั‡ะธั‚ัŒ ะบะฐั‡ะตัั‚ะฒะพ ะฟั€ะพะฒะตั€ะบะธ ะทะฐะธะผัั‚ะฒะพะฒะฐะฝะธั ะฟะตั€ะตะผะตะฝะฝั‹ั… (borrow checker) ะธ ะดะพะฟัƒัั‚ะธั‚ัŒ ะฒั‹ะฟะพะปะฝะตะฝะธะต ะฝะตะบะพั‚ะพั€ั‹ั… ะฒะธะดะพะฒ ะบะพั€ั€ะตะบั‚ะฝะพะณะพ ะบะพะดะฐ, ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะบะพั‚ะพั€ะพะณะพ ั€ะฐะฝะตะต ะฟั€ะธะฒะพะดะธะปะพ ะบ ะฒั‹ะฒะพะดัƒ ะพัˆะธะฑะบะธ. ะะพะฒะพะต ะฟะพะฒะตะดะตะฝะธะต ั‚ะฐะบะถะต ััƒั‰ะตัั‚ะฒะตะฝะฝะพ ัƒะฟั€ะพั‰ะฐะตั‚ ะพั‚ะปะฐะดะบัƒ;
  • ะ’ะบะปัŽั‡ะตะฝะฐ ะฝะพะฒะฐั ั€ะตะฐะปะธะทะฐั†ะธั ะฐััะพั†ะธะฐั‚ะธะฒะฝั‹ั… ะผะฐััะธะฒะพะฒ HashMap, ะพัะฝะพะฒะฐะฝะฝะฐั ะฝะฐ ะฟั€ะธะผะตะฝะตะฝะธะธ ัั‚ั€ัƒะบั‚ัƒั€ั‹ Swiss Table (ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ะทะฐะณั€ัƒะถะฐะตั‚ัั hashbrown::HashMap, ะตัะปะธ ัะฒะฝะพ ะฝะต ัƒะบะฐะทะฐะฝะพ ะธะฝะพะต, ะฝะฐะฟั€ะธะผะตั€, std::HashMap, ะบะพั‚ะพั€ั‹ะน ะพัะฝะพะฒะฐะฝ ะฝะฐ SipHash 1-3). ะŸั€ะพะณั€ะฐะผะผะฝั‹ะน ะธะฝั‚ะตั€ั„ะตะนั ะพัั‚ะฐะปัั ะฟั€ะตะถะฝะธะผ, ะฐ ะทะฐะผะตั‚ะฝั‹ะต ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบัƒ ะพั‚ะปะธั‡ะธั ัะฒะพะดัั‚ัั ะบ ัƒะฒะตะปะธั‡ะตะฝะธัŽ ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ะธ ะธ ัะฝะธะถะตะฝะธัŽ ะฟะพั‚ั€ะตะฑะปะตะฝะธั ะฟะฐะผัั‚ะธ;
  • ะ’ ะฟะฐะบะตั‚ะฝั‹ะน ะผะตะฝะตะดะถะตั€ cargo เป€เบžเบตเปˆเบก ะพะฟั†ะธั ยซโ€”offlineยป, ะฒะบะปัŽั‡ะฐัŽั‰ะฐั ั€ะตะถะธะผ ั€ะฐะฑะพั‚ั‹ ะฑะตะท ะพะฑั€ะฐั‰ะตะฝะธั ะฟะพ ัะตั‚ะธ, ะฟั€ะธ ะบะพั‚ะพั€ะพะผ ะฟั€ะธ ัƒัั‚ะฐะฝะพะฒะบะต ะทะฐะฒะธัะธะผะพัั‚ะตะน ะธัะฟะพะปัŒะทัƒัŽั‚ัั ั‚ะพะปัŒะบะพ ะฟั€ะพะบััˆะธั€ะพะฒะฐะฝะฝั‹ะต ะฒ ะปะพะบะฐะปัŒะฝะพะน ัะธัั‚ะตะผะต ะฟะฐะบะตั‚ั‹. ะ•ัะปะธ ะทะฐะฒะธัะธะผะพัั‚ัŒ ะพั‚ััƒั‚ัั‚ะฒัƒะตั‚ ะฒ ะปะพะบะฐะปัŒะฝะพะผ ะบััˆะต, ั‚ะพ ะฑัƒะดะตั‚ ะฒั‹ะฒะตะดะตะฝะฐ ะพัˆะธะฑะบะฐ. ะ”ะปั ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะพะน ะทะฐะณั€ัƒะทะบะธ ะทะฐะฒะธัะธะผะพัั‚ะตะน ะฒ ะปะพะบะฐะปัŒะฝั‹ะน ะบััˆ ะฟะตั€ะตะด ะฟะตั€ะตั…ะพะดะพะผ ะฒ offline ะผะพะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะบะพะผะฐะฝะดัƒ ยซcargo fetchยป;
  • ะ ะตะฐะปะธะทะพะฒะฐะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฒั‹ะทะพะฒะฐ ะผะฐะบั€ะพัะฐ ยซdbg!ยป ั ัƒะบะฐะทะฐะฝะธะตะผ ะฝะตัะบะพะปัŒะบะธั… ะฐั€ะณัƒะผะตะฝั‚ะพะฒ;
  • ะŸั€ะธะทะฝะฐะบ ยซconstยป, ะพะฟั€ะตะดะตะปััŽั‰ะธะน ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฒ ะปัŽะฑะพะผ ะบะพะฝั‚ะตะบัั‚ะต ะฒะผะตัั‚ะพ ะบะพะฝัั‚ะฐะฝั‚, ะฟั€ะธะผะตะฝั‘ะฝ ะดะปั ะผะตั‚ะพะดะพะฒ
    Layout::from_size_align_unchecked,
    mem::needs_drop,
    NonNull::dangling ะธ
    NonNull::cast;

  • เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ APIs เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡
    task::Waker, task::Poll,
    VecDeque::rotate_left, VecDeque::rotate_right,
    Read::read_vectored, Write::write_vectored,
    Iterator::copied,
    BorrowMut (ะดะปั ัั‚ั€ะพะบ) ะธ str::as_mut_ptr.

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

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