Rust 1.53 เบ›เปˆเบญเบเบญเบญเบเบกเบฒ. Google เบˆเบฐเปƒเบซเป‰เบ—เบถเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ Rust เบเบฑเบš Linux kernel

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

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

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

  • ะ”ะปั ะผะฐััะธะฒะพะฒ ั€ะตะฐะปะธะทะพะฒะฐะฝ ั‚ะธะฟะฐะถ IntoIterator, ะฟะพะทะฒะพะปััŽั‰ะธะน ะพั€ะณะฐะฝะธะทะพะฒะฐั‚ัŒ ะฟะตั€ะตะฑะพั€ ัะปะตะผะตะฝั‚ะพะฒ ะผะฐััะธะฒะฐ ะฟะพ ะทะฝะฐั‡ะตะฝะธัะผ: for i in [1, 2, 3] { .. }

    ะขะฐะบะถะต ะฟะพัะฒะธะปะฐััŒ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ะฟะตั€ะตะดะฐั‡ะธ ะผะฐััะธะฒะพะฒ ะฒ ะผะตั‚ะพะดั‹, ะฟั€ะธะฝะธะผะฐัŽั‰ะธะต ะธั‚ะตั€ะฐั‚ะพั€ั‹, ะฝะฐะฟั€ะธะผะตั€: let set = BTreeSet::from_iter([1, 2, 3]); for (a, b) in some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    ะ ะฐะฝะตะต IntoIterator ะฑั‹ะป ั€ะตะฐะปะธะทะพะฒะฐะฝ ั‚ะพะปัŒะบะพ ะดะปั ััั‹ะปะพะบ ะฝะฐ ะผะฐััะธะฒั‹, ั‚.ะต. ะดะปั ะฟะตั€ะตะฑะพั€ะฐ ะฟะพ ะทะฝะฐั‡ะตะฝะธัะผ ั‚ั€ะตะฑะพะฒะฐะปะพััŒ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ััั‹ะปะพะบ (ยซ&[1, 2, 3]ยป) ะธะปะธ ยซ[1, 2, 3].iter()ยป. ะ ะตะฐะปะธะทะฐั†ะธะธ IntoIterator ะดะปั ะผะฐััะธะฒะพะฒ ะผะตัˆะฐะปะธ ะฟั€ะพะฑะปะตะผั‹ ั ัะพะฒะผะตัั‚ะธะผะพัั‚ัŒัŽ, ะฒั‹ะทะฒะฐะฝะฝั‹ะต ั€ะฐะฝะตะต ะดะพะฑะฐะฒะปะตะฝะฝั‹ะผ ะฒ ะบะพะผะฟะธะปัั‚ะพั€ ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธะตะผ ะผะตั‚ะพะดะฐ array.into_iter() ะฒ (&array).into_iter(). ะฃะบะฐะทะฐะฝะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹ ัƒะดะฐะปะพััŒ ั€ะตัˆะธั‚ัŒ ะพะฑั…ะพะดะฝั‹ะผ ะฟัƒั‚ั‘ะผ โ€” ะบะพะผะฟะธะปัั‚ะพั€ ะฟั€ะพะดะพะปะถะธั‚ ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธะต array.into_iter() ะฒ (&array).into_iter(), ะบะฐะบ ะตัะปะธ ะฑั‹ ะพั‚ััƒั‚ัั‚ะฒะพะฒะฐะปะฐ ั€ะตะฐะปะธะทะฐั†ะธั ั‚ะธะฟะฐะถะฐ IntoIterator, ะฝะพ ั‚ะพะปัŒะบะพ ะฟั€ะธ ะฒั‹ะทะพะฒะต ะผะตั‚ะพะดะฐ ั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะตะผ ัะธะฝั‚ะฐะบัะธัะฐ ยซ.into_iter()ยป ะธ ะฝะต ะบะฐัะฐัััŒ ะฒั‹ะทะพะฒะพะฒ ะฒ ั„ะพั€ะผะต ยซin [1, 2, 3]ยป, ยซiter.zip([1, 2, 3])ยป, ยซIntoIterator::into_iter([1, 2, 3])ยป.

  • ะŸั€ะตะดะพัั‚ะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพัั‚ัŒ ัƒะบะฐะทะฐะฝะธั ะฒั‹ั€ะฐะถะตะฝะธะน ยซ|ยป (ะปะพะณะธั‡ะตัะบะฐั ะพะฟะตั€ะฐั†ะธั OR) ะฒ ะปัŽะฑะพะน ั‡ะฐัั‚ะธ ัˆะฐะฑะปะพะฝะฐ, ะฝะฐะฟั€ะธะผะตั€, ะฒะผะตัั‚ะพ ยซSome(1) | Some(2)ยป ั‚ะตะฟะตั€ัŒ ะผะพะถะฝะพ ะฟะธัะฐั‚ัŒ ยซSome(1 | 2)ยป: match result { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
  • ะ ะฐะทั€ะตัˆะตะฝะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะฝะต-ASCII ัะธะผะฒะพะปะพะฒ ะฒ ะธะดะตะฝั‚ะธั„ะธะบะฐั‚ะพั€ะฐั…, ะฒ ั‚ะพะผ ั‡ะธัะปะต ะปัŽะฑั‹ั… ะฝะฐั†ะธะพะฝะฐะปัŒะฝั‹ั… ัะธะผะฒะพะปะพะฒ, ะพะฟั€ะตะดะตะปั‘ะฝะฝั‹ั… ะฒ ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ Unicode UAX 31, ะฝะพ ะบั€ะพะผะต ัะธะผะฒะพะปะพะฒ emoji. ะŸั€ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะธ ั€ะฐะทะฝั‹ั…, ะฝะพ ะฟะพั…ะพะถะธั… ะฟะพ ะฝะฐั‡ะตั€ั‚ะฐะฝะธัŽ ัะธะผะฒะพะปะพะฒ, ะบะพะผะฟะธะปัั‚ะพั€ ะฒั‹ะฒะตะดะตั‚ ะฟั€ะตะดัƒะฟั€ะตะถะดะตะฝะธะต. const BLร…HAJ: &str = ยซ๐Ÿฆˆยป; struct ไบบ { ๅๅญ—: String, } let ฮฑ = 1; let ๏ฝ“os = 2; warning: identifier pair considered confusable between โ€˜๏ฝ“โ€™ and โ€˜sโ€™
  • เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ APIs เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:
    • array::from_ref
    • array::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::retain
    • BTreeMap::retain
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • Duration::ZERO
    • Duration::MAX
    • Duration::is_zero
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::saturating_add
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::saturating_sub
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::saturating_mul
    • f32::is_subnormal
    • f64::is_subnormal
    • IntoIterator ะดะปั ะผะฐััะธะฒะพะฒ
    • {integer}::BITS
    • io::Error::Unsupported
    • NonZero*::leading_zeros
    • NonZero*::trailing_zeros
    • Option::insert
    • Ordering::is_eq
    • Ordering::is_ne
    • Ordering::is_lt
    • Ordering::is_gt
    • Ordering::is_le
    • Ordering::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_lowercase
    • OsStr::to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Peekable::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • slice::IterMut::as_slice
    • AsRef<[T]> ะดะปั slice::IterMut
    • impl SliceIndex ะดะปั (Bound<usize>, Bound<usize>)
    • Vec::extend_from_within
  • ะ ะตะฐะปะธะทะพะฒะฐะฝ ั‚ั€ะตั‚ะธะน ัƒั€ะพะฒะตะฝัŒ ะฟะพะดะดะตั€ะถะบะธ ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ wasm64-unknown-unknown. ะขั€ะตั‚ะธะน ัƒั€ะพะฒะตะฝัŒ ะฟะพะดั€ะฐะทัƒะผะตะฒะฐะตั‚ ะฑะฐะทะพะฒัƒัŽ ะฟะพะดะดะตั€ะถะบัƒ, ะฝะพ ะฑะตะท ะฐะฒั‚ะพะผะฐั‚ะธะทะธั€ะพะฒะฐะฝะฝะพะณะพ ั‚ะตัั‚ะธั€ะพะฒะฐะฝะธั, ะฟัƒะฑะปะธะบะฐั†ะธะธ ะพั„ะธั†ะธะฐะปัŒะฝั‹ั… ัะฑะพั€ะพะบ ะธ ะฟั€ะพะฒะตั€ะบะธ ะฒะพะทะผะพะถะฝะพัั‚ะธ ัะฑะพั€ะบะธ ะบะพะดะฐ.
  • ะŸะฐะบะตั‚ะฝั‹ะน ะผะตะฝะตะดะถะตั€ Cargo ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ ะฟะตั€ะตะฒะตะดั‘ะฝ ะฝะฐ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะธะผะตะฝะธ ยซmainยป ะดะปั ะพัะฝะพะฒะฝะพะน ะฒะตั‚ะบะธ Git-ั€ะตะฟะพะทะธั‚ะพั€ะธั (HEAD). ะ”ะปั ะทะฐะฒะธัะธะผะพัั‚ะตะน, ั€ะฐะทะผะตั‰ั‘ะฝะฝั‹ั… ะฒ ั€ะตะฟะพะทะธั‚ะพั€ะธัั…, ะธัะฟะพะปัŒะทัƒัŽั‰ะธั… ะธะผั main ะฒะผะตัั‚ะพ master, ะฑะพะปัŒัˆะต ะฝะต ั‚ั€ะตะฑัƒะตั‚ัั ัƒะบะฐะทั‹ะฒะฐั‚ัŒ ะฒ ะฝะฐัั‚ั€ะพะนะบะฐั… branch = ยซmainยป.
  • เปƒเบ™ compiler, เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบšเบชเบฐเบšเบฑเบšเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡ LLVM เป„เบ”เป‰เบ–เบทเบเบเบปเบเบ‚เบถเป‰เบ™เบกเบฒเป€เบ›เบฑเบ™ LLVM 10.

ะ”ะพะฟะพะปะฝะธั‚ะตะปัŒะฝะพ ะผะพะถะฝะพ ะพั‚ะผะตั‚ะธั‚ัŒ ะฟั€ะตะดะพัั‚ะฐะฒะปะตะฝะธะต ั„ะธะฝะฐะฝัะธั€ะพะฒะฐะฝะธั ั€ะฐะฑะพั‚ั‹ ะฟะพ ั€ะฐะทะฒะธั‚ะธัŽ ะธะฝั‚ะตะณั€ะฐั†ะธะธ ะฒ ัะดั€ะพ Linux ัั€ะตะดัั‚ะฒ ะดะปั ั€ะฐะทั€ะฐะฑะพั‚ะบะธ ะบะพะผะฟะพะฝะตะฝั‚ะพะฒ ะฝะฐ ัะทั‹ะบะต Rust. ะ ะฐะฑะพั‚ะฐ ะฑัƒะดะตั‚ ะฒะตัั‚ะธััŒ ะฒ ั€ะฐะผะบะฐั… ะฟั€ะพะตะบั‚ะฐ Prossimo ะฟะพะด ัะณะธะดะพะน ะพั€ะณะฐะฝะธะทะฐั†ะธะธ ISRG (Internet Security Research Group), ะบะพั‚ะพั€ะฐั ัะฒะปัะตั‚ัั ัƒั‡ั€ะตะดะธั‚ะตะปะตะผ ะฟั€ะพะตะบั‚ะฐ Letโ€™s Encrypt ะธ ัะฟะพัะพะฑัั‚ะฒัƒะตั‚ ะฟั€ะพะดะฒะธะถะตะฝะธัŽ HTTPS ะธ ั€ะฐะทะฒะธั‚ะธัŽ ั‚ะตั…ะฝะพะปะพะณะธะน ะดะปั ะฟะพะฒั‹ัˆะตะฝะธั ะทะฐั‰ะธั‰ั‘ะฝะฝะพัั‚ะธ ะธะฝั‚ะตั€ะฝะตั‚ะฐ. ะกั€ะตะดัั‚ะฒะฐ ะฑัƒะดัƒั‚ ะฟั€ะตะดะพัั‚ะฐะฒะปะตะฝั‹ ะบะพะผะฟะฐะฝะธะตะน Google, ะบะพั‚ะพั€ะฐั ะพะฟะปะฐั‚ะธั‚ ั€ะฐะฑะพั‚ัƒ ะœะธะณะตะปั ะžั…ะตะดะฐ (Miguel Ojeda), ะฐะฒั‚ะพั€ะฐ ะฟั€ะพะตะบั‚ะฐ Rust-for-Linux. ะ ะฐะฝะตะต ISRG ะธ Google ัƒะถะต ะฟั€ะพั„ะธะฝะฐะฝัะธั€ะพะฒะฐะปะธ ัะพะทะดะฐะฝะธะต ะฐะปัŒั‚ะตั€ะฝะฐั‚ะธะฒะฝะพะณะพ HTTP-ะฑัะบะตะฝะดะฐ ะดะปั ัƒั‚ะธะปะธั‚ั‹ curl ะธ ั€ะฐะทั€ะฐะฑะพั‚ะบัƒ ะฝะพะฒะพะณะพ TLS-ะผะพะดัƒะปั ะดะปั http-ัะตั€ะฒะตั€ะฐ Apache.

ะŸะพ ะดะฐะฝะฝั‹ะผ ะบะพะผะฟะฐะฝะธะน Microsoft ะธ Google ะพะบะพะปะพ 70% ัƒัะทะฒะธะผะพัั‚ะตะน ะฒั‹ะทะฒะฐะฝั‹ ะฝะตะฑะตะทะพะฟะฐัะฝะพะน ั€ะฐะฑะพั‚ะพะน ั ะฟะฐะผัั‚ัŒัŽ. ะŸั€ะตะดะฟะพะปะฐะณะฐะตั‚ัั, ั‡ั‚ะพ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต ัะทั‹ะบะฐ Rust ะดะปั ั€ะฐะทั€ะฐะฑะพั‚ะบะธ ะบะพะผะฟะพะฝะตะฝั‚ะพะฒ ัะดั€ะฐ, ั‚ะฐะบะธั… ะบะฐะบ ะดั€ะฐะนะฒะตั€ั‹ ัƒัั‚ั€ะพะนัั‚ะฒ, ะฟะพะทะฒะพะปะธั‚ ัะฝะธะทะธั‚ัŒ ั€ะธัะบ ะฟะพัะฒะปะตะฝะธั ัƒัะทะฒะธะผะพัั‚ะตะน, ะฒั‹ะทะฒะฐะฝะฝั‹ั… ะฝะตะฑะตะทะพะฟะฐัะฝะพะน ั€ะฐะฑะพั‚ะพะน ั ะฟะฐะผัั‚ัŒัŽ, ะธ ะธัะบะปัŽั‡ะธั‚ัŒ ะฟะพัะฒะปะตะฝะธะต ั‚ะฐะบะธั… ะพัˆะธะฑะพะบ, ะบะฐะบ ะพะฑั€ะฐั‰ะตะฝะธะตะผ ะบ ะพะฑะปะฐัั‚ะธ ะฟะฐะผัั‚ะธ ะฟะพัะปะต ะตั‘ ะพัะฒะพะฑะพะถะดะตะฝะธั ะธ ะฒั‹ั…ะพะด ะทะฐ ะณั€ะฐะฝะธั†ั‹ ะฑัƒั„ะตั€ะฐ.

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

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

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