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

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

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

  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒเบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ—เบตเปˆเบˆเบฐเบฅเบงเบกเป€เบญเบปเบฒเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบŠเป‰เปเบฒเบเบฑเบ™เปเบฅเบฐเบเบฒเบ™เป€เบ•เบทเบญเบ™เป„เบžเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡. เป€เบกเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบŠเบฑเปˆเบ™ "เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบชเบดเบ™เบ„เป‰เบฒ" เปเบฅเบฐ "เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบดเบ™เบ„เป‰เบฒ - all-targets" เบ—เบตเปˆเบชเบปเปˆเบ‡เบœเบปเบ™เปƒเบซเป‰เบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบซเบผเบฒเบเบŠเบธเบ”เบ—เบตเปˆเบกเบตเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™, เบœเบนเป‰เปƒเบŠเป‰เป„เบ”เป‰เบ–เบทเบเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบเบฒเบ™เบชเบฐเบซเบผเบธเบšเบ‚เบญเบ‡เบเบฒเบ™เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบŠเป‰เปเบฒเบเบฑเบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™. เบเบฒเบ™โ€‹เป€เบ•เบทเบญเบ™โ€‹เป„เบžโ€‹เบซเบผเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบเบฒเบ™โ€‹เบเปเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบชเบดเปˆเบ‡โ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹เบŠโ€‹เป‰โ€‹เปเบฒโ€‹. $ cargo +1.55.0 check โ€”all-targets เบเบฒเบ™เบเบงเบ”เบชเบญเบš foo v0.1.0 เบ„เปเบฒเป€เบ•เบทเบญเบ™: เบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเป€เบ„เบตเบเปƒเบŠเป‰: 'foo' โ€”> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = note: '#[warn(dead_code)]' เบ•เบฒเบกเบเบฒเบ™เป€เบ•เบทเบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™: 'foo' (lib) เบชเป‰เบฒเบ‡ 1 เบ„เปเบฒเป€เบ•เบทเบญเบ™เป€เบ•เบทเบญเบ™: 'foo' (lib test) เบชเป‰เบฒเบ‡ 1 เบ„เปเบฒเป€เบ•เบทเบญเบ™ (1 เบŠเปเป‰เบฒเบเบฑเบ™) เบชเปเบฒเป€เบฅเบฑเบ” dev [unoptimized + debuginfo] เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ (s) เปƒเบ™ 0.84 เบงเบด
  • เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เปเบเบเบงเบดเป€เบ„เบฒเบฐเบˆเบธเบ”เบฅเบญเบเบขเบนเปˆเปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเปเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เปƒเบŠเป‰เบฅเบฐเบšเบปเบš Eisel-Lemire algorithm เบ—เบตเปˆเป„เบง เปเบฅเบฐเบ–เบทเบเบ•เป‰เบญเบ‡เบเบงเปˆเบฒ, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™เบšเบฒเบ‡เบญเบฑเบ™เบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบเบฎเบญเบš เปเบฅเบฐ parsing เบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบเบซเบผเบฒเบ.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบšเปเปˆเบ›เบดเบ”เบขเบนเปˆเปƒเบ™เปเบกเปˆเปเบšเบšเป„เบ”เป‰เบ–เบทเบเป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบปเบ‡เบ—เบตเปˆ (โ€œX..โ€ เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบงเปˆเบฒเป€เบ›เบฑเบ™เบŠเปˆเบงเบ‡เบ—เบตเปˆเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ„เปˆเบฒ X เปเบฅเบฐเบชเบดเป‰เบ™เบชเบธเบ”เบ”เป‰เบงเบเบ„เปˆเบฒเบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก): เบˆเบฑเบšเบ„เบนเปˆ x as u32 { 0 => println! (โ€œเบชเบนเบ™!โ€), 1.. => println!("เบ•เบปเบงเป€เบฅเบเบšเบงเบ!"), }
  • เบ‚เบฐเบซเบเบฒเบเบ•เบปเบงเปเบ›เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบเบงเบกเป€เบญเบปเบฒเป‚เบ”เบ std::io::ErrorKind (เบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ”เป€เบŠเบฑเปˆเบ™ NotFound เปเบฅเบฐ WouldBlock). เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบงเป„เบ”เป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ ErrorKind::เบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™เป†, เป€เบŠเบดเปˆเบ‡เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบก. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบตเบ›เบฐเป€เบžเบ”เบžเบฒเบเปƒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ ErrorKind::Uncategorized เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบเบฑเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เปเบฅเบฐ ErrorKind::เบ›เบฐเป€เบžเบ”เบญเบทเปˆเบ™เป†เปเบกเปˆเบ™เบˆเปเบฒเบเบฑเบ”เบเบฑเบšเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบšเปเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เปƒเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ (เบŸเบฑเบ‡เบŠเบฑเบ™เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ—เบตเปˆเบชเบปเปˆเบ‡เบเบฑเบš io::เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”. เบšเปเปˆเปƒเบŠเป‰ ErrorKind:: เปเบงเบ”เปเบนเปˆเบญเบทเปˆเบ™เบญเบตเบ).
  • เบžเบฒเบเบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ API เป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เบขเบนเปˆเปƒเบ™เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบงเบดเบ—เบตเบเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐเบ•เปˆเบฒเบ‡เป†เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡:
    • เบœเบนเบเบกเบฑเบ”::cloned
    • เบ—เปเปˆเบฅเบฐเบšเบฒเบ::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • เบšเบฒเบ‡เบ—เบตUninit::assume_init_mut
    • เบšเบฒเบ‡เบ—เบตUninit::assume_init_ref
    • เบšเบฒเบ‡เบ—เบตUninit::เบ‚เบฝเบ™
    • array::เปเบœเบ™เบ—เบตเปˆ
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐ "const", เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เปƒเบ”เบเปเปˆเบ•เบฒเบกเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆ, เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™ str::from_utf8_unchecked.
  • เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก powerpc64le-unknown-freebsd. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบซเบผเบทเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰.

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

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