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

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

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

  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เปเบžเบเป€เบเบ”เบชเบดเบ™เบ„เป‰เบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบŠเบธเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบขเบนเปˆเบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบšเบ—เบฐเบšเบฝเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ crates.io. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเปˆเบงเบ™เบ•เบปเบงเบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เป„เบ”เป‰, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบฅเบฒเบเบŠเบทเปˆเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปƒเบ™ Cargo.toml, เปเบฅเบฐเบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบš crates.io เบชเปเบฒเบฅเบฑเบšเบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡เป€เบ–เบดเบ‡เบ—เบฑเบ‡เบชเบญเบ‡ crates. io เปเบฅเบฐเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡.

    ะ”ะปั ะดะพะฑะฐะฒะปะตะฝะธั ะฒะฝะตัˆะฝะธั… ั€ะตะตัั‚ั€ะพะฒ ะฒ .cargo/config (ั€ะฐัะฟะพะปะพะถะตะฝะฝะพะผ ะฒ $HOME ะปะธะฑะพ ะฒ ะดะธั€ะตะบั‚ะพั€ะธะธ ั ะฟะฐะบะตั‚ะพะผ)
    ะฟั€ะตะดัƒัะผะพั‚ั€ะตะฝะฐ ัะตะบั†ะธั ยซ[registries]ยป, ะฐ ะดะปั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฒะฝะตัˆะฝะตะณะพ ั€ะตะตัั‚ั€ะฐ ะฒ ะพะฟะธัะฐะฝะธะธ ะบะฐะถะดะพะน ะทะฐะฒะธัะธะผะพัั‚ะธ ะฒ Cargo.toml ะฟะพัะฒะธะปะฐััŒ ะพะฟั†ะธั ยซregistryยป. ะ”ะปั ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบ ะดะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพะผัƒ ั€ะตะตัั‚ั€ัƒ ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะฟะพะผะตัั‚ะธั‚ัŒ ั‚ะพะบะตะฝ ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ ะฒ ั„ะฐะนะป ~/.cargo/credentials ะธ ะฒั‹ะฟะพะปะฝะธั‚ัŒ ะบะพะผะฐะฝะดัƒ
    "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบชเบดเบ™เบ„เป‰เบฒ --registry=my-registry" เปเบฅเบฐเป€เบžเบทเปˆเบญเป€เบœเบตเบเปเบœเปˆเบŠเบธเบ” -
    "cargo publish -registry=my-registry";

  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฟะพะปะฝะพั†ะตะฝะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะพะฟะตั€ะฐั‚ะพั€ะฐ ยซ?ยป ะฒ ั‚ะตัั‚ะฐั… doctests, ะฟะพะทะฒะพะปััŽั‰ะธั… ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะบะพะด ะฟั€ะธะผะตั€ะพะฒ ะธะท ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ ะฒ ะบะฐั‡ะตัั‚ะฒะต ั‚ะตัั‚ะพะฒ. ะ ะฐะฝะตะต ะพะฟะตั€ะฐั‚ะพั€
    "?" เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ "fn main()" เบซเบผเบทเปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ "#[test]";

  • ะ’ ะพะฟั€ะตะดะตะปัะตะผั‹ั… ะฟั€ะธ ะฟะพะผะพั‰ะธ ะฟั€ะพั†ะตะดัƒั€ะฝั‹ั… ะผะฐะบั€ะพัะพะฒ ัะพะฑัั‚ะฒะตะฝะฝั‹ั… ะฐั‚ั€ะธะฑัƒั‚ะฐั… (custom attribute) เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฟั€ะพะธะทะฒะพะปัŒะฝั‹ั… ะฝะฐะฑะพั€ะพะฒ ั‚ะพะบะตะฝะพะฒ (ยซ#[attr($tokens)]ยป, ยซ#[attr[$tokens]] ะธ #[attr{$tokens}]ยป). ะ ะฐะฝะตะต ัะปะตะผะตะฝั‚ั‹ ะผะพะณะปะธ ะทะฐะดะฐะฒะฐั‚ัŒัั ั‚ะพะปัŒะบะพ ะฒ ะดั€ะตะฒะพะฒะธะดะฝะพะผ/ั€ะตะบัƒั€ัะธะฒะฝะพะผ ะฒะธะดะต c ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ัั‚ั€ะพะบะพะฒั‹ั… ะปะธั‚ะตั€ะฐะปะพะฒ, ะฝะฐะฟั€ะธะผะตั€ ยซ#[foo(bar, baz(quux, foo = ยซbarยป))]ยป, ะฐ ั‚ะตะฟะตั€ัŒ ะฒะพะทะผะพะถะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะฟะตั€ะตั‡ะธัะปะตะฝะธะน (โ€˜#[range(0..10)]โ€™) ะธ ะบะพะฝัั‚ั€ัƒะบั†ะธะน ะฒะธะดะฐ ยซ#[bound(T: MyTrait)]ยป;
  • ะกั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝั‹ ั‚ะธะฟะฐะถะธ (trait) TryFrom ะธ TryInto, ะฟะพะทะฒะพะปััŽั‰ะธะต ะฒั‹ะฟะพะปะฝัั‚ัŒ ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธั ั‚ะธะฟะพะฒ ั ะพะฑั€ะฐะฑะพั‚ะบะพะน ะพัˆะธะฑะพะบ. ะะฐะฟั€ะธะผะตั€, ะผะตั‚ะพะดั‹, ะฟะพะดะพะฑะฝั‹ะต from_be_bytes, ั ั†ะตะปะพั‡ะธัะปะตะฝะฝั‹ะผะธ ั‚ะธะฟะฐะผะธ ะฒ ะบะฐั‡ะตัั‚ะฒะต ะฒั…ะพะดะฝั‹ั… ะดะฐะฝะฝั‹ั… ะธัะฟะพะปัŒะทัƒัŽั‚ ะผะฐััะธะฒั‹, ะฝะพ ะดะฐะฝะฝั‹ะต ั‡ะฐัั‚ะพ ะฟะพัั‚ัƒะฟะฐัŽั‚ c ั‚ะธะฟะพะผ Slice, ะฐ ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธะต ะผะตะถะดัƒ ะผะฐััะธะฒะฐะผะธ ะธ ัะปะฐะนัะฐะผะธ ะฟั€ะพะฑะปะตะผะฐั‚ะธั‡ะฝะพ ะดะตะปะฐั‚ัŒ ะฒั€ัƒั‡ะฝัƒัŽ. ะŸั€ะธ ะฟะพะผะพั‰ะธ ะฝะพะฒั‹ั… ั‚ะธะฟะฐะถะตะน ัƒะบะฐะทะฐะฝะฝะฐั ะพะฟะตั€ะฐั†ะธั ะผะพะถะตั‚ ะฑั‹ั‚ัŒ ัะพะฒะตั€ัˆะตะฝะฐ ะฝะฐ ะปะตั‚ัƒ ั‡ะตั€ะตะท ะฒั‹ะทะพะฒ .try_into(), ะฝะฐะฟั€ะธะผะตั€, ยซlet num = u32::from_be_bytes(slice.try_into()?)ยป. ะ”ะปั ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธะน, ะบะพั‚ะพั€ั‹ะต ะฒัะตะณะดะฐ ะทะฐะฒะตั€ัˆะฐัŽั‚ัั ัƒัะฟะตัˆะฝะพ (ะฝะฐะฟั€ะธะผะตั€, ะธะท ั‚ะธะฟะฐ u8 ะฒ u32) ะดะพะฑะฐะฒะปะตะฝ ั‚ะธะฟ ะพัˆะธะฑะพะบ Infallible, ะฟะพะทะฒะพะปััŽั‰ะธะน ะฟั€ะพะทั€ะฐั‡ะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ
    TryFrom เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ "From";

  • ะžะฑัŠัะฒะปะตะฝะฐ ัƒัั‚ะฐั€ะตะฒัˆะตะน ั„ัƒะฝะบั†ะธั CommandExt::before_exec, ะฟะพะทะฒะพะปัะฒัˆะฐั ะฒั‹ะฟะพะปะฝะธั‚ัŒ ะพะฑั€ะฐะฑะพั‚ั‡ะธะบ ะฟะตั€ะตะด ะทะฐะฟัƒัะบะพะผ exec, ะบะพั‚ะพั€ั‹ะน ะฒั‹ะฟะพะปะฝัะปัั ะฒ ะบะพะฝั‚ะตะบัั‚ะต ะดะพั‡ะตั€ะฝะตะณะพ ะฟั€ะพั†ะตััะฐ, ะพั‚ะฒะตั‚ะฒะปั‘ะฝะฝะพะณะพ ะฟะพัะปะต ะฒั‹ะทะพะฒะฐ fork(). ะ’ ะฟะพะดะพะฑะฝั‹ั… ัƒัะปะพะฒะธัั… ะฝะตะบะพั‚ะพั€ั‹ะต ั€ะตััƒั€ัั‹ ั€ะพะดะธั‚ะตะปัŒัะบะพะณะพ ะฟั€ะพั†ะตััะฐ, ั‚ะฐะบะธะต ะบะฐะบ ั„ะฐะนะปะพะฒั‹ะต ะดะตัะบั€ะธะฟั‚ะพั€ั‹ ะธ ะพั‚ั€ะฐะถั‘ะฝะฝั‹ะต ะพะฑะปะฐัั‚ะธ ะฟะฐะผัั‚ะธ, ะผะพะณะปะธ ะฑั‹ั‚ัŒ ะดัƒะฑะปะธั€ะพะฒะฐะฝั‹, ั‡ั‚ะพ ะผะพะณะปะพ ะฟั€ะธะฒะตัั‚ะธ ะบ ะฝะตะพะฟั€ะตะดะตะปั‘ะฝะฝะพะผัƒ ะฟะพะฒะตะดะตะฝะธัŽ ะธ ะฝะตะฒะตั€ะฝะพะน ั€ะฐะฑะพั‚ะต ะฑะธะฑะปะธะพั‚ะตะบ.
    ะ’ะผะตัั‚ะพ before_exec ั€ะตะบะพะผะตะฝะดัƒะตั‚ัั ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ unsafe-ั„ัƒะฝะบั†ะธัŽ CommandExt::pre_exec.

  • ะกั‚ะฐะฑะธะปะธะทะธั€ะพะฒะฐะฝั‹ ะทะฝะฐะบะพะฒั‹ะต ะธ ะฑะตะทะทะฝะฐะบะพะฒั‹ะต ะฐั‚ะพะผะฐั€ะฝั‹ะต ั†ะตะปะพั‡ะธัะปะตะฝะฝั‹ะต ั‚ะธะฟั‹ ั€ะฐะทะผะตั€ะพะผ ะพั‚ 8 ะดะพ 64 ะฑะธั‚ (ะฝะฐะฟั€ะธะผะตั€, AtomicU8), ะฐ ั‚ะฐะบะถะต ะทะฝะฐะบะพะฒั‹ะต ั‚ะธะฟั‹ NonZeroI[8|16|32|64|128].
  • เบชเปˆเบงเบ™เปƒเปเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เปเบงเบ”เปเบนเปˆเบ—เบตเปˆเปเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡ Any::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ] เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™ SystemTime เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบ–เบฝเบ™เบฅเบฐเบžเบฒเบš ::checked_[add|sub]. The iter::from_fn เปเบฅเบฐ iter::successors functions have been stabilized;
  • เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบฑเบ‡เบซเบกเบปเบ”, เบงเบดเบ—เบตเบเบฒเบ™ checked_pow, saturating_pow, wrapping_pow เปเบฅเบฐ overflowing_pow เปเบกเปˆเบ™เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”;
  • ะ”ะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฒะบะปัŽั‡ะตะฝะธั ะพะฟั‚ะธะผะธะทะฐั†ะธะน ะฝะฐ ัั‚ะฐะฟะต ัะฒัะทั‹ะฒะฐะฝะธั ั‡ะตั€ะตะท ัƒะบะฐะทะฐะฝะธะต ัะฑะพั€ะพั‡ะฝะพะน ะพะฟั†ะธะธ ยซ-C linker-plugin-ltoยป.

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

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