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

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

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

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

(рдирд╛рд╡ => рд▓реЛрдХрд╛рдВрдордзреНрдпреЗ рдиреЛрдХрд░реА) {
рдЯреНрд░реЗрд╕('$рдирд╛рд╡ рдЬрдЧрдгреНрдпрд╛рд╕рд╛рдареА $рдиреЛрдХрд░реА рдХрд░рддреЗ!');
}
}
}

рдЖрд╡реГрддреНрддреА рек.рез рдордзреНрдпреЗ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ:

  • рд╢реЗрдкреВрдЯ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдЬреЛрдбрд▓реЗ.
  • рдЕрдкрд╡рд╛рдж рд╣рд╛рддрд╛рд│рдгреАрд╕рд╛рдареА рдирд╡реАрди рдпреБрдирд┐рдлрд╛рдЗрдб API рдЬреЛрдбрд▓реЗ.
  • "try {} catch(e: haxe.exception) {}" рд╕рд╛рдареА "try {} catch(e) {}" рдпрд╛ рд╕рдВрд░рдЪрдиреЗрдЪреА рдЕрдиреБрдорддреА рдЖрд╣реЗ.
  • eval рджреБрднрд╛рд╖реНрдпрд╛рд▓рд╛ SSL рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рд▓рдХреНрд╖реНрдп JVM рдпрд╛рдкреБрдвреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдорд╛рдирд▓реЗ рдЬрд╛рдд рдирд╛рд╣реА.
  • рднрд╛рд╖рд╛ рд╕рд░реНрд╡реНрд╣рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╛рдареА, "рдЧреЛрдЯреЛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА" рдЖрдгрд┐ "рд╕рдВрджрд░реНрдн рд╢реЛрдзрд╛" рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдордзреНрдпреЗ рддрд╛рддреНрдкреБрд░рддреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рд╕реБрдзрд╛рд░рд┐рдд рдирд╛рдордХрд░рдг. рдирд┐рд░рд░реНрдердХ "рд░рд┐рдЯрд░реНрди;" рдХрд╛рдврд▓реЗ рд░рд┐рдЯрд░реНрди рд╡реНрд╣реЕрд▓реНрдпреВрд╢рд┐рд╡рд╛рдп рдмрд╛рдг рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ.
  • рдлреАрд▓реНрдбрд╡рд░ рдкреНрд░рд╡реЗрд╢ рд╕рдВрдпреЛрдЬрдирд╛рдВрдирд╛ (рдорд┐рд│рд╡рд╛, рдбреАрдлреЙрд▓реНрдЯ) рдЕрдиреБрдорддреА рдЖрд╣реЗ (рдХреЗрд╡рд│ рдорд┐рд│рд╡рдгрд╛рд░реЗ, рдбреАрдлреЙрд▓реНрдЯ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╡рд░реНрддрди).
  • рдлреАрд▓реНрдбрд╕рд╛рдареА рд╡рд╛рдв рдЖрдгрд┐ рдШрдЯ рдСрдкрд░реЗрдЯрд░рдирд╛ рдкрд░рд╡рд╛рдирдЧреА рджреНрдпрд╛ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░.
  • рдЕрдирд╛рдорд┐рдд рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╡рд╛рдкрд░реВрди рд▓реВрдкрд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд рдЗрдирд▓рд╛рдЗрдирд┐рдВрдЧ.
  • js: ES5 рд╕рд╛рдареА рд╕реБрдзрд╛рд░рд┐рдд StringMap рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА.
  • js: тАЬ-D js-es=6тАЭ рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░реНрдпрд╛рдпрд╛рдордзреНрдпреЗ let variables рдЪреЗ рдЬрдирд░реЗрд╢рди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, ES6 рдХреНрд▓рд╛рд╕реЗрд╕рдЪреЗ рдЬрдирд░реЗрд╢рди рд╕реБрдзрд╛рд░рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • lua: "StringIterator" рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗ, рддреНрд░реБрдЯреА рд╣рд╛рддрд╛рд│рдгреА рд╕реБрдзрд╛рд░рд▓реА.
  • php: рдмреЗрд╕ рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реЗ "Std.isOfType".
  • php: рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реЗ рдЕреЕрд░реЗ рдЖрддрд╛ рдиреЗрдЯрд┐рд╡реНрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ тАЬIteratorтАЭ, тАЬIteratorAggregateтАЭ, тАЬCountableтАЭ рд▓рд╛рдЧреВ рдХрд░рддрд╛рдд.
  • cs: "@:assemblyMeta" рдЖрдгрд┐ "@:assemblyStrict" рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЬреЛрдбрд▓рд╛.
  • python: рдирд┐рдирд╛рд╡реА рд╡рд╕реНрддреВрдВрд╡рд░ "__contains__" рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдЬреЛрдбрд▓реА
    рдЖрдгрд┐ "__getitem__", рдЬреЗ рддреНрдпрд╛рдВрдирд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрдордзреАрд▓ рд╢рдмреНрджрдХреЛрд╢ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ.

  • jvm: рдЯрд╛рдпрдк рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдирд╡реАрди рдорд╛рд░реНрдЧрд╛рдореБрд│реЗ рдЖрдгрд┐ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдирд┐рдирд╛рд╡реА рд╕рдВрд░рдЪрдирд╛ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЕрд╢рд╛ рдкреНрд░рдХрд░рдгрд╛рдВрдордзреНрдпреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЯрд░рдлреЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗрд▓реНрдпрд╛рдмрджреНрджрд▓ рд▓рдХреНрд╖рдгреАрдп рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдзрдиреНрдпрд╡рд╛рдж (рдбрд╛рдпрдиреЕрдорд┐рдХ рдкреНрд░реЙрдкрд░реНрдЯреА рд▓реБрдХрдЕрдк рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдЖрд╣реЗ):
    рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ Haxe 4.1 рдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рдорд╛рдирдХ рд▓рд╛рдпрдмреНрд░рд░реАрддреАрд▓ рд╕реБрдзрд╛рд░рдгрд╛:

  • "Array.contains" рдлрдВрдХреНрд╢рди рдЬреЛрдбрд▓реЗ.
  • рдЬреЛрдбрд▓реЗ "Array.keyValueIterator", рдЬреЗ рдЕреЕрд░реЗрд╕рд╛рдареА рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд▓рд╛рдЧреВ рдХрд░рддреЗ ("for (key => рдЕреЕрд░реЗрдордзреАрд▓ рдореВрд▓реНрдп)").
  • "haxe.Constraints.NotVoid" рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд▓рд╛.
  • тАЬfindIndexтАЭ рдЖрдгрд┐ тАЬfoldiтАЭ рдлрдВрдХреНрд╢рдиреНрд╕ тАЬLambdaтАЭ рд╡рд░реНрдЧрд╛рдд рдЬреЛрдбрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗрдд.
  • "haxe.ds.HashMap" рд╕рд╛рдареА "рдЕреЕрд░реЗ рдНрдХреНрд╕реЗрд╕" ("arr[i]" рджреНрд╡рд╛рд░реЗ рдНрдХреНрд╕реЗрд╕) рдЖрдгрд┐ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд▓рд╛рдЧреВ рдХреЗрд▓реА.
  • jvm: "StringMap", "sys.thread.Lock", "sys.thread.Thread" рдЪреНрдпрд╛ JVM-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡реГрддреНрддреНрдпрд╛ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛.
  • java/jvm: "haxe.crypto" рдореЙрдбреНрдпреВрд▓рд╕рд╛рдареА "MD5", "SHA-1" рдЖрдгрд┐ "SHA-256" рдЪреА рдореВрд│ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡рд╛рдкрд░рд▓реА.
  • рдореЕрдХреНрд░реЛ: "haxe.macro.Context.containsDisplayPosition(pos)" рдЬреЛрдбрд▓реЗ.
  • nullsafety: "рдХрдареЛрд░" рдореЛрдб рдЖрддрд╛ рд╕рд┐рдВрдЧрд▓ рдереНрд░реЗрдбреЗрдб рдорд╛рдирд▓рд╛ рдЬрд╛рддреЛ; "рд╕реНрдЯреНрд░рд┐рдХреНрдЯ рдереНрд░реЗрдбреЗрдб" рдореЛрдб рдЬреЛрдбрд▓рд╛.
  • "Std.isOfType" рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ "Std.is" рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • рдХреНрд▓реЛрдЬрд░рдордзреНрдпреЗ рдореВрд▓реНрдпрд╛рдВрд╢рд┐рд╡рд╛рдп рд╕реНрдерд╛рдирд┐рдХ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░рддрд╛рдирд╛ рдЪреЗрддрд╛рд╡рдгреА рдЬреЛрдбрд▓реА.
  • js: "рдЯрд╛рдЗрдк рди рдХреЗрд▓реЗрд▓реЗ __js__(рдХреЛрдб, args)" рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЖрд╣реЗ, "js.Syntax.code(code, args)" рдиреЗ рдмрджрд▓рд▓реЗ рдЖрд╣реЗ.
  • php/neko: "neko.Web" рдЖрдгрд┐ "php.Web" рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рдирдВрддрд░ "hx4compat" рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рд╣рд▓рд╡рд▓реЗ рдЬрд╛рддреАрд▓.

рдкреБрдвреАрд▓ рдкреНрд░рдХрд╛рд╢рдирд╛рдд рдирд┐рдпреЛрдЬрд┐рдд рдЖрд╣реЗрдд:

  • рдкреЕрдХреЗрдЬ рдореЕрдиреЗрдЬрд░ рд╕реБрдзрд╛рд░рдгрд╛ haxelib.
  • рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд╕рд┐рд╕реНрдЯрдо API рдЖрдзрд╛рд░рд┐рдд libuv.
  • рдХреЛрд░реБрдЯреАрди.
  • рд╡рд░реНрдЧ рддрдпрд╛рд░ рди рдХрд░рддрд╛ рдореЙрдбреНрдпреВрд▓рд░ рд╕реНрдЯреЕрдЯрд┐рдХ рдлрдВрдХреНрд╢рдиреНрд╕ рдЖрдгрд┐ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдгреЗ (рдЖрдзреАрдкрд╛рд╕реВрдирдЪ рд░рд╛рддреНрд░реАрдЪреНрдпрд╛ рдмрд┐рд▓реНрдбрдордзреНрдпреЗ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ).

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

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