доступний реліз інструментарію Haxe 4.1, Що включає однойменний мультипарадигменний високорівневий мову програмування зі строгою типізацією, крос-компілятор та стандартну бібліотеку функцій. Проект підтримує трансляцію в С++, HashLink/C, JavaScript, C#, Java, PHP, Python і Lua, а також компіляцію в байт-код JVM, HashLink/JIT, Flash і Neko, з доступом до рідних можливостей кожної цільової платформи. Код компілятора поширюється під ліцензією GPLv2, а стандартної бібліотеки та віртуальних машин, що розвиваються для Haxe. HashLink и Neko під ліцензією MIT.
Мова є expression-орієнтованим зі строгою типізацією. Підтримуються прийоми об'єктно-орієнтованого, узагальненого та функціонального програмування. Синтаксис Haxe близький до ECMAScript та розширює його такими можливостями як статична типізація, автовиведення типів, зіставлення шаблонів, дженерики, заснований на ітераторах цикл «for», AST-макроси, GADT (Generalized Algebraic Data Types), абстрактні типи, анонімні структури, спрощені визначення масивів, вирази для умовної компі прикріплення метаданих до полів, класів та виразів, інтерполяція рядків ("My name is $name"), параметри типів ('new Main («foo»)') та багато іншого.
клас Тест {
static function main() {
final people = [
"Elizabeth" => "Programming",
"Joel" => "Design"
];
for (name => job in people) {
trace('$name does $job for a living!');
}
}
}
Нововведення версії 4.1:
Додано оптимізацію хвостової рекурсії.
Додано новий уніфікований API для обробки винятків.
Дозволено конструкцію "try {} catch(e) {}" як скорочення для "try {} catch(e: haxe.Exception) {}".
В інтерпретатор eval додано підтримку SSL.
Цільова платформа JVM більше не вважається експериментальною.
Для Language Server Protocol додано підтримку функцій Goto Implementation і Find references.
Поліпшено найменування тимчасових локальних змінних у згенерованому коді. Видалено надлишкові «return;» у стрілочних функціях без значення, що повертається.
До полів дозволено комбінацію доступу (get, default) (тільки гетер, поведінка для присвоювання за умовчанням).
Дозволені оператори інкременту та декременту для полів абстрактних типів.
Поліпшено вбудовування (inlining) for циклів з використанням анонімних ітераторів.
js: Поліпшено реалізацію StringMap для ES5.
js: До опції компілятора «-D js-es=6» додано генерацію let змінних, покращено генерацію ES6 класів.
php: Оптимізовано "Std.isOfType" для базових типів.
php: Згенеровані масиви тепер реалізують нативні інтерфейси "Iterator", "IteratorAggregate", "Countable".
cs: Додані методати @:assemblyMeta та @:assemblyStrict.
python: до анонімних об'єктів додано реалізацію «__contains__»
та «__getitem__», що дозволяє використовувати їх як словники у згенерованому коді.
jvm: Значно підвищена продуктивність завдяки новому способу звернення до типізованих функцій та генерації додаткових інтерфейсів у випадках використання об'єктів як анонімних структур (запобігли динамічному пошуку властивостей):
Поліпшення у стандартній бібліотеці:
Додано функцію «Array.contains».
Додано "Array.keyValueIterator", що реалізує key-value ітерацію для масивів ("for (key => value in array)").
Додано обмеження типу "haxe.Constraints.NotVoid".
У клас «Lambda» додані функції «findIndex» та «foldi».
Реалізовано "array access" (доступ через "arr[i]") і key-value ітерація для "haxe.ds.HashMap".
jvm: Реалізовані JVM-специфічні версії "StringMap", "sys.thread.Lock", "sys.thread.Thread".
java/jvm: Використані нативні реалізації MD5, SHA-1 і SHA-256 для модулів haxe.crypto.