рд░рд╕реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ 1.40 рд░рд┐рд▓реАрдЬ

рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ рд░рд┐рд▓реАрдЬ рд░рд╕реНрдЯ рез, рдореЛрдЬрд┐рд▓рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рддред рднрд╛рд╖рд╛ рдореЗрдореЛрд░реА рд╕реБрд░рдХреНрд╖рд╛рдорд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рдЫ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рди рд░ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдЙрдЪреНрдЪ рдХрд╛рд░реНрдп рд╕рдорд╛рдирд╛рдиреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред runtime.

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

рдореБрдЦреНрдп рдирд╡рд╛рдЪрд╛рд░рд╣рд░реВ:

  • рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ (рд╕рдВрд░рдЪрдирд╛) рд░ рдЧрдгрдирд╛рд╣рд░реВ (рднреЗрд░рд┐рдПрдиреНрдЯ рдмреНрд▓рдХрдХреЛ рд╕рд╛рде enum) рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдпреЛред#[non_exhaustive]", рдЬреБрди рдпрд╕рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рднрд╡рд┐рд╖реНрдпрдорд╛, рдШреЛрд╖рд┐рдд рд╕рдВрд░рдЪрдирд╛ рд░ рдЧрдгрдирд╛рд╣рд░реВрдорд╛ рдирдпрд╛рдБ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рд░ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реНред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдкрдорд╛ рдШреЛрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рднрдПрдХрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ рднрдПрдХрд╛ рдореЛрдбреНрдпреБрд▓рд╣рд░реВрдХрд╛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ "#[non_exhaustive]" рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрд▓рд╛рдИ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреЗрдЫрдиреН рдЬрд╕рдорд╛ рднрд╡рд┐рд╖реНрдпрдорд╛ рдирдпрд╛рдБ рдлрд┐рд▓реНрдбрд╣рд░реВ рдердкреНрди рд╕рдХрд┐рдиреНрдЫред рдЕрд╣рд┐рд▓реЗ рд╕рдореНрдо, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд▓рд╛рдИ рдирд┐рдЬреА рд░реВрдкрдорд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдШреЛрд╖рдгрд╛ рдЧрд░реНрдиреЗ рд░ рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕реВрдЪреАрдорд╛ рдмрд╛рдБрдзреНрдиреЗ рдмреАрдЪ рдЫрдиреМрдЯ рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рдирдпрд╛рдБ рд╡рд┐рд╢реЗрд╖рддрд╛рд▓реЗ рдпреЛ рд╕реАрдорд╛ рд╣рдЯрд╛рдЙрдБрдЫ рд░ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ рдмрд╛рд╣реНрдп рдХреЛрдб рддреЛрдбреНрдиреЗ рдЬреЛрдЦрд┐рдо рдмрд┐рдирд╛ рднрд╡рд┐рд╖реНрдпрдорд╛ рдирдпрд╛рдБ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдердкреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдХреНрд░реЗрдЯ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдорд╛, "рдорд┐рд▓рд╛рди" рдЦрдгреНрдбрдорд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдорд┐рд▓рд╛рдЙрдБрджрд╛, рд╕рдореНрднрд╛рд╡рд┐рдд рднрд╡рд┐рд╖реНрдпрдХрд╛ рдлрд┐рд▓реНрдбрд╣рд░реВ рд╕рдореЗрдЯреНрдиреЗ рдорд╛рд╕реНрдХ "_ => {...}" рдХреЛ рд╕реНрдкрд╖реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫ, рдЕрдиреНрдпрдерд╛ рдирдпрд╛рдБ рдлрд┐рд▓реНрдбрд╣рд░реВ рдердкреНрджрд╛ рддреНрд░реБрдЯрд┐ рджреЗрдЦрд╛рдЗрдиреЗрдЫред
  • рдердкрд┐рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореНрдпрд╛рдХреНрд░реЛ mac!() рд▓рд╛рдИ рдкреНрд░рдХрд╛рд░ рд╕рдиреНрджрд░реНрднрдорд╛ рдХрд▓ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдпрджрд┐ "expand_to_type" рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдореНрдпрд╛рдХреНрд░реЛ рд╣реЛ рднрдиреЗ "Foo = expand_to_type!(bar);" рд▓реЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред
  • "рдмрд╛рд╣реНрдп { ... }" рдмреНрд▓рдХрд╣рд░реВрдорд╛ рдердкрд┐рдпреЛ "bang!()" рдореНрдпрд╛рдХреНрд░реЛрд╣рд░реВ рд╕рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореНрдпрд╛рдХреНрд░реЛрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

    macro_rules! make_item { ($name:ident) => { fn $name(); } }

    рдмрд╛рд╣рд┐рд░реА {
    make_item!(alpha);
    make_item!(beta);
    }

    рдмрд╛рд╣рд┐рд░реА "C" {
    #[my_identity_macro] fn foo();
    }

  • рдореНрдпрд╛рдХреНрд░реЛрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдпреЛ "macro_rules!" рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ред "macro_rules!" рдЙрддреНрдкрдиреНрди рдЧрд░реНрджреИ рджреБрдмреИ рдкреНрд░рдХрд╛рд░реНрдп-рдЬрд╕реНрддреИ рдореНрдпрд╛рдХреНрд░реЛ ("рдореНрдпрд╛рдХ!()") рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдореНрдпрд╛рдХреНрд░реЛрд╣рд░реВрдорд╛ ("#[рдореНрдпрд╛рдХ]") рд╕рдореНрднрд╡ рдЫред
  • $m:рдореЗрдЯрд╛ рдореНрдпрд╛рдкрд┐рдЩ рддрддреНрд╡рдорд╛ рдердкрд┐рдпреЛ рд╕реНрд╡реЗрдЪреНрдЫрд╛рдЪрд╛рд░реА рдЯреЛрдХрди рдЧрдгрдирд╛ рдорд╛рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдерди (тАЬ[TOKEN_STREAM]тАЭ, тАЬ{TOKEN_STREAM}тАЭ рд░ тАЬ(TOKEN_STREAM)тАЭ), рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

    macro_rules! accept_meta { ($m:meta) => {} }
    рд╕реНрд╡реАрдХрд╛рд░_рдореЗрдЯрд╛!( рдореЗрд░реЛ::рдкрде);
    рд╕реНрд╡реАрдХрд╛рд░_рдореЗрдЯрд╛!( рдореЗрд░реЛ::рдкрде = "рд▓рд╛рдЗрдЯ");
    рд╕реНрд╡реАрдХрд╛рд░_рдореЗрдЯрд╛!( рдореЗрд░реЛ::рдкрде ( abc ) );
    рд╕реНрд╡реАрдХрд╛рд░_рдореЗрдЯрд╛!( рдореЗрд░реЛ::рдкрде [ abc ] );
    accept_meta!( my::path { abc } );

  • Rust 2015 рдореЛрдбрдорд╛, рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ NLL (Non-Lexical Lifetimes) рдкреНрд░рд╡рд┐рдзрд┐рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪрд░рд╣рд░реВрдХреЛ рдЙрдзрд╛рд░реЛ рдЬрд╛рдБрдЪ рдЧрд░реНрджрд╛ рдкрд╣рд┐рдЪрд╛рди рдЧрд░рд┐рдПрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдХреНрд╖рдо рдЧрд░рд┐рдПрдХреЛ рдЫред рдкрд╣рд┐рд▓реЗ, рд░рд╕реНрдЯ 2018 рдореЛрдбрдорд╛ рдЪрд▓реНрджрд╛ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рддреНрд░реБрдЯрд┐рд╣рд░реВрд╕рдБрдЧ рдмрджрд▓рд┐рдПрдХреЛ рдерд┐рдпреЛред
    рдкрд░рд┐рд╡рд░реНрддрди Rust 2015 рдореЛрдбрдорд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рдЕрдиреНрддрддрдГ рд╕рдХреНрд╖рдо рднрдП рд╣рдЯрд╛рдЙрдиреБ рдкреБрд░рд╛рдиреЛ рдЙрдзрд╛рд░реЛ рдкрд░реАрдХреНрд╖рдХрдмрд╛рдЯред

    рд╣рд╛рдореАрд▓рд╛рдИ рдпрд╛рдж рдЧрд░реМрдВ рдХрд┐ рдЙрдзрд╛рд░рд┐рдПрдХреЛ рдЪрд░рд╣рд░реВрдХреЛ рдЬреАрд╡рдирдХрд╛рд▓рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдирдпрд╛рдБ рд╕рдВрдпрдиреНрддреНрд░рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдкреБрд░рд╛рдиреЛ рдкреНрд░рдорд╛рдгрд┐рдХрд░рдг рдХреЛрдбрд▓реЗ рдзреНрдпрд╛рди рдирджрд┐рдиреЗ рдХреЗрд╣реА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдпреЛред рддреНрдпрд╕реНрддрд╛ рдЬрд╛рдБрдЪрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯрд▓реЗ рдкрд╣рд┐рд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХреЛрдбрд╕рдБрдЧ рдЕрдиреБрдХреВрд▓рддрд╛рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╣реБрдирд╛рд▓реЗ, рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдЯреНрдЯрд╛ рдЪреЗрддрд╛рд╡рдиреАрд╣рд░реВ рдкреНрд░рд╛рд░рдореНрднрдорд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдпреЛред

  • "const" рд╡рд┐рд╢реЗрд╖рддрд╛, рдЬрд╕рд▓реЗ рд╕реНрдерд┐рд░рд╛рдВрдХрдХреЛ рд╕рдЯреНрдЯрд╛ рдХреБрдиреИ рдкрдирд┐ рд╕рдиреНрджрд░реНрднрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫ, is_power_of_two рдкреНрд░рдХрд╛рд░реНрдп (рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐) рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
  • API рдХреЛ рдирдпрд╛рдБ рднрд╛рдЧрд▓рд╛рдИ todo!() macro рд░ рд╕реНрд▓рд╛рдЗрд╕::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, рд╡рд┐рдзрд┐рд╣рд░реВ рд▓рдЧрд╛рдпрдд рд╕реНрдерд┐рд░ рдХреЛрдЯреАрдорд╛ рд╕рд╛рд░рд┐рдПрдХреЛ рдЫред
    Option::as_deref, Option::as_deref_mut, Option::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_f32, f64}::from_be_bytes, {f32,f64}::from_le_bytes, рд░ {f32,f64}::from_ne_bytesред

  • рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХ рдХрд╛рд░реНрдЧреЛ рдорд╛
    рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдпреЛ рдбрд┐рд╕реНрдХрдорд╛ рдХреНрдпрд╛рд╕рд┐рдЩ рдХрдореНрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдиреАред "рдХрд╛рд░реНрдЧреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛" рдЖрджреЗрд╢рдорд╛ рд╡рд┐рдХрд▓реНрдк "рдХрд╛рд░реНрдЧреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛" рдердкрд┐рдпреЛ--рдлрд┐рд▓реНрдЯрд░ рдкреНрд▓реЗрдЯрдлрд░реНрдо"рдирд┐рд░реНрднрд░рддрд╛ рд░рд┐рдЬреЛрд▓реНрдпреБрд╕рди рд╕реНрддрдореНрднрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдмрд╛рдБрдзрд┐рдПрдХрд╛ рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВ рдорд╛рддреНрд░ рджреЗрдЦрд╛рдЙрдиред рдорд╛рдиреНрдп TLS рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди http.ssl-рд╕рдВрд╕реНрдХрд░рдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╡рд┐рдХрд▓реНрдк рдердкрд┐рдпреЛред
    рдЦрдгреНрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдердкрд┐рдпреЛ "dev-рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ"рд╕рдВрд╕реНрдХрд░рдг" рдХреБрдЮреНрдЬреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирдЧрд░реАред

  • rustc рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдорд╣рд░реВ thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 рд░ mips64el-unknown-linux-muslabi64 рдХреЛ рд▓рд╛рдЧрд┐ рддреЗрд╕реНрд░реЛ рд╕реНрддрд░ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рддреЗрд╕реНрд░реЛ рддрд╣рдорд╛ рдЖрдзрд╛рд░рднреВрдд рд╕рдорд░реНрдерди рд╕рдорд╛рд╡реЗрд╢ рдЫ, рддрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд┐рд░реНрдорд╛рдгрд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рд░ рдкреНрд░рдХрд╛рд╢рди рдмрд┐рдирд╛ред

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

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