рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ 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 рдХреЛ рдирдЬрд┐рдХ рдЫ рд░ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрджрдЫ рдпрд╕рдХреЛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЬрд╕реНрддреИ рд╕реНрдерд┐рд░ рдЯрд╛рдЗрдкрд┐рдЩ, рдЕрдЯреЛрдЯрд╛рдЗрдк рдЕрдиреБрдорд╛рди, рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рди, рдЬреЗрдиреЗрд░рд┐рдХ, рд▓реВрдкрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐-рдЖрдзрд╛рд░рд┐рдд, AST рдореНрдпрд╛рдХреНрд░реЛ, GADT (рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдмреАрдЬрдЧрдгрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╣рд░реВ), рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░рд╣рд░реВ, рдмреЗрдирд╛рдореА рд╕рдВрд░рдЪрдирд╛рд╣рд░реВ, рд╕рд░рд▓реАрдХреГрдд рдПрд░реЗ рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВ, рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ, рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдорд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрдиреЗред , рд╡рд░реНрдЧ рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рд╕реНрдЯреНрд░рд┐рдЩ рдЗрдиреНрдЯрд░рдкреЛрд▓реЗрд╕рди ("'My name is $name'"), рдкреНрд░рдХрд╛рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ ('new Main("foo")'), рд░ рдЕрдЭреИ рдзреЗрд░реИ.

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

(рдирд╛рдо => рдорд╛рдиреНрдЫреЗ рдорд╛ рдХрд╛рдо рдХреЛ рд▓рд╛рдЧреА) {
рдЯреНрд░реЗрд╕('$рдирд╛рдорд▓реЗ $рдЬрдм рдЬреАрд╡рд┐рдХреЛрдкрд╛рд░реНрдЬрди рдЧрд░реНрдЫ!');
}
}
}

рд╕рдВрд╕реНрдХрд░рдг 4.1 рдорд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ:

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

  • jvm: рдЯрд╛рдЗрдк рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкрд╣реБрдБрдЪ рдЧрд░реНрдиреЗ рд░ рд╡рд╕реНрддреБрд╣рд░реВ рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рд╣реБрдиреЗ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдердк рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдирдпрд╛рдБ рддрд░рд┐рдХрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдзрдиреНрдпрд╡рд╛рдж (рдЧрддрд┐рд╢реАрд▓ рд╕рдореНрдкрддреНрддрд┐ рд▓реБрдХрдЕрдк рд░реЛрдХрд┐рдПрдХреЛ рдЫ):
    рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛ Haxe 4.1 рдХреЛ рд░рд┐рд▓реАрдЬ

рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рд╕реБрдзрд╛рд░рд╣рд░реВ:

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

рдЕрд░реНрдХреЛ рд░рд┐рд▓реАрдЬ рдорд╛ рдпреЛрдЬрдирд╛рдмрджреНрдз рдЫрдиреН:

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

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

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