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

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

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

  • เป€เบžเบตเปˆเบกเบฎเบนเบšเปเบšเบšเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบšเบšเบ—เปเปˆ (เบ—เปเปˆ), เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบธเบ” crate เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆ metadata เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰, เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เบญเบ‡เบกเบฑเบ™เบชเปเบฒเป€เบฅเบฑเบ”. เป€เบกเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเบŠเบธเบ”, เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบเบญเบšเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™, เบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเบ™เบปเบ” metadata, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบกเบตเบฅเบฒเบเบเบฒเบ™เบ›เบฐเป€เบžเบ”, เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบชเบปเปˆเบ‡เบญเบญเบ. Metadata เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบงเบšเบฅเบงเบกเป„เบงเบเบงเปˆเบฒเบ™เบตเป‰. เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบŠเบธเบ”เบ”เบฝเบง, เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบ•เปˆเบ–เป‰เบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบเบงเบกเป€เบญเบปเบฒเบเบฒเบ™เบซเบธเป‰เบกเบซเปเปˆเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบชเบฒเบ‚เบฒ, เป„เบฅเบเบฐเป€เบงเบฅเบฒเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เป‚เบ”เบเบฅเบงเบกเบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบฅเบปเบ‡ 10-20%;
  • เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบเบงเบ”เบžเบปเบšเบเบฒเบ™เปƒเบŠเป‰เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡ std::mem::unitialized ะธ std::mem::เบชเบนเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, std::mem::uninitialized เปเบกเปˆเบ™เบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ arrays เบขเปˆเบฒเบ‡เป„เบงเบงเบฒ, เปเบ•เปˆเบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰ compiler เป€เบ‚เบปเป‰เบฒเปƒเบˆเบœเบดเบ”เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบ–เบทเบเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เปเบ•เปˆเปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡เปเบฅเป‰เบง, เบกเบนเบ™เบ„เปˆเบฒเปเบกเปˆเบ™ uninitialized. mem::เบŸเบฑเบ‡เบŠเบฑเบ™ uninitialized เบ–เบทเบเปเบฒเบเปเบฅเป‰เบงเบงเปˆเบฒเบ–เบทเบเบเบปเบเป€เบฅเบตเบ เปเบฅเบฐเปเบ™เบฐเบ™เบณเปƒเบซเป‰เปƒเบŠเป‰เบ›เบฐเป€เบžเบ”เบ›เบฒเบ™เบเบฒเบ‡เปเบ—เบ™. เบšเบฒเบ‡เบ—เบตเปœเปˆเบงเบ. เบชเปเบฒเบฅเบฑเบš mem::zeroed, เบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเบ„เปˆเบฒเบชเบนเบ™.

    เป€เบžเบทเปˆเบญเบŠเปˆเบงเบเบฅเบฐเบšเบธเบžเบถเบ”เบ•เบดเบเบณเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”เป„เบงเป‰, เบฅเบธเป‰เบ™เปƒเปเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปƒเบชเปˆ lint เปƒเบชเปˆเบ„เบญเบกเบžเบตเบงเป€เบŠเบตเบ—เบตเปˆเบเบงเบ”เบžเบปเบšเบšเบฒเบ‡เบšเบฑเบ™เบซเบฒเบเบฑเบš mem::uninitialized เบซเบผเบท mem::zeroed. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบกเบทเปˆเบญเบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰ mem::uninitialized เบซเบผเบท mem::zeroed เบเบฑเบšเบ›เบฐเป€เบžเบ” &T เปเบฅเบฐ Boxโ€นTโ€บ, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบ•เบปเบงเปเบ—เบ™เบ‚เบญเบ‡เบˆเบธเบ”เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบ„เปˆเบฒ null;

  • เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” โ€œ#[เป€เบŠเบปเบฒเปƒเบŠเป‰เปเบฅเป‰เบง]โ€ เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เปเบžเบฑเบเป€เบเบฑเบ” crate เบ–เบทเบเปเบฒเบเบงเปˆเบฒเบฅเป‰เบฒเบชเบฐเป„เป เปเบฅเบฐเบเบณเบ™เบปเบ”เป€เบงเบฅเบฒเบเบฒเบ™เบฅเบถเบšเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”. เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบ‚เบญเบ‡ Rust 1.38, เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ™เบตเป‰เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš macro;
  • เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เปƒเบŠเป‰เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” โ€œ#[global_allocator]โ€ เปƒเบ™เป‚เบกเบ”เบนเบ™เบเปˆเบญเบ;
  • เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” std::any::type_name, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบŠเบญเบเบซเบฒเบŠเบทเปˆเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”, เบŠเบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เบชเปเบฒเบฅเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡ debugging. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ„เบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบŠเบญเบเบซเบฒเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ:

    fn gen_valueโ€นT: เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™>() -> T {
    println!("Initializing an instance of {}", std::any::type_name::โ€นTโ€บ());
    เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™::default()
    }

    fn เบซเบผเบฑเบ() {
    เปƒเบซเป‰ _: i32 = gen_value(); # "i32" เบˆเบฐเบ–เบทเบเบžเบดเบก
    เปƒเบซเป‰ _: String = gen_value(); # เบˆเบฐเบžเบดเบก "alloc::string::String"
    }

  • เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™:
    • slice::{concat, connect, join} เบ”เบฝเบงเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบ„เปˆเบฒ &[T] เบ™เบญเบเบˆเบฒเบ &T;
    • "*const T" เปเบฅเบฐ "*mut T" เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ::Unpin;
    • "Arcโ€น[T]โ€บ" เปเบฅเบฐ "Rcโ€น[T]โ€บ" เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” FromIteratorโ€นTโ€บ;
    • iter::{StepBy, Peekable, Take} เบ•เบญเบ™เบ™เบตเป‰เบ™เบณเปƒเบŠเป‰ DoubleEndedIterator.
    • ascii::EscapeDefault เบ›เบฐเบ•เบดเบšเบฑเบ” Clone เปเบฅเบฐ Display.
  • เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ APIs เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡
    • โ€น*const Tโ€บ::cast, โ€น*mut Tโ€บ::cast,
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::as_secs_f{32|64},
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::div_duration_f{32|64},
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::div_f{32|64},
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::from_secs_f{32|64},
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::mul_f{32|64},
    • เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบเบฑเบšเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญ
      div_euclid เปเบฅเบฐ rem_euclid เบชเปเบฒเบฅเบฑเบš integer primitives เบ—เบฑเบ‡เบซเบกเบปเบ”;

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฅเบฐเบšเบธ "-- เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”" เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบผเบฒเบเบ„เบฑเป‰เบ‡เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒ;
  • compiler เบชเบฐเบซเบ™เบญเบ‡เบ—เบตเบชเบฒเบก grade เบฎเบญเบ‡เบฎเบฑเบšเป€เบงเบ—เบตเป€เบ›เบปเป‰เบฒเปเบฒเบ aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc เป€เบ›เบปเป‰เบฒเปเบฒเบ, armlinux7-unknown- -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl เปเบฅเบฐ riscv32i-unknown-none-elf. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบžเบดเบกเป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™.

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

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