рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ Haxe 4.0 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рдЙрдкрд▓рдмреНрдз рдЯреВрд▓рдХрд┐рдЯ рдкреНрд░рдХрд╛рд╢рди Haxe 4.0, рдЬреНрдпрд╛рдордзреНрдпреЗ рдордЬрдмреВрдд рдЯрд╛рдпрдкрд┐рдВрдЧ, рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдгрд┐ рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрд╕рд╣ рд╕рдорд╛рди рдирд╛рд╡рд╛рдЪреА рдорд▓реНрдЯреА-рдкреЕрд░рд╛рдбрд╛рдЗрдо рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ. рд╣рд╛ рдкреНрд░рдХрд▓реНрдк C++, HashLink/C, JavaScript, C#, Java, PHP, Python рдЖрдгрд┐ Lua, рддрд╕реЗрдЪ JVM, HashLink/JIT, Flash рдЖрдгрд┐ Neko bytecode рдЪреНрдпрд╛ рд╕рдВрдХрд▓рдирд╛рд╕рд╛рдареА, рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЕрдЯрдлреЙрд░реНрдордЪреНрдпрд╛ рдореВрд│ рдХреНрд╖рдорддрд╛рдВрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЛ. рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рддрд░рд┐рдд GPLv2 рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд, рдЖрдгрд┐ Haxe рд╕рд╛рдареА рдПрдХ рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдгрд┐ рдПрдХ рдЖрднрд╛рд╕реА рдорд╢реАрди рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдиреЗрдХреЛ MIT рдкрд░рд╡рд╛рдиреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд.

рднрд╛рд╖рд╛ рдЖрд╣реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддреА-рджреЗрдгрд╛рд░рдВ рдордЬрдмреВрдд рдЯрд╛рдпрдкрд┐рдВрдЧрд╕рд╣. рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб, рдЬреЗрдиреЗрд░рд┐рдХ рдЖрдгрд┐ рдлрдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдВрдХрд▓реНрдкрдирд╛ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд.
Haxe рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ ECMAScript рдЪреНрдпрд╛ рдЬрд╡рд│ рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рд╕реНрддрд╛рд░рддреЗ рд╕реНрдЯреЕрдЯрд┐рдХ рдЯрд╛рдпрдкрд┐рдВрдЧ, рдСрдЯреЛрдЯрд╛рдЗрдк рдЕрдиреБрдорд╛рди, рдирдореБрдирд╛ рдЬреБрд│рдгреА, рдЬреЗрдиреЗрд░рд┐рдХреНрд╕, рд▓реВрдкрд╕рд╛рдареА рдЗрдЯрд░реЗрдЯрд░-рдЖрдзрд╛рд░рд┐рдд, рдПрдПрд╕рдЯреА рдореЕрдХреНрд░реЛ, GADT (рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдмреАрдЬрдЧрдгрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░), рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░, рдирд┐рдирд╛рд╡реА рд╕рдВрд░рдЪрдирд╛, рд╕рд░рд▓реАрдХреГрдд ре▓рд░реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛, рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдЕрднрд┐рд╡реНрдпрдХреНрддреА, рдлреАрд▓реНрдб рдореЗрдЯрд╛рдбрд╛рдЯрд╛ рдЬреЛрдбрдгреЗ рдпрд╛рд╕рд╛рд░рдЦреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ , рд╡рд░реНрдЧ рдЖрдгрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддреА, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди ('рдорд╛рдЭреЗ рдирд╛рд╡ $рдиреЗрдо рдЖрд╣реЗ'), рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ ("рдирд╡реАрди рдореБрдЦреНрдптА╣рд╕реНрдЯреНрд░рд┐рдВрдЧтА║('рдлреВ')"), рдЖрдгрд┐ рдЬрд╛рд╕реНрдд.

рд╡рд░реНрдЧ рдЪрд╛рдЪрдгреА {
рд╕реНрдерд┐рд░ рдХрд╛рд░реНрдп рдореБрдЦреНрдп() {
var рд▓реЛрдХ = [
"рдПрд▓рд┐рдЭрд╛рдмреЗрде" => "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ",
"рдЬреЛрдПрд▓" => "рдбрд┐рдЭрд╛рдЗрди"
];

рд╕рд╛рдареА (people.keys()) {
var рдиреЛрдХрд░реА = рд▓реЛрдХ [рдирд╛рд╡];
рдЯреНрд░реЗрд╕('$рдирд╛рд╡ рдЬрдЧрдгреНрдпрд╛рд╕рд╛рдареА $рдиреЛрдХрд░реА рдХрд░рддреЗ!');
}
}
}

рдореБрдЦреНрдп рдирд╡рдХрд▓реНрдкрдирд╛ рдЖрд╡реГрддреНрддреА рек.реж:

  • "рд╕реНрдЯреНрд░рд┐рдВрдЧ->рдЗрдВрдЯ->рдмреВрд▓" рдРрд╡рдЬреА рдлрдВрдХреНрд╢рди рдкреНрд░рдХрд╛рд░ "(рдирд╛рд╡:рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╡рдп:рдЗрдВрдЯ)->рдмреВрд▓" рдХрд┐рдВрд╡рд╛ "(рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдЗрдВрдЯ)->рдмреВрд▓" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рд╡рд╛рдХреНрдпрд░рдЪрдирд╛.
  • рдмрд╛рдг рдлрдВрдХреНрд╢рди рд╕рд┐рдВрдЯреЕрдХреНрд╕ "(a, b) -> a + b" рдРрд╡рдЬреА "function(a, b) return a + b" рдЖрд╣реЗ.
  • рд╢реВрдиреНрдп рдореВрд▓реНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг (рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлреАрд▓реНрдб, рд╡рд░реНрдЧ рдХрд┐рдВрд╡рд╛ рдкреЕрдХреЗрдЬреЗрд╕рд╕рд╛рдареА рд╡реИрдХрд▓реНрдкрд┐рдХрд░рд┐рддреНрдпрд╛ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗрд▓реЗ).
  • "рдЕрдВрддрд┐рдо" рдХреАрд╡рд░реНрдб рдХреНрд▓рд╛рд╕ рдлреАрд▓реНрдб рдЖрдгрд┐ рд╕реНрдерд╛рдирд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА рдЖрд╣реЗ рдЬреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЖрд╣реЗрдд. "рдЕрдВрддрд┐рдо" рдЪрд╛ рд╡рд╛рдкрд░ рдлрдВрдХреНрд╢рдиреНрд╕рдирд╛ рдЗрдирд╣реЗрд░рд┐рдЯрдиреНрд╕рджреНрд╡рд╛рд░реЗ рдЕрдзрд┐рд▓рд┐рдЦрд┐рдд рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рд░реЛрдЦрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╡рд░реНрдЧ/рдЗрдВрдЯрд░рдлреЗрд╕рд╕рд╛рдареА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЬреНрдпрд╛рдВрдирд╛ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│реВ рд╢рдХрдд рдирд╛рд╣реА.
  • рдЖрдзрд╛рд░ рдиреЗрдХреЛ рд╡рдЧрд│рддрд╛ рд╕рд░реНрд╡ рд╕рдВрдХрд▓рди рд▓рдХреНрд╖реНрдпрд╛рдВрд╡рд░ рдмреЗрд╕ рдкреНрд░рдХрд╛рд░ "рд╕реНрдЯреНрд░рд┐рдВрдЧ" рд╕рд╛рдареА рдпреБрдирд┐рдХреЛрдб рдорд╛рдирдХ.
  • рдмрд┐рд▓реНрдЯ-рдЗрди рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рд╕реНрдХреНрд░реЕрдЪрдордзреВрди рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛, рдЬреЛ рдЖрддрд╛ рдирд╛рд╡рд╛рдЦрд╛рд▓реА рдпреЗрддреЛ рдЗрд╡реНрд╣рд▓. рдирд╡реАрди рджреБрднрд╛рд╖реНрдпрд╛рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрдгрд┐ рдореЕрдХреНрд░реЛ рдЦреВрдк рд╡реЗрдЧрд╛рдиреЗ рдЪрд╛рд▓рддрд╛рдд. рдкрд░рд╕реНрдкрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдореЛрдб рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗ.
  • рд╕рдВрдХрд▓рдирд╛рд╕рд╛рдареА рдирд╡реАрди рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА (рд▓рдХреНрд╖реНрдп) рд╣реЕрд╢рд▓рд┐рдВрдХ - рд╡рд┐рд╢реЗрд╖рдд: Haxe рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓рд╛ рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░рдирдЯрд╛рдЗрдо, JIT рдХрд┐рдВрд╡рд╛ C рд╕рд╛рдареА рдмрд╛рдпрдХреЛрдбрдЪреНрдпрд╛ рд╕рдВрдХрд▓рдирд╛рд╕ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░рд╛, C рд╕рд╣ рд╕реБрд▓рдн рдПрдХреАрдХрд░рдг, рддрд╕реЗрдЪ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рдкреЙрдЗрдВрдЯрд░реНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдЖрд╣реЗ.
  • рдирд╡реАрди JVM рд▓рдХреНрд╖реНрдп - Java рдордзреНрдпреЗ рд▓рдХреНрд╖реНрдп рдХрд░рддрд╛рдирд╛ "-D jvm" рдзреНрд╡рдЬ рдЬреЛрдбреВрди Java рдХреЛрдб рд╕рдВрдХрд▓рдирд╛рдЪреА рдкрд╛рдпрд░реА рд╡рдЧрд│реВрди рддреБрдореНрд╣рд╛рд▓рд╛ jvm bytecode рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  • рдХреЙрд▓рд┐рдВрдЧ рдлрдВрдХреНрд╢рдиреНрд╕ рдХрд┐рдВрд╡рд╛ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕рдЪреНрдпрд╛ рдмрд┐рдВрджреВрд╡рд░ рдЗрдирд▓рд╛рдЗрди-рдбрд┐рдкреНрд▓реЙрдп рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛, рдЬрд░реА рддреЗ рдЕрд╕реЗ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдирд╕рд▓реЗ рддрд░реАрд╣реА.
  • рд╕рдорд╛рд╡реЗрд╢рд╛рдЪреА рд╢рдХреНрдпрддрд╛ рд╕реНрдерд┐рд░ рд╡рд┐рд╕реНрддрд╛рд░ "@:using(path.ToExtension)" рд╡рд╛рдкрд░реВрди рдкреНрд░рдХрд╛рд░ (рдЬрд╕реЗ рдХреА "enum") рдШреЛрд╖рд┐рдд рдХрд░рддрд╛рдирд╛.
  • рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░ рдЖрддрд╛ "obj.foo = bar" рдЕрднрд┐рд╡реНрдпрдХреНрддреА рд░реАрд▓реЛрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "@:op(ab)" рдСрдкрд░реЗрдЯрд░рдЪреНрдпрд╛ "рд╕реЗрдЯ" рдЖрд╡реГрддреНрддреАрдЪреЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛рдд.
  • "for" рд▓реВрдк рд╕рд┐рдВрдЯреЕрдХреНрд╕ рдЖрддрд╛ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдкреБрдирд░рд╛рд╡реГрддреНрддреАрд▓рд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ: "for (key => рд╕рдВрдЧреНрд░рд╣рд╛рддреАрд▓ рдореВрд▓реНрдп) {}".
  • рдПрдХреНрд╕реНрдкреНрд░реЗрд╢рдиреНрд╕рдордзреНрдпреЗ xml-рд╕рд╛рд░рдЦреЗ рдорд╛рд░реНрдХрдЕрдк рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди: тАЬvar a = тА╣hi/тА║;тАЭ. рдЖрддреНрддрд╛рд╕рд╛рдареА, рд╣реЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдХреЗрд╡рд│ рдореЕрдХреНрд░реЛрд╕рд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧрд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдЖрдгрд┐ рдбрд┐рдЭрд╛рдЗрди рд╕реНрдЯреЗрдЬрд╡рд░ рдЖрд╣реЗ.
  • рдирд┐рдирд╛рд╡реА рд░рдЪрдирд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдЪреНрдпрд╛ "рдкреВрд░реНрдг" рдиреЛрдЯреЗрд╢рдирдордзреАрд▓ рдкрд░реНрдпрд╛рдпреА рдлреАрд▓реНрдбрд╕рд╛рдареА рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЖрд╣реЗ: тАЬ{ var ?f:Int; }" (рд▓рд╣рд╛рди "{ ?f:Int }" рд╕рд╛рдареА рдкрд░реНрдпрд╛рдпреА).
  • рдлрдВрдХреНрд╢рди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯрд╕рд╛рдареА рдПрдирдо рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рдЖрддрд╛ рдбреАрдлреЙрд▓реНрдЯ рд╡реНрд╣реЕрд▓реНрдпреВ рдЕрд╕реВ рд╢рдХрддрд╛рдд: "рдлрдВрдХреНрд╢рди fooтА╣TтА║(option:OptionтА╣TтА║ = None)".
  • "enum abstract Name(BasicType) {}" рд╕рд┐рдВрдЯреЕрдХреНрд╕рд▓рд╛ рдпрд╛рдкреБрдвреЗ "enum" рдордзреНрдпреЗ "@:" рдЙрдкрд╕рд░реНрдЧ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА.
  • рдЕрдореВрд░реНрдд рдЧрдгрдиреЗрд╕рд╛рдареА рд╕реНрд╡рдпрдВ-рдХреНрд░рдорд╛рдВрдХ:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // рез
    }
    enum abstract Bar(рд╕реНрдЯреНрд░рд┐рдВрдЧ) {
    var A; // "рдЕ"
    var B; // "рдм"
    }

  • "рдмрд╛рд╣реНрдп" рдХреАрд╡рд░реНрдбрд▓рд╛ рдпрд╛рдкреБрдвреЗ "@:" рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.
  • рдкрд░реНрдпрд╛рдп рдХрд╛рдврд▓рд╛ "рдЕрд╡рдЬрд╛рд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрджреНрд╡рд╛рд░реЗ рд╡рд░реНрдЧ рдлреАрд▓реНрдбрдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд╛рдпрдиреЕрдорд┐рдХ" рдмрд╛рд╣реНрдп рд╡рд░реНрдЧрд╛рдВрд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░рд╛рджреНрд╡рд╛рд░реЗ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрджреНрд╡рд╛рд░реЗ рдЙрдкрд▓рдмреНрдз.
  • рдЯрд╛рдИрдк рдЗрдВрдЯрд░рд╕реЗрдХреНрд╢рдирд╕рд╛рдареА "A рдЖрдгрд┐ B" рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЬреЛрдбрд▓реА, рдЬреА рд╕рдзреНрдпрд╛ рдлрдХреНрдд рдирд┐рдирд╛рд╡реА рд╕рдВрд░рдЪрдирд╛ рдЖрдгрд┐ рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░ рдорд░реНрдпрд╛рджрд╛рдВрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ. рдЬреБрдиреА рдорд░реНрдпрд╛рджрд╛ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реА рдЖрд╣реЗ.
  • рд░рд┐рдХреНрдд "рдирдХрд╛рд╢рд╛" рдЙрджрд╛рд╣рд░рдгреЗ рддрдпрд╛рд░ рдХрд░рдгреЗ "var map:MapтА╣Int, StringтА║ = [];" рд╕рд┐рдВрдЯреЕрдХреНрд╕рджреНрд╡рд╛рд░реЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ. ре▓рд░реЗ рд╕рд╛рд░рдЦреЗ.
  • рдЬреЛрдбрд▓реЗрд▓реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ "haxe.ds.ReadOnlyArray".
  • рдореЗрдЯрд╛рдбреЗрдЯрд╛рдордзреНрдпреЗ рдЖрддрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдЕрд╕реВ рд╢рдХрддрд╛рдд (тАЬ@:prefix.name function() {тАж}тАЭ). рддреНрдпрд╛рдЪрдкреНрд░рдорд╛рдгреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рдВрд╕рд╣: тАЬ#if (some.flag... #endтАЭ.
  • рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реЗ IDE рд╕рд╛рдареА рдирд╡реАрди рд╕реЗрд╡рд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ VSCode рд╕рд╛рдареА рдкреНрд▓рдЧрдЗрди.
  • рд╡реЗрдм API рд╕рд╛рдареА рдмрд╛рд╣реНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ (рдмрд╛рд╣реНрдп) рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реНрдпрд╛ рдЖрдгрд┐ рдЧрд╣рд╛рд│ рдЬреЛрдбрд▓реНрдпрд╛.

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

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