рдореЗрд╕рди рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рд░рд┐рд▓реАрдЬ 1.3

рдореЗрд╕рди 1.3.0 рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдордЪреЗ рдкреНрд░рдХрд╛рд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ X.Org рд╕рд░реНрд╡реНрд╣рд░, рдореЗрд╕рд╛, рд▓рд╛рдЗрдЯрдЯреАрдкреАрдбреА, рд╕рд┐рд╕реНрдЯрдордб, рдЬреАрд╕реНрдЯреНрд░реАрдорд░, рд╡реЗрд▓рдБрдб, рдЬреАрдиреЛрдо рдЖрдгрд┐ рдЬреАрдЯреАрдХреЗ рд╕рд╛рд░рдЦреЗ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. Meson рдХреЛрдб Python рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЛ Apache 2.0 рд▓рд╛рдпрд╕рдиреНрд╕ рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд рдЖрд╣реЗ.

рдореЗрд╕реЙрдирдЪреЗ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рдЙрджреНрджрд┐рд╖реНрдЯ рд╣реЗ рдЖрд╣реЗ рдХреА рдЙрдЪреНрдЪ рдЧрддреА рдЕрд╕реЗрдВрдмреНрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд╡рд┐рдзреЗрд╕рд╣ рдЖрдгрд┐ рд╡рд╛рдкрд░рдгреА рд╕реБрд▓рднрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреЗ. рдореЗрдХ рдРрд╡рдЬреА, рдмрд┐рд▓реНрдб рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдирд┐рдиреНрдЬрд╛ рдЯреВрд▓рдХрд┐рдЯ рд╡рд╛рдкрд░рддреЗ, рдкрд░рдВрддреБ рдЗрддрд░ рдмреЕрдХрдПрдВрдб рдЬрд╕реЗ рдХреА xcode рдЖрдгрд┐ VisualStudio рджреЗрдЦреАрд▓ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдПрдХ рдЕрдВрдЧрднреВрдд рдорд▓реНрдЯреА-рдкреНрд▓реЕрдЯрдлреЙрд░реНрдо рдЕрд╡рд▓рдВрдмрди рд╣рдБрдбрд▓рд░ рдЖрд╣реЗ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА рдкреЕрдХреЗрдЬреЗрд╕ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореЗрд╕рди рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. рдЕрд╕реЗрдВрдмреНрд▓реА рдирд┐рдпрдо рд╕рд░рд▓реАрдХреГрдд рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖реЗрдд рд╕реЗрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗрдд, рддреЗ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдЪрд╛рдВрдЧрд▓реЗ рд╡рд╛рдЪрдиреАрдп рдЖрдгрд┐ рд╕рдордЬрдгреНрдпрд╛рдпреЛрдЧреНрдп рдЖрд╣реЗрдд (рд▓реЗрдЦрдХрд╛рдВрдЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдиреБрд╕рд╛рд░, рд╡рд┐рдХрд╕рдХрд╛рдиреЗ рдирд┐рдпрдо рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдХрдореАрддрдХрдореА рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ).

рд▓рд┐рдирдХреНрд╕, рдЗрд▓реНрдпреБрдореЛрд╕/рд╕реЛрд▓рд╛рд░рд┐рд╕, рдлреНрд░реАрдмреАрдПрд╕рдбреА, рдиреЗрдЯрдмреАрдПрд╕рдбреА, рдбреНрд░реЕрдЧрдирдлреНрд▓рд╛рдп рдмреАрдПрд╕рдбреА, рд╣рд╛рдпрдХреВ, рдореЕрдХрдУрдПрд╕ рдЖрдгрд┐ рд╡рд┐рдВрдбреЛрдЬрд╡рд░ рдЬреАрд╕реАрд╕реА, рдХреНрд▓реЕрдВрдЧ, рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓ рд╕реНрдЯреБрдбрд┐рдУ рдЖрдгрд┐ рдЗрддрд░ рдХрдВрдкрд╛рдпрд▓рд░ рд╡рд╛рдкрд░реВрди рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд┐рдВрдЧ рдЖрдгрд┐ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ. C, C++, Fortran, Java рдЖрдгрд┐ Rust рдпрд╛рд╕рд╣ рд╡рд┐рд╡рд┐рдз рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдкреНрд░рдХрд▓реНрдк рддрдпрд╛рд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рд╡рд╛рдвреАрд╡ рдмрд┐рд▓реНрдб рдореЛрдб рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ, рдЬреНрдпрд╛рдордзреНрдпреЗ рдХреЗрд╡рд│ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рдмрд┐рд▓реНрдбрдкрд╛рд╕реВрди рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдмрджрд▓рд╛рдВрд╢реА рдереЗрдЯ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдореЗрд╕рдирдЪрд╛ рд╡рд╛рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдмрд┐рд▓реНрдбреНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ, рдЬреЗрдереЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдмрд┐рд▓реНрдб рдЪрд╛рд▓рд╡рдгреНрдпрд╛рдореБрд│реЗ рдкреВрд░реНрдгрдкрдгреЗ рдПрдХрд╕рд╛рд░рдЦреЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рддрдпрд╛рд░ рд╣реЛрддрд╛рдд.

рдореЗрд╕рди рез.рез рдЪреЗ рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛:

  • compiler.compiles(), compiler.links() рдЖрдгрд┐ compiler.run() рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдВрдордзреНрдпреЗ тАЬрддреНрд░реБрдЯреА: рд╕рддреНрдптАЭ рд╣рд╛ рдкрд░реНрдпрд╛рдп рдЬреЛрдбрд▓рд╛ рдЖрд╣реЗ, рдЬреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдгреАрдВрдирд╛ рддреНрд░реБрдЯреА рдорд╛рдирддрд╛рдд (рдХреЛрдб рдЪреЗрддрд╛рд╡рдгреАрд╢рд┐рд╡рд╛рдп рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЖрд╣реЗ рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. ).
  • рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░рджреНрд╡рд╛рд░реЗ рдЪрд┐рдиреНрд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА has_define рдкрджреНрдзрдд рдЬреЛрдбрд▓реА.
  • рдореЕрдХреНрд░реЛ_рдирд╛рд╡ рдкреЕрд░рд╛рдореАрдЯрд░ configure_file() рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, "#include" ("рдЧрд╛рд░реНрдб рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рд╛") рджреНрд╡рд╛рд░реЗ рджреБрд╣реЗрд░реА рдХрдиреЗрдХреНрд╢рдирд╕рд╛рдареА рдореЕрдХреНрд░реЛ рд╕рдВрд░рдХреНрд╖рдг рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, C рднрд╛рд╖реЗрдд рдореЕрдХреНрд░реЛрдЪреНрдпрд╛ рд╢реИрд▓реАрдордзреНрдпреЗ рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ (рдбрд╛рдпрдиреЕрдорд┐рдХрд╕рд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рдлрд╛рдЗрд▓реНрд╕рдЪреА рдирд┐рд░реНрдорд┐рддреА рд╕реБрд▓рдн рдХрд░рддреЗ. рдореЕрдХреНрд░реЛ рдирд╛рд╡реЗ).
  • configure_file() - JSON ("output_format: json") рдордзреНрдпреЗ рдирд╡реАрди рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • c_std рдЖрдгрд┐ cpp_std рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдордзреНрдпреЗ рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╕реВрдЪреА рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, тАЬdefault_options: 'c_std=gnu11,c11тА▓тАЩ).
  • рдлрд╛рдпрд▓реАрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА CustomTarget рд╡рд╛рдкрд░рдгрд╛рд▒реНрдпрд╛ рдореЙрдбреНрдпреВрд▓реНрд╕рдордзреНрдпреЗ, рдирд┐рдиреНрдЬрд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреАрджреНрд╡рд╛рд░реЗ рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рд╕рд╛рдиреБрдХреВрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ.
  • рдмрд┐рд▓реНрдб_рд▓рдХреНрд╖реНрдп "рдЬрд╛рд░" рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдРрд╡рдЬреА "рдЬрд╛рд░()" рдХреЙрд▓рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЖрд╣реЗ.
  • рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА generator.process() рдкрджреНрдзрддреАрдордзреНрдпреЗ 'env' рдкреЕрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЬреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдЬрдирд░реЗрдЯрд░ рдЗрдирдкреБрдЯрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрд▓.
  • рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдмрд┐рд▓реНрдб рдЯрд╛рд░реНрдЧреЗрдЯ рдирд╛рд╡реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛рдирд╛, "executable('foo', 'main.c', name_suffix: 'bar')" рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рддреНрдпрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдЪ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдд рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдЬрдирд░реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.
  • Shared_module() рд▓рд╛ рдкрд╛рд╕ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рд╕реВрдЪреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгрд╛рд░реА def рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА exectuable() рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ "vs_module_defs" рдкреЕрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд▓реЗ.
  • рдлреЙрд▓рдмреЕрдХ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯ рдкрд░реНрдпрд╛рдп рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА find_program() рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ 'default_options' рдкреЕрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд▓реЗ.
  • fs.relative_to() рдкрджреНрдзрдд рдЬреЛрдбрд▓реА, рдЬреА рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд┐рддрд░реНрдХрд╛рд╕рд╛рдареА рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рд░реНрдЧ рдкрд░рдд рдХрд░рддреЗ, рдЬрд░ рдкрд╣рд┐рд▓рд╛ рдорд╛рд░реНрдЧ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕реЗрд▓ рддрд░ рджреБрд╕рд▒реНрдпрд╛рдЪреНрдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • рдЦрд╛рд▓реАрд▓_symlinks рдкреЕрд░рд╛рдореАрдЯрд░ install_data(), install_headers() рдЖрдгрд┐ install_subdir() рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ; рд╕реЗрдЯ рдХреЗрд▓реНрдпрд╛рд╡рд░, рдкреНрд░рддреАрдХрд╛рддреНрдордХ рджреБрд╡реЗ рдлреЙрд▓реЛ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.
  • рдПрдХ "рдлрд┐рд▓" рдкреЕрд░рд╛рдореАрдЯрд░ int.to_string() рдореЗрдердбрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реБрди рд╕реНрдЯреНрд░рд┐рдВрдЧрд▓рд╛ рдЕрдЧреНрд░рдЧрдгреНрдп рд╢реВрдиреНрдпрд╛рдВрд╕рд╣ рднрд░рд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, n=3 рд╕рд╛рдареА рд╕рдВрджреЗрд╢(n.to_string(fill: 4)) рдХреЙрд▓ рдХреЗрд▓реНрдпрд╛рдиреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ "004" рддрдпрд╛рд░ рд╣реЛрдИрд▓.
  • рдПрдХ рдирд╡реАрди рд▓рдХреНрд╖реНрдп рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, clang-tidy-fix, рдЬреЗ "-fix" рдзреНрд╡рдЬрд╛рд╕рд╣ clang-tidy рдпреБрдЯрд┐рд▓рд┐рдЯреА рдЪрд╛рд▓рд╡рдгреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ.
  • рдЕрд╕реЗрдВрдмрд▓реА рд▓рдХреНрд╖реНрдпрд╛рдЪрд╛ (TARGET_SUFFIX) рдкреНрд░рддреНрдпрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) рдХрдВрдкрд╛рдЗрд▓ рдХрдорд╛рдВрдбрдордзреНрдпреЗ рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ.
  • рдкреЕрдХреЗрдЬ рдХреЕрд╢реЗрдЪрд╛ рдорд╛рд░реНрдЧ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА MESON_PACKAGE_CACHE_DIR рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд▓реЗ (рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯ/рдкреЕрдХреЗрдЬ рдХреЕрд╢реЗ), рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдкреНрд░рдХрд▓реНрдкрд╛рдВрдордзреНрдпреЗ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЕрд╢реЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.
  • рдкрд░реНрд╕рд┐рд╕реНрдЯрдВрдЯ рдХреЕрд╢реЗ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "meson setup --clearcache" рдХрдорд╛рдВрдб рдЬреЛрдбрд▓реА.
  • "рдЖрд╡рд╢реНрдпрдХ" рдХреАрд╡рд░реНрдбрд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕рд░реНрд╡ "has_*" рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрдХ рдкрджреНрдзрддреАрдВрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "assert(cc.has_function('some_function'))" рдРрд╡рдЬреА рддреБрдореНрд╣реА рдЖрддрд╛ "cc.has_function('some_function') рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. , рдЖрд╡рд╢реНрдпрдХ: рдЦрд░реЗ)тАЭ.
  • рдирд╡рд╛ рдХреАрд╡рд░реНрдб, rust_abi, shared_library(), static_library(), library(), рдЖрдгрд┐ shared_module() рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рдирд╛рдкрд╕рдВрдд rust_crate_type рдРрд╡рдЬреА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рд╡рд╛.

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

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