Rust 1.53 เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเปเบฅเป‰เบง. Google เบˆเบฐเปƒเบซเป‰เบ—เบถเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™ Rust Core Linux

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

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

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

  • เบชเปเบฒเบฅเบฑเบš arrays, เบฅเบฑเบเบชเบฐเบ™เบฐ IntoIterator เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš array เป‚เบ”เบเบ„เปˆเบฒ: เบชเปเบฒเบฅเบฑเบš i เปƒเบ™ [1, 2, 3] { .. }

    เบกเบฑเบ™เบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบœเปˆเบฒเบ™ arrays เป„เบ›เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบเบญเบกเบฎเบฑเบš iterators, เบ•เบปเบงเบขเปˆเบฒเบ‡: เปƒเบซเป‰ set = BTreeSet::from_iter([1, 2, 3]); เบชเปเบฒเบฅเบฑเบš (a, b) เปƒเบ™ some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, IntoIterator เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡ array, i.e. to iterate over values โ€‹โ€‹เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบตเบ‡ (โ€œ&[1, 2, 3]โ€) เบซเบผเบท โ€œ[1, 2, 3].iter()โ€. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ IntoIterator เบชเปเบฒเบฅเบฑเบš arrays เบ–เบทเบเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป‚เบ”เบเบšเบฑเบ™เบซเบฒเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เปเบ›เบ‡ compiler เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบˆเบฒเบ array.into_iter() เป€เบ›เบฑเบ™ (&array).into_iter(). เบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบ”เป‰เบงเบเบเบฒเบ™เปเบเป‰เป„เบ‚ - เบ„เบญเบกเบžเบตเบงเป€เบŠเบตเบˆเบฐเบชเบทเบšเบ•เปเปˆเบ›เปˆเบฝเบ™ array.into_iter() เป€เบ›เบฑเบ™ (&array).into_iter() เบ„เบทเบเบฑเบšเบงเปˆเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฑเบเบชเบฐเบ™เบฐ IntoIterator, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™เป‚เบ”เบเปƒเบŠเป‰ ".into_iter(. )" syntax เปเบฅเบฐเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเปเบฒเบœเบฑเบ”เบเบฑเบšเบเบฒเบ™เป‚เบ—เปƒเบ™เบฎเบนเบšเปเบšเบš "in [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]] )".

  • เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบฅเบฐเบšเบธเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ "|" (เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™ OR) เปƒเบ™เบชเปˆเบงเบ™เปƒเบ”เบ™เบถเปˆเบ‡เบ‚เบญเบ‡เปเบกเปˆเปเบšเบš, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ โ€œSome(1) | Some(2)" เบ•เบญเบ™เบ™เบตเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™ "Some(1 | 2)": match results { Ok(Some(1 | 2)) => {.. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } }
  • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ ASCII เปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธเปเบกเปˆเบ™เบญเบฐเบ™เบธเบเบฒเบ”, เบฅเบงเบกเบ—เบฑเบ‡เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เปเบซเปˆเบ‡เบŠเบฒเบ”เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡ Unicode UAX 31, เปเบ•เปˆเบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ emoji. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เปƒเบŠเป‰เบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบ•เปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, compiler เบˆเบฐเบญเบญเบเบ„เปเบฒเป€เบ•เบทเบญเบ™. const BLร…HAJ: &str = "๐Ÿฆˆ" ; struct ไบบ { ๅๅญ—: String, } เปƒเบซเป‰ ฮฑ = 1; let๏ฝ“os = 2; เบ„เบณเป€เบ•เบทเบญเบ™: เบ„เบนเปˆเบ•เบปเบงเบฅเบฐเบšเบธเบ–เบทเบงเปˆเบฒเบชเบฑเบšเบชเบปเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ '๏ฝ“' เปเบฅเบฐ 's'
  • เบชเปˆเบงเบ™เปƒเบซเบกเปˆเบ‚เบญเบ‡ APIs เป„เบ”เป‰เบ–เบทเบเป‚เบญเบ™เป„เบ›เบซเบฒเบ›เบฐเป€เบžเบ”เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:
    • array::from_ref
    • array::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::เบฎเบฑเบเบชเบฒ
    • BTreeMap::เบฎเบฑเบเบชเบฒ
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::ZERO
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::MAX
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::is_zero
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::saturating_add
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::saturating_sub
    • เป„เบฅเบเบฐเป€เบงเบฅเบฒ::saturating_mul
    • f32::is_subnormal
    • f64::is_subnormal
    • IntoIterator เบชเปเบฒเบฅเบฑเบš arrays
    • {integer}::BITS
    • io::เบœเบดเบ”เบžเบฒเบ”::เบšเปเปˆเบฎเบญเบ‡เบฎเบฑเบš
    • NonZero*::leading_zeros
    • NonZero*::trailing_zeros
    • เบ—เบฒเบ‡เป€เบฅเบทเบญเบ:: เปƒเบชเปˆ
    • เบเบฒเบ™เบชเบฑเปˆเบ‡เบŠเบทเป‰::is_eq
    • เบเบฒเบ™เบชเบฑเปˆเบ‡เบŠเบทเป‰::is_ne
    • เบเบฒเบ™เบชเบฑเปˆเบ‡เบŠเบทเป‰::is_lt
    • เบเบฒเบ™เบชเบฑเปˆเบ‡เบŠเบทเป‰::is_gt
    • เบเบณเบฅเบฑเบ‡เบชเบฑเปˆเบ‡เบŠเบทเป‰::is_le
    • เบเบฒเบ™เบชเบฑเปˆเบ‡เบŠเบทเป‰::is_ge
    • OsStr::make_ascii_เบ•เบปเบงเบžเบดเบกเบ™เป‰เบญเบ
    • OsStr::make_ascii_เบ•เบปเบงเบžเบดเบกเปƒเบซเบเปˆ
    • OsStr::to_ascii_เบ•เบปเบงเบžเบดเบกเบ™เป‰เบญเบ
    • OsStr::to_ascii_เบ•เบปเบงเบžเบดเบกเปƒเบซเบเปˆ
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบ”เป‰::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • slice::IterMut::as_slice
    • AsRef<[T]> เบชเปเบฒเบฅเบฑเบš slice::IterMut
    • impl SliceIndex เบชเปเบฒเบฅเบฑเบš (Bound , เบœเบนเบเบกเบฑเบ” )
    • Vec::extend_from_within
  • เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเป€เบงเบ—เบต wasm64-unknown-unknown เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”. เบฅเบฐเบ”เบฑเบšเบ—เบตเบชเบฒเบกเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™, เปเบ•เปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เบเบฒเบ™เป€เบœเบตเบเปเบœเปˆเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™, เบซเบผเบทเบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰.
  • เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™เบŠเบธเบ”เบชเบดเบ™เบ„เป‰เบฒเป„เบ”เป‰เบ–เบทเบเบเป‰เบฒเบเป„เบ›เปƒเบŠเป‰เบŠเบทเปˆ "เบ•เบปเป‰เบ™เบ•เป" เบชเปเบฒเบฅเบฑเบšเบชเบฒเบ‚เบฒเบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ Git (HEAD) เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™. Dependencies host เปƒเบ™ repositories เบ—เบตเปˆเปƒเบŠเป‰เบŠเบทเปˆ main เปเบ—เบ™ master เบญเบตเบเบ•เปเปˆเป„เบ› เบšเปเปˆเบ•เป‰เบญเบ‡เบกเบตเบชเบฒเบ‚เบฒ = "main" เบ—เบตเปˆเบˆเบฐ configured.
  • เปƒเบ™ 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 เป€เบžเบทเปˆเบญเบžเบฑเบ”เบ—เบฐเบ™เบฒเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ kernel เป€เบŠเบฑเปˆเบ™: เป„เบ”เป€เบงเบตเบญเบธเบ›เบฐเบเบญเบ™เบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบŠเปˆเบญเบ‡เป‚เบซเบงเปˆเบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบšเปเปˆเบ›เบญเบ”เป„เบžเปเบฅเบฐเบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบปเบ”เบ›เปˆเบญเบเปเบฅเบฐ overrunning buffer bounds.

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

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

เบŠเบทเป‰เป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบšเป€เบงเบฑเบšเป„เบŠเบ—เปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เบปเบเบ›เป‰เบญเบ‡ DDoS, เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ VPS VDS ๐Ÿ”ฅ เบŠเบทเป‰เป€เบงเบฑเบšเป„เบŠเบ—เปŒเป‚เบฎเบ”เบ•เบดเป‰เบ‡เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบ”เป‰เบงเบเบเบฒเบ™เบ›เป‰เบญเบ‡เบเบฑเบ™ DDoS, เป€เบŠเบตเบšเป€เบงเบต VPS VDS | ProHoster