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

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

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

  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเป€เบงเบปเป‰เบฒ "const fn" เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบ›เบปเบเบเบฐเบ•เบด, เปเบ•เปˆเบเบฑเบ‡เปƒเบŠเป‰เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ. เบŸเบฑเบ‡เบŠเบฑเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆเปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก, เบšเปเปˆเปเบกเปˆเบ™เปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบกเบตเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบˆเบฒเบเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ.

    เบชเบฐเบšเบฑเบšเปƒเบซเบกเปˆเป„เบ”เป‰เบเบปเบเป€เบฅเบตเบเบเบฒเบ™เบซเป‰เบฒเบกเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ Boolean (โ€œ&&โ€ เปเบฅเบฐ โ€œ||โ€) เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เปƒเบŠเป‰ "เบ–เป‰เบฒ", "เบ–เป‰เบฒเบ›เปˆเบญเบเปƒเบซเป‰", "เบเบปเบ‡เบเบฑเบ™", เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡,
    "while", "while let" เปเบฅเบฐ "loop", เปเบฅเบฐเบเบฑเบ‡เปƒเบซเป‰เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™ slices (slice, dynamic arrays) เป‚เบ”เบเปƒเบŠเป‰ expression "&[T]". เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบซเบ™เป‰เบฒเบ—เบตเปˆ "const fn" เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเบšเบฒเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบเป„เบ›เบซเบฒเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” "const-sha1" เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบ„เบดเบ”เป„เบฅเปˆ SHA-1 hashes เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก, เป€เบŠเบดเปˆเบ‡เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เบœเบนเบเบกเบฑเบ” WinRT เบชเปเบฒเบฅเบฑเบš Rust เป€เบเบทเบญเบš 40 เป€เบ—เบทเปˆเบญ.

  • เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบกเบตเบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” โ€œ#[track_caller]โ€ เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเปƒเบซเป‰เบ„เบปเบ‡เบ—เบตเปˆ, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบŠเบฑเปˆเบ™ unwrap, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบ•เบทเปˆเบ™เบ•เบปเบเปƒเบˆเบ–เป‰เบฒเบ›เบฐเป€เบžเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡. เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เป‚เบ”เบเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™ panic เป€เบžเบทเปˆเบญเบžเบดเบกเบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เป‚เบ—เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบชเบฐเปเบ”เบ‡เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”.
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "const", เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เปเบกเปˆเบ™เปƒเบŠเป‰เปƒเบ™ std::mem::forget method.
  • เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบซเบกเบงเบ”เบ„เบปเบ‡เบ—เบตเปˆ, เบฅเบงเบกเบ—เบฑเบ‡ stabilized Option::zip เปเบฅเบฐ vec::Drain::as_slice.
  • เปƒเบ™เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ” Cargo เป€เบžเบตเปˆเบก เบฎเบญเบ‡เบฎเบฑเบšเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเปƒเปเปˆเบ—เบตเปˆเบ•เบฑเป‰เบ‡เป„เบงเป‰เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเปเบžเบฑเบเป€เบเบฑเบ”: CARGO_BIN_NAME (เบŠเบทเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰), CARGO_CRATE_NAME (เบŠเบทเปˆเปเบžเบฑเบเป€เบเบ”), CARGO_PKG_LICENSE (เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰เปƒเบ™ manifest), CARGO_PKG_LICENSE_FILE (เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”).

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

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