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

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

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

  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฒะฝัƒั‚ั€ะธ ะฐั‚ั€ะธะฑัƒั‚ะพะฒ ะผะฐะบั€ะพัะพะฒ, ะฝะฐะฟะพะผะธะฝะฐัŽั‰ะธั… ั„ัƒะฝะบั†ะธะธ (ะฟั€ะพั†ะตะดัƒั€ะฝั‹ะต ะผะฐะบั€ะพัั‹ ะธ ะผะฐะบั€ะพัั‹, ัะพะทะดะฐะฝะฝั‹ะต ะฟั€ะธ ะฟะพะผะพั‰ะธ ะผะฐะบั€ะพัะฐ ยซmacro_rules!ยป). ะžั‚ ั„ัƒะฝะบั†ะธะน ะฟะพะดะพะฑะฝั‹ะต ะผะฐะบั€ะพัั‹ ะพั‚ะปะธั‡ะฐัŽั‚ัั ัะธะผะฒะพะปะพะผ ยซ!ยป ะฟะพัะปะต ะธะผะตะฝะธ (macro!(โ€ฆ)) ะธ ะฟะพะดัั‚ะฐะฝะพะฒะบะพะน ะธัั…ะพะดะฝะพะณะพ ั‚ะตะบัั‚ะฐ ะผะฐะบั€ะพัะฐ ะฒะผะตัั‚ะพ ะณะตะฝะตั€ะธั€ะพะฒะฐะฝะธั ะฒั‹ะทะพะฒะฐ ั„ัƒะฝะบั†ะธะธ. ะ’ั‹ะทะพะฒ ะผะฐะบั€ะพัะพะฒ ะฒะฝัƒั‚ั€ะธ ะฐั‚ั€ะธะฑัƒั‚ะพะฒ ะผะพะถะตั‚ ะพะบะฐะทะฐั‚ัŒัั ะฟะพะปะตะทะฝั‹ะผ ะดะปั ะฒะบะปัŽั‡ะตะฝะธั ะฒ ะดะพะบัƒะผะตะฝั‚ะธั€ัƒัŽั‰ะธะต ะบะพะผะผะตะฝั‚ะฐั€ะธะธ ัะพะดะตั€ะถะธะผะพะณะพ ะธะท ะดั€ัƒะณะธั… ั„ะฐะนะปะพะฒ. ะะฐะฟั€ะธะผะตั€, ะดะปั ะฒัั‚ะฐะฒะบะธ ัะพะดะตั€ะถะธะผะพะณะพ ั„ะฐะนะปะฐ README ะธ ั€ะตะทัƒะปัŒั‚ะฐั‚ะฐ ะฒั‹ะฟะพะปะฝะตะฝะธั ัะบั€ะธะฟั‚ะฐ ะผะพะถะฝะพ ัƒะบะฐะทะฐั‚ัŒ: #![doc = include_str!(ยซREADME.mdยป)] #[path = concat!(env!(ยซOUT_DIRยป), ยซ/generated.rsยป)] mod generated;
  • ะกั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝั‹ ะฒัั‚ั€ะพะตะฝะฝั‹ะต ะฒ ะบะพะผะฟะธะปัั‚ะพั€ ั„ัƒะฝะบั†ะธะธ (Intrinsics) ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ wasm32, ะฟะพะทะฒะพะปััŽั‰ะธะต ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะธะฝัั‚ั€ัƒะบั†ะธะธ SIMD ะฒ WebAssembly. ะ‘ะพะปัŒัˆะฐั ั‡ะฐัั‚ัŒ ั„ัƒะฝะบั†ะธะน, ั‚ะฐะบะธั… ะบะฐะบ v128_bitselect, ะดะพัั‚ัƒะฟะฝั‹ ะฒ ั€ะตะถะธะผะต ยซsafeยป, ะฝะพ ะฝะตะบะพั‚ะพั€ั‹ะต ั„ัƒะฝะบั†ะธะธ ั€ะฐะฑะพั‚ะฐัŽั‰ะธะต ั ัƒะบะฐะทะฐั‚ะตะปัะผะธ (ะฝะฐะฟั€ะธะผะตั€, v128_load) ะพัั‚ะฐัŽั‚ัั ยซunsafeยป.
  • ะ’ะพะทะฒั€ะฐั‰ะตะฝะพ ะฟั€ะธะผะตะฝะตะฝะธะต ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะธะฝะบั€ะตะผะตะฝั‚ะฐะปัŒะฝะพะน ะบะพะผะฟะธะปัั†ะธะธ, ะฟะพะทะฒะพะปััŽั‰ะตะน ะฟะตั€ะตัะพะฑะธั€ะฐั‚ัŒ ั‚ะพะปัŒะบะพ ะธะทะผะตะฝะธะฒัˆะธะตัั ั‡ะฐัั‚ะธ ะบะพะดะฐ, ั‡ั‚ะพ ะฟะพะทะฒะพะปัะตั‚ ะทะฝะฐั‡ะธั‚ะตะปัŒะฝะพ ัะพะบั€ะฐั‚ะธั‚ัŒ ะฒั€ะตะผั ัะฑะพั€ะบะธ ะฟั€ะพะตะบั‚ะฐ ะฟั€ะธ ะฟะพะฒั‚ะพั€ะฝะพะน ะบะพะผะฟะธะปัั†ะธะธ ะฟะพัะปะต ะฒะฝะตัะตะฝะธั ะผะตะปะบะธั… ะฟั€ะฐะฒะพะบ. ะ˜ะฝะบั€ะตะผะตะฝั‚ะฐะปัŒะฝะฐั ะบะพะผะฟะธะปัั†ะธั ะฑั‹ะปะฐ ะพั‚ะบะปัŽั‡ะตะฝะฐ ะฒ ะฒั‹ะฟัƒัะบะต 1.52.1 ะธะท-ะทะฐ ะฒั‹ัะฒะปะตะฝะธั ัะบั€ั‹ั‚ั‹ั… ะพัˆะธะฑะพะบ, ะฒัะฟะปั‹ะฒัˆะธั… ะฟะพัะปะต ะดะพะฑะฐะฒะปะตะฝะธั ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพะน ะฟั€ะพะฒะตั€ะบะธ ะทะฐะณั€ัƒะทะบะธ ะดะฐะฝะฝั‹ั… ะธะท ะดะธัะบะพะฒะพะณะพ ะบััˆะฐ.
  • ะ’ ั€ะฐะทั€ัะด ัั‚ะฐะฑะธะปัŒะฝั‹ั… ะฟะตั€ะตะฒะตะดะตะฝะฐ ะฝะพะฒะฐั ะฟะพั€ั†ะธั API, ะฒ ั‚ะพะผ ั‡ะธัะปะต ัั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝั‹:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • ะ’ cargo-tree ะดะพะฑะฐะฒะปะตะฝั‹ ะพะฟั†ะธะธ: ยซโ€”prune <spec>ยป ะดะปั ัƒะดะฐะปะตะฝะธั ะฟะฐะบะตั‚ะฐ ะธะท ะณั€ะฐั„ะฐ ะทะฐะฒะธัะธะผะพัั‚ะตะน, ยซโ€”depthยป ะดะปั ะฒั‹ะฒะพะดะฐ ั‚ะพะปัŒะบะพ ัะปะตะผะตะฝั‚ะพะฒ ะทะฐะดะฐะฝะฝะพะณะพ ัƒั€ะพะฒะฝั ะฒะปะพะถะตะฝะฝะพัั‚ะธ ะฒ ะดะตั€ะตะฒะต ะทะฐะฒะธัะธะผะพัั‚ะตะน, ยซโ€”edges no-proc-macroยป ะดะปั ัะบั€ั‹ั‚ะธั ะทะฐะฒะธัะธะผะพัั‚ะตะน ะฟั€ะพั†ะตะดัƒั€ะฝั‹ั… ะผะฐะบั€ะพัะพะฒ.

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

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