ИздаванС Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Haxe 4.1

На Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ освобоТдаванС Π½Π° инструмСнтариум Haxe 4.1, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅Π½ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° високо Π½ΠΈΠ²ΠΎ със ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ със силно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½Π΅, крос-ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ ΠΈ стандартна Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° C++, HashLink/C, JavaScript, C#, Java, PHP, Python ΠΈ Lua, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ компилация Π½Π° JVM, HashLink/JIT, Flash ΠΈ Neko Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄, с Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ собствСнитС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π½Π° всяка Ρ†Π΅Π»Π΅Π²Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. Код Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ разпространява сС ΠΎΡ‚ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· GPLv2 ΠΈ стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π·Π° Haxe HashLink ΠΈ Neko ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Π½Π° MIT.

Π•Π·ΠΈΠΊΡŠΡ‚ Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΈ към изразяванС със силно писанС. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ сС Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΎΠ±Π΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ, ΠΎΠ±Ρ‰ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅. Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΡŠΡ‚ Π½Π° Haxe Π΅ близък Π΄ΠΎ ECMAScript ΠΈ Ρ€Π°Π·ΡˆΠΈΡ€ΡΠ²Π° сС Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ статично въвСТданС, Π°Π²Ρ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈΠ·Π²ΠΎΠ΄, ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π½Π° шаблони, Π³Π΅Π½Π΅Ρ€ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»ΠΈ for, AST макроси, GADT (ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Π°Π»Π³Π΅Π±Ρ€ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ), абстрактни Ρ‚ΠΈΠΏΠΎΠ²Π΅, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ структури, опростСни Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π½Π° масиви, ΠΈΠ·Ρ€Π°Π·ΠΈ Π·Π° условна компилация, ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ към ΠΏΠΎΠ»Π΅Ρ‚Π° , класовС ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ, интСрполация Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ (β€œ'My name is $name'”), ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° Ρ‚ΠΈΠΏΠ° ('new Main ("Ρ„Ρƒ")') ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅.

клас ВСст {
статична функция main() {
ΠΊΡ€Π°ΠΉΠ½ΠΈ Ρ…ΠΎΡ€Π° = [
"Π•Π»ΠΈΠ·Π°Π±Π΅Ρ‚" => "ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅",
"Π”ΠΆΠΎΠ΅Π»" => "Π”ΠΈΠ·Π°ΠΉΠ½"
];

Π·Π° (ΠΈΠΌΠ΅ => Ρ€Π°Π±ΠΎΡ‚Π° Π² Ρ…ΠΎΡ€Π°) {
trace('$name си ΠΈΠ·ΠΊΠ°Ρ€Π²Π° $Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°!');
}
}
}

Нови Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ във вСрсия 4.1:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° оптимизация Π½Π° ΠΎΠΏΠ°ΡˆΠ½Π°Ρ‚Π° рСкурсия.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ API Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡΡ‚Π° "try {} catch(e) {}" Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° ΠΊΠ°Ρ‚ΠΎ стСнограма Π·Π° "try {} catch(e: haxe.Exception) {}".
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ SSL ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° към ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° eval.
  • Π¦Π΅Π»Π΅Π²Π°Ρ‚Π° JVM Π²Π΅Ρ‡Π΅ Π½Π΅ сС счита Π·Π° СкспСримСнтална.
  • Π—Π° Сзиковия ΡΡŠΡ€Π²ΡŠΡ€Π΅Π½ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ β€žGoto Implementationβ€œ ΠΈ β€žFind referencesβ€œ.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² гСнСрирания ΠΊΠΎΠ΄. ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΎ излишно β€žΠ²Ρ€ΡŠΡ‰Π°Π½Π΅;β€œ във Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ със стрСлки Π±Π΅Π· Π²Ρ€ΡŠΡ‰Π°Π½Π° стойност.
  • ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ (get, default) са Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π² ΠΏΠΎΠ»Π΅Ρ‚Π° (само getter, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ присвояванС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅).
  • Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ ΠΈ намаляванС Π·Π° ΠΏΠΎΠ»Π΅Ρ‚Π° абстрактни Ρ‚ΠΈΠΏΠΎΠ²Π΅.
  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ Π²Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° for Ρ†ΠΈΠΊΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ.
  • js: ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ внСдряванС Π½Π° StringMap Π·Π° ES5.
  • js: Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° let ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΎ към опцията Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° β€ž-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β€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π° итСрация ΠΊΠ»ΡŽΡ‡-стойност Π·Π° масиви (β€žΠ·Π° (ΠΊΠ»ΡŽΡ‡ => стойност Π² масив)β€œ).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Ρ‚ΠΈΠΏ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ "haxe.Constraints.NotVoid".
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ β€žfindIndexβ€œ ΠΈ β€žfoldiβ€œ са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ към класа β€žLambdaβ€œ.
  • Π’ΡŠΠ²Π΅Π΄Π΅Π½ Π΅ β€žΠ΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΌΠ°ΡΠΈΠ²β€œ (Π΄ΠΎΡΡ‚ΡŠΠΏ Ρ‡Ρ€Π΅Π· β€žarr[i]β€œ) ΠΈ итСрация ΠΊΠ»ΡŽΡ‡-стойност Π·Π° β€žhaxe.ds.HashMapβ€œ.
  • jvm: Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈ JVM-спСцифични вСрсии Π½Π° "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Използвани собствСни Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° "MD5", "SHA-1" ΠΈ "SHA-256" Π·Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ "haxe.crypto".
  • макрос: Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ β€žhaxe.macro.Context.containsDisplayPosition(pos)β€œ.
  • nullsafety: "Бтрогият" Ρ€Π΅ΠΆΠΈΠΌ Π²Π΅Ρ‡Π΅ сС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Π΅Π΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π΅Π½; Π΄ΠΎΠ±Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ "StrictThreaded".
  • β€žStd.isβ€œ Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ Π² ΠΏΠΎΠ»Π·Π° Π½Π° β€žStd.isOfTypeβ€œ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π±Π΅Π· стойности Π² затваряния.
  • js: "untyped __js__(code, args)" Π΅ остарял, Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΎΡ‚ "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" ΠΈ "php.Web" са ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ ΠΈ ΠΏΠΎ-късно Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ прСмСстСни Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° "hx4compat".

Π’ слСдващото ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ са ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈ:

  • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈΡ Π² ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ хаксСлиб.
  • Π‘Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° API Π½Π° асинхронна систСма libuv.
  • Coroutines.
  • Π”Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π½ΠΈ статични Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π±Π΅Π· създаванС Π½Π° класовС (Π²Π΅Ρ‡Π΅ Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² Π½ΠΎΡ‰Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€