Rust 1.53 рдЬрд╛рд░реА рдЧрд░рд┐рдпреЛред Google рд▓реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ рд░рд╕реНрдЯ рд╕рдорд░реНрдерди рдердкреНрди рдХреЛрд╖ рдЧрд░реНрдиреЗрдЫ

рдкреНрд░рдгрд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ Rust 1.53 рдХреЛ рд░рд┐рд▓реАрдЬ, Mozilla рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд, рддрд░ рдЕрдм рд╕реНрд╡рддрдиреНрддреНрд░ рдЧреИрд░-рд▓рд╛рднрдХрд╛рд░реА рд╕рдВрд╕реНрдерд╛ рд░рд╕реНрдЯ рдлрд╛рдЙрдиреНрдбреЗрд╕рди рдХреЛ рддрддреНрд╡рд╛рд╡рдзрд╛рди рдЕрдиреНрддрд░реНрдЧрдд рд╡рд┐рдХрд╕рд┐рдд, рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рднрд╛рд╖рд╛рд▓реЗ рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рдлреЛрдХрд╕ рдЧрд░реНрдЫ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рд╡рд╛ рд░рдирдЯрд╛рдЗрдо (рд░рдирдЯрд╛рдЗрдорд▓рд╛рдИ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рдЖрдзрд╛рд░рднреВрдд рдкреНрд░рд╛рд░рдореНрдн рд░ рдорд░реНрдорддрд╕рдореНрднрд╛рд░рдорд╛ рдШрдЯрд╛рдЗрдиреНрдЫ) рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдирд╛рдиреНрддрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдорд╛рдзреНрдпрдорд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рд░рд╕реНрдЯрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдирд▓реЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рдкреЛрдЗрдиреНрдЯрд░рд╣рд░реВ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрджрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрдмрд╛рдЯ рдмрдЪрд╛рдЙрдБрдЫ рд░ рдирд┐рдореНрди-рд╕реНрддрд░ рдореЗрдореЛрд░реА рд╣реЗрд░рдлреЗрд░рдХреЛ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдмрд╛рдЯ рдЬреЛрдЧрд╛рдЙрдБрдЫ, рдЬрд╕реНрддреИ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд▓рд╛рдИ рдЦрд╛рд▓реА рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ, рдирд▓ рдкреЛрдЗрдиреНрдЯрд╣рд░реВ, рдмрдлрд░ рдУрднрд░рд░рдиреНрд╕, рдЗрддреНрдпрд╛рджрд┐ред рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рд╡рд┐рддрд░рдг рдЧрд░реНрди, рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд░ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди, рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдХрд╛рд░реНрдЧреЛ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджрдЫред crates.io рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерд┐рдд рдЫред

рдореБрдЦреНрдп рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╣рд░реВ:

  • arrays рдХреЛ рд▓рд╛рдЧрд┐, IntoIterator рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдПрд░реЗ рддрддреНрд╡рд╣рд░реВрдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд▓рд╛рдИ рдорд╛рдирд╣рд░реВрджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ: i in [1, 2, 3] {.. }

    рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреЗ рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рдПрд░реЗрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрди рдкрдирд┐ рд╕рдореНрднрд╡ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐: let set = BTreeSet::from_iter([1, 2, 3]); (a, b) some_iterator.chain([1]) рдорд╛редzip([1, 2, 3]) { .. }

    рдкрд╣рд┐рд▓реЗ, IntoIterator рдПрд░реЗ рд╕рдиреНрджрд░реНрднрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЕрд░реНрдерд╛рддреНред рдорд╛рдирд╣рд░реВ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдиреНрджрд░реНрднрд╣рд░реВ (тАЬ&[1, 2, 3]тАЭ) рд╡рд╛ тАЬ[1, 2, 3].iter()тАЭ рдХреЛ рдкреНрд░рдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред arrays рдХрд╛ рд▓рд╛рдЧрд┐ IntoIterator рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ array.into_iter() рдмрд╛рдЯ (&array) into_iter() рдорд╛ рдкрд╣рд┐рд▓реЗрдХреЛ рдХрдореНрдкрд╛рдЗрд▓рд░ рд░реВрдкрд╛рдиреНрддрд░рдгрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдЕрдиреБрдХреВрд▓рддрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрд▓реЗ рдмрд╛рдзрд┐рдд рднрдПрдХреЛ рдерд┐рдпреЛред рдпреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рдирдХрд╛ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ - рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ array.into_iter() рд▓рд╛рдИ (&array).into_iter() рдорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫ рдЬрд╕реНрддреЛ рдХрд┐ рддреНрдпрд╣рд╛рдБ IntoIterator рд╡рд┐рд╢реЗрд╖рддрд╛рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд┐рдПрди, рддрд░ ".into_iter( рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд┐рдзрд┐ рдХрд▓ рдЧрд░реНрджрд╛ рдорд╛рддреНрд░ред )" рд╕рд┐рдиреНрдЯреНрдпрд╛рдХреНрд╕ рд░ "[1, 2, 3] рдорд╛", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]) рдХреЛ рд░реВрдк рдорд╛ рдХрд▓рд╣рд░реВрд▓рд╛рдИ рдЫреЛрдП рдмрд┐рдирд╛ред )"ред

  • рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ "|" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рдЯреЗрдореНрдкреНрд▓реЗрдЯрдХреЛ рдХреБрдиреИ рдкрдирд┐ рднрд╛рдЧрдорд╛ (рддрд╛рд░реНрдХрд┐рдХ рд╡рд╛ рд╕рдЮреНрдЪрд╛рд▓рди) рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, тАЬSome(1) | рдХреЗрд╣рд┐(реи)" рддрдкрд╛рдИрд▓реЗ рдЕрдм "Some(2 | 1)" рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдореЗрд▓ рдирддрд┐рдЬрд╛ { Ok(Some(2 | 1)) => { .. } рддреНрд░реБрдЯрд┐(MyError { рдкреНрд░рдХрд╛рд░: FileNotFound | рдЕрдиреБрдорддрд┐ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдПрдХреЛ, .. }) => {.. } _ => {.. } }
  • рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд╣рд░реВрдорд╛ рдЧреИрд░-ASCII рд╡рд░реНрдгрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ рдЫ, рдЬрд╕рдорд╛ рдпреБрдирд┐рдХреЛрдб UAX 31 рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреБрдиреИ рдкрдирд┐ рд░рд╛рд╖реНрдЯреНрд░рд┐рдп рд╡рд░реНрдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреН, рддрд░ рдЗрдореЛрдЬреА рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд╣рд░реВ рдмрд╛рд╣реЗрдХред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдлрд░рдХ рддрд░ рд╕рдорд╛рди рдХреНрдпрд╛рд░реЗрдХреНрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдЧрд░реНрдиреЗрдЫред const BL├ЕHAJ: &str = "ЁЯжИ"; рд╕рдВрд░рдЪрдирд╛ ф║║ { хРНхнЧ: String, } let ╬▒ = 1; let'os = 2; рдЪреЗрддрд╛рд╡рдиреА: рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбреА 'я╜У' рд░ 's' рдХреЛ рдмреАрдЪрдорд╛ рднреНрд░рдорд┐рдд рдорд╛рдирд┐рдиреНрдЫ
  • рдПрдкреАрдЖрдИрд╣рд░реВрдХреЛ рдирдпрд╛рдБ рднрд╛рдЧрд▓рд╛рдИ рд╕реНрдерд┐рд░ рд╢реНрд░реЗрдгреАрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫ, рдирд┐рдореНрди рд╕реНрдерд┐рд░ рдЧрд░рд┐рдПрдХреЛ рд╕рд╣рд┐рдд:
    • array::from_ref
    • array::from_mut
    • AtomicBool ::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet :: рдХрд╛рдпрдо рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН
    • BTreeMap:: рдХрд╛рдпрдо рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН
    • BfReader::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
    • arrays рдХреЛ рд▓рд╛рдЧрд┐ IntoIterator
    • {integer}::BITS
    • io::рддреНрд░реБрдЯрд┐::рдЕрд╕рдорд░реНрдерд┐рдд
    • NonZero*::leading_zeros
    • NonZero*::trailing_zeros
    • рд╡рд┐рдХрд▓реНрдк:: рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН
    • рдЕрд░реНрдбрд░ рдЧрд░реНрджреИ::is_eq
    • рдЕрд░реНрдбрд░ рдЧрд░реНрджреИ::is_ne
    • рдЕрд░реНрдбрд░ рдЧрд░реНрджреИ::is_lt
    • рдЕрд░реНрдбрд░ рдЧрд░реНрджреИ::is_gt
    • рдЕрд░реНрдбрд░ рдЧрд░реНрджреИ::is_le
    • рдЕрд░реНрдбрд░ рдЧрд░реНрджреИ::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
    • рд╕реНрд▓рд╛рдЗрд╕::IterMut::as_slice
    • AsRef<[T]> рд╕реНрд▓рд╛рдЗрд╕::IterMut рдХреЛ рд▓рд╛рдЧрд┐
    • (рдмрд╛рдЙрдиреНрдб , рдмрд╛рдБрдзрд┐рдПрдХреЛ )
    • Vec::extend_from_within
  • wasm64-рдЕрдЬреНрдЮрд╛рдд-рдЕрдЬреНрдЮрд╛рдд рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдердирдХреЛ рддреЗрд╕реНрд░реЛ рд╕реНрддрд░ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫред рддреЗрд╕реНрд░реЛ рддрд╣рдорд╛ рдЖрдзрд╛рд░рднреВрдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡реЗрд╢ рдЫ, рддрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдмрд┐рдирд╛, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ, рд╡рд╛ рдХреЛрдб рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдХрд┐ рднрдиреЗрд░ рдЬрд╛рдБрдЪ рдирдЧрд░реАред
  • рдХрд╛рд░реНрдЧреЛ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд▓рд╛рдИ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ Git рднрдгреНрдбрд╛рд░ (HEAD) рдХреЛ рдореБрдЦреНрдп рд╢рд╛рдЦрд╛рдХреЛ рд▓рд╛рдЧрд┐ "рдореБрдЦреНрдп" рдирд╛рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд╛рд░рд┐рдПрдХреЛ рдЫред рднрдгреНрдбрд╛рд░рд╣рд░реВрдорд╛ рд╣реЛрд╕реНрдЯ рдЧрд░рд┐рдПрдХрд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рдЬрд╕рд▓реЗ рдорд╛рд╕реНрдЯрд░рдХреЛ рд╕рдЯреНрдЯрд╛ рдореБрдЦреНрдп рдирд╛рдо рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рдЕрдм рд╢рд╛рдЦрд╛ = "рдореБрдЦреНрдп" рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрдиред
  • рдХрдореНрдкрд╛рдЗрд▓рд░рдорд╛, LLVM рдХреЛ рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ LLVM 10 рдорд╛ рдмрдврд╛рдЗрдПрдХреЛ рдЫред

рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореА Rust рднрд╛рд╖рд╛рдорд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ рдПрдХреАрдХрд░рдгрдХреЛ рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрд╖рдХреЛ рдкреНрд░рд╛рд╡рдзрд╛рдирд▓рд╛рдИ рдиреЛрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпреЛ рдХрд╛рдо ISRG рд╕рдВрдЧрдарди (рдЗрдиреНрдЯрд░рдиреЗрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рд╕рдореВрд╣) рдХреЛ рд╕рдВрд░рдХреНрд╖рдг рдЕрдиреНрддрд░реНрдЧрдд Prossimo рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдврд╛рдБрдЪрд╛ рднрд┐рддреНрд░ рдЧрд░рд┐рдиреЗрдЫ, рдЬреЛ Let's Encrypt рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрд╕реНрдерд╛рдкрдХ рд╣реЛ рд░ HTTPS рдХреЛ рдкреНрд░рд╡рд░реНрджреНрдзрди рдЧрд░реНрджрдЫ рд░ рдкреНрд░рд╡рд┐рдзрд┐ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдмреГрджреНрдзрд┐ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреАред рдЗрдиреНрдЯрд░рдиреЗрдЯред рдХреЛрд╖рд╣рд░реВ Google рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдЗрдиреЗрдЫ, рдЬрд╕рд▓реЗ рд░рд╕реНрдЯ-рдлрд░-рд▓рд┐рдирдХреНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХрд╛ рд▓реЗрдЦрдХ рдорд┐рдЧреБрдПрд▓ рдУрдЬреЗрдбрд╛рдХреЛ рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рднреБрдХреНрддрд╛рдиреА рдЧрд░реНрдиреЗрдЫред рдкрд╣рд┐рд▓реЗ, ISRG рд░ Google рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдХрд░реНрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ HTTP рдмреНрдпрд╛рдХрдЗрдиреНрдб рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ Apache HTTP рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ TLS рдореЛрдбреНрдпреБрд▓рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рд╡рд┐рддреНрдд рдкреЛрд╖рд┐рдд рдЧрд░рд┐рд╕рдХреЗрдХрд╛ рдЫрдиреНред

рдорд╛рдЗрдХреНрд░реЛрд╕рдлреНрдЯ рд░ рдЧреБрдЧрд▓рдХрд╛ рдЕрдиреБрд╕рд╛рд░, рд▓рдЧрднрдЧ 70% рдХрдордЬреЛрд░реАрд╣рд░реВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧрдХреЛ рдХрд╛рд░рдгрд▓реЗ рд╣реБрдиреНрдЫрдиреНред рдпреЛ рдЖрд╢рд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рдЙрдкрдХрд░рдг рдбреНрд░рд╛рдЗрднрд░рд╣рд░реВ рдЬрд╕реНрддреИ рдХрд░реНрдиреЗрд▓ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрди рд░рд╕реНрдЯ рднрд╛рд╖рд╛рдХреЛ рдкреНрд░рдпреЛрдЧрд▓реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдореЗрдореЛрд░реА рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдЩрдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рд╣реБрдиреЗ рдХрдордЬреЛрд░реАрд╣рд░реВрдХреЛ рдЬреЛрдЦрд┐рдорд▓рд╛рдИ рдХрдо рдЧрд░реНрдиреЗрдЫ рд░ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд▓рд╛рдИ рдореБрдХреНрдд рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐ рд░ рдмрдлрд░ рдмрд╛рдЙрдиреНрдбрд╣рд░реВ рдУрднрд░рд░рди рдЧрд░реНрдиреЗ рдЬрд╕реНрддрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рд╣рдЯрд╛рдЙрдиреЗрдЫред

рдореЗрдореЛрд░реА-рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реНрдпрд╛рдиреНрдбрд▓рд┐рдВрдЧ рд░рд╕реНрдЯрдорд╛ рдХрдореНрдкрд╛рдЗрд▓ рд╕рдордпрдорд╛ рд╕рдиреНрджрд░реНрдн рдЬрд╛рдБрдЪ, рд╡рд╕реНрддреБрдХреЛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рд░ рд╡рд╕реНрддреБ рдЬреАрд╡рдирдХрд╛рд▓ (рд╕реНрдХреЛрдк) рдХреЛ рдЯреНрд░рдпрд╛рдХ рд░рд╛рдЦреНрджреИ, рд╕рд╛рдереИ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдХреНрд░рдордорд╛ рдореЗрдореЛрд░реА рдкрд╣реБрдБрдЪрдХреЛ рд╢реБрджреНрдзрддрд╛рдХреЛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдорд╛рд░реНрдлрдд рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред Rust рд▓реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдУрднрд░рдлреНрд▓реЛрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛ рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдЪрд░ рдорд╛рдирд╣рд░реВрдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░рд╛рд░рдореНрднрд┐рдХрддрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрджрдЫ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдиреНрджрд░реНрднрд╣рд░реВ рд░ рдЪрд░рд╣рд░реВрдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓рд╛рдИ рдХрдо рдЧрд░реНрди рдмрд▓рд┐рдпреЛ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

рд╕реНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди