Rust 1.57 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдкреНрд░рдХрд╛рд╢рди

рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд▓рдБрдЧреНрд╡реЗрдЬ Rust 1.57 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди, Mozilla рдкреНрд░рдХрд▓реНрдкрд╛рджреНрд╡рд╛рд░реЗ рд╕реНрдерд╛рдкрд┐рдд, рдкрд░рдВрддреБ рдЖрддрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдирд╛-рдирдлрд╛ рд╕рдВрд╕реНрдерд╛ Rust Foundation рдЪреНрдпрд╛ рд╕рдВрд░рдХреНрд╖рдгрд╛рдЦрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. рднрд╛рд╖рд╛ рдореЗрдорд░реА рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрд╡рд░ рд▓рдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ, рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдореЗрдорд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╛рд╣рдХ рдХрд┐рдВрд╡рд╛ рд░рдирдЯрд╛рдЗрдо рди рд╡рд╛рдкрд░рддрд╛ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдВрддрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ (рд░рдирдЯрд╛рдЗрдо рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдкреНрд░рд╛рд░рдВрдн рдЖрдгрд┐ рджреЗрдЦрднрд╛рд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдореА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ).

рд░рд╕реНрдЯрдЪреЗ рдСрдЯреЛрдореЕрдЯрд┐рдХ рдореЗрдорд░реА рдореЕрдиреЗрдЬрдореЗрдВрдЯ рдкреЙрдЗрдВрдЯрд░рдордзреНрдпреЗ рдлреЗрд░рдлрд╛рд░ рдХрд░рддрд╛рдирд╛ рддреНрд░реБрдЯреА рджреВрд░ рдХрд░рддреЗ рдЖрдгрд┐ рд▓реЛ-рд▓реЗрд╡реНрд╣рд▓ рдореЗрдорд░реА рдореЕрдирд┐рдкреНрдпреБрд▓реЗрд╢рдирдореБрд│реЗ рдЙрджреНрднрд╡рдгрд╛рд▒реНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдХрд░рддреЗ, рдЬрд╕реЗ рдХреА рдореЗрдорд░реА рд░рд┐рдЬрди рдореЛрдХрд│реЗ рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░ рддреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреЗ, рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдбрд┐рд░реЗрдлрд░рдиреНрд╕, рдмрдлрд░ рдУрд╡реНрд╣рд░рд░рдиреНрд╕ рдЗ. рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд┐рддрд░реАрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЕрд╕реЗрдВрдмрд▓реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкреНрд░рдХрд▓реНрдк рдХрд╛рд░реНрдЧреЛ рдкреЕрдХреЗрдЬ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдд рдЖрд╣реЗ. crates.io рд░реЗрдкреЙрдЬрд┐рдЯрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╛рдареА рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ.

рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:

  • "рдкреЕрдирд┐рдХ!" рдореЕрдХреНрд░реЛрдЪрд╛ рд╡рд╛рдкрд░ рд╕реНрдерд┐рд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. рд╕рдВрдХрд▓рдирд╛рджрд░рдореНрдпрд╛рди рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрджрд░реНрднрд╛рдВрдордзреНрдпреЗ, рдЬрд╕реЗ рдХреА "const fn" рдШреЛрд╖рдгрд╛. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, "рдкреЕрдирд┐рдХ!" рд╡рд╛рдкрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд! const рдШреЛрд╖рдгрд╛рдВрдореБрд│реЗ "рдЕрд╕реЗрд░реНрдЯ!" рдореЕрдХреНрд░реЛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдорд┐рд│рддреЗ. рдЖрдгрд┐ рдХрд╛рд╣реА рдЗрддрд░ рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реА API. рд╕реНрдерд┐рд░реАрдХрд░рдг рдЕрджреНрдпрд╛рдк рд╕рдВрдкреВрд░реНрдг рд╕реНрд╡рд░реВрдкрди рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛рдВрдирд╛ рдХрд╡реНрд╣рд░ рдХрд░рдд рдирд╛рд╣реА, рдореНрд╣рдгреВрди рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд тАЬрдкреЕрдирд┐рдХ!тАЭ рдореЕрдХреНрд░реЛ рдлрдХреНрдд рд╕реНрдЯреЕрдЯрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рдкреЕрдирд┐рдХ!("...")) рдХрд┐рдВрд╡рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд░рддрд╛рдирд╛ "&str" рдПрдХрд▓ рдЗрдВрдЯрд░рдкреЛрд▓реЗрдЯреЗрдб рд╡реНрд╣реЕрд▓реНрдпреВрд╕рд╣ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ (рдкреЕрдирд┐рдХ!("{}", a)), рдЬреЗ "{" рдмрджрд▓рдгреНрдпрд╛рдкреБрд░рддреЗ рдорд░реНрдпрд╛рджрд┐рдд рдЕрд╕рд╛рд╡реЗ }" рдлреЙрд░рдореЕрдЯрд┐рдВрдЧ рд╕реНрдкреЗрд╕рд┐рдлрд╛рдпрд░реНрд╕ рдЖрдгрд┐ рдЗрддрд░ рдкреНрд░рдХрд╛рд░рд╛рдВрд╢рд┐рд╡рд╛рдп. рднрд╡рд┐рд╖реНрдпрд╛рдд, рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрднрд╛рддреАрд▓ рдореЕрдХреНрд░реЛрдЪреА рд▓рд╛рдЧреВрдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рд▓реА рдЬрд╛рдИрд▓, рдкрд░рдВрддреБ рд╕реНрдерд┐рд░реАрдХрд░рдг рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреНрд╖рдорддрд╛ рд╕рдВрдХрд▓рдирд╛рдЪреНрдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдЖрд╕реНрдерд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдзреАрдЪ рдкреБрд░реЗрд╢реА рдЖрд╣реЗрдд: const _: () = assert!(std::mem::size_of:: () == 64); const _: () = assert!(std::mem::size_of:: () == 8);
  • рдХрд╛рд░реНрдЧреЛ рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ "рджреЗрд╡", "рд░рд┐рд▓реАрдЬ", "рдЯреЗрд╕реНрдЯ" рдЖрдгрд┐ "рдмреЗрдВрдЪ" рдкрд░реНрдпрдВрдд рдорд░реНрдпрд╛рджрд┐рдд рдирд╕реВрди, рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╛рд╡рд╛рдВрд╕рд╣ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕реНрдЯреЗрдЬрд╡рд░ (LTO) рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЬреЗрд╡реНрд╣рд╛ рдЕрдВрддрд┐рдо рдЙрддреНрдкрд╛рджрди рдЕрд╕реЗрдВрдмреНрд▓реА рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд, рддреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА Cargo.toml рдордзреНрдпреЗ тАЬрдЙрддреНрдкрд╛рджрдитАЭ рдкреНрд░реЛрдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдд тАЬlto = trueтАЭ рдзреНрд╡рдЬ рдЬреЛрдбреВ рд╢рдХрддрд╛. рддрдерд╛рдкрд┐, рддреБрдордЪреА рд╕реНрд╡рддрдГрдЪреА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдирд╛, рддреБрдореНрд╣реА рддреНрдпрд╛рдкрд╛рд╕реВрди рдбреАрдлреЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рджреНрдпрдорд╛рди рдкреНрд░реЛрдлрд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЦрд╛рд▓реАрд▓ рдЙрджрд╛рд╣рд░рдг рдПрдХ "рдЙрддреНрдкрд╛рджрди" рдкреНрд░реЛрдлрд╛рдЗрд▓ рддрдпрд╛рд░ рдХрд░рддреЗ рдЬреЗ "lto = true" рдзреНрд╡рдЬ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░реВрди "рд░рд┐рд▓реАрдЭ" рдкреНрд░реЛрдлрд╛рдЗрд▓рд▓рд╛ рдкреВрд░рдХ рдЖрд╣реЗ. рдкреНрд░реЛрдлрд╛рдЗрд▓ рд╕реНрд╡рддрдГ "--рдкреНрд░реЛрдлрд╛рдЗрд▓ рдЙрддреНрдкрд╛рджрди" рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ рдХрд╛рд░реНрдЧреЛ рдХреЙрд▓ рдХрд░реВрди рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдЖрд░реНрдЯрд┐рдлреЕрдХреНрдЯреНрд╕ "рд▓рдХреНрд╖реНрдп/рдЙрддреНрдкрд╛рджрди" рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдареЗрд╡рд▓реНрдпрд╛ рдЬрд╛рддреАрд▓. [profile.production] inherits = "рд░рд┐рд▓реАрдЬ" lto = рдЦрд░реЗ
  • Vec, String, HashMap, HashSet рдЖрдгрд┐ VecDeque рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА try_reserve рдЪрд╛ рд╡рд╛рдкрд░ рд╕реНрдерд┐рд░ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдореЗрдорд░реА рд╡рд╛рдЯрдк рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреА рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рджрд┐рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпреЗрд╕рд╛рдареА рдЬрд╛рдЧрд╛ рд░рд╛рдЦреВрди рдареЗрд╡рддрд╛ рдпреЗрддреЗ. рдореЗрдорд░реАрдЪреНрдпрд╛ рдХрдорддрд░рддреЗрдореБрд│реЗ рдСрдкрд░реЗрд╢рди рджрд░рдореНрдпрд╛рди рдХреНрд░реЕрд╢.
  • "m!{ .. }.method()" рдЖрдгрд┐ "m!{ .. }?" рд╕рд╛рд░рдЦреНрдпрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрдордзреНрдпреЗ рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрд╕рд╕рд╣ рдореЕрдХреНрд░реЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.
  • рдлрд╛рдЗрд▓::read_to_end рдЖрдгрд┐ read_to_string рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ.
  • рдпреБрдирд┐рдХреЛрдб рддрдкрд╢реАрд▓рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЖрд╡реГрддреНрддреА 14.0 рд╡рд░ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рд░рд┐рдЯрд░реНрди рд╡реНрд╣реЕрд▓реНрдпреВрдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХреЗрд▓реНрдпрд╛рд╕ рдЪреЗрддрд╛рд╡рдгреА рдЬрд╛рд░реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "#[must_use]" рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдврд╡рд▓реА, рдЬреЗ рдирд╡реАрди рдореВрд▓реНрдп рдкрд░рдд рдХрд░рдгреНрдпрд╛рдРрд╡рдЬреА рдлрдВрдХреНрд╢рди рдореВрд▓реНрдпреЗ рдмрджрд▓реЗрд▓ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рд▓реНрдпрд╛рдореБрд│реЗ рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рддреНрд░реБрдЯреА рдУрд│рдЦрдгреНрдпрд╛рдд рдорджрдд рдХрд░рддреЗ.
  • libgccjit рд╡рд╛рдкрд░реВрди рдХреЛрдб рдирд┐рд░реНрдорд┐рддреАрд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдмреЕрдХрдПрдВрдб рдЬреЛрдбрд▓реЗ.
  • API рдЪрд╛ рдПрдХ рдирд╡реАрди рднрд╛рдЧ рд╕реНрдерд┐рд░ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рд╣рд▓рд╡рд┐рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдкрджреНрдзрддреА рдЖрдгрд┐ рдЧреБрдгрдзрд░реНрдорд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реНрдерд┐рд░ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ:
    • [рдЯ; N]::as_mut_slice
    • [рдЯ; N]:: as_slice
    • рд╕рдВрдЧреНрд░рд╣::TryReserveError
    • HashMap::try_reserve
    • рд╣реЕрд╢рд╕реЗрдЯ::рдЯреНрд░рд╛рдп_рд░рд┐рдЭрд░реНрд╡
    • String::try_reserve
    • String::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • рдЗрдЯрд░реЗрдЯрд░::map_while
    • iter::MapWhile
    • proc_macro::is_available
    • рдХрдорд╛рдВрдб::рдЧреЗрдЯ_рдкреНрд░реЛрдЧреНрд░рд╛рдо
    • рдЖрджреЗрд╢::get_args
    • рдЖрджреЗрд╢::get_envs
    • рдЖрджреЗрд╢::get_current_dir
    • CommandArgs
    • CommandEnvs
  • "const" рд╡рд┐рд╢реЗрд╖рддрд╛, рдЬреА рд╕реНрдерд┐рд░рд╛рдВрдХрд╛рдВрдРрд╡рдЬреА рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рдВрджрд░реНрднрд╛рдд рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ рдХреА рдирд╛рд╣реА рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ, рдлрдВрдХреНрд╢рди hint::unreachable_unchecked рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ.
  • рд╕рдорд░реНрдердирд╛рдЪрд╛ рддрд┐рд╕рд░рд╛ рд╕реНрддрд░ armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдПрд╕рдкреА7-рдПрдПрд╕рдкреА3-рдПрдПрд╕рдкреАXNUMX-рдПрдПрд╕рдкреАXNUMX-рдПрдПрд╕рдкреА-XNUMX-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдмреА-рдПрдПрдмреА-рдПрдПрд╕рдкреАXNUMX-рдПрдПрд╕рдкреАXNUMX, рдПрдоXNUMXрдХреЗ-рдЕрдЬреНрдЮрд╛рдд-рд▓рд┐рдирдХреНрд╕-рдЧреНрдиреВ, рдПрдоXNUMXрдХреЗ-рдЕрдЬреНрдЮрд╛рдд-рд▓рд┐рдирдХреНрд╕-рдЬреАрдПрдирдпреВрд╕рд╛рдареА рд▓рд╛рдЧреВ рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ. solid_aspXNUMX-eabihf рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо. рддрд┐рд╕рд▒реНрдпрд╛ рд╕реНрддрд░рд╛рдордзреНрдпреЗ рдореВрд▓рднреВрдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЪрд╛рдЪрдгреАрд╢рд┐рд╡рд╛рдп, рдЕрдзрд┐рдХреГрдд рдмрд┐рд▓реНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рдХреЛрдб рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреЗ.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛