Verfügbar Toolkit-Veröffentlichung Haxe 4.1, das die gleichnamige Multi-Paradigma-High-Level-Programmiersprache mit starker Typisierung, einen Cross-Compiler und eine Standard-Funktionsbibliothek umfasst. Das Projekt unterstützt die Übersetzung in C++, HashLink/C, JavaScript, C#, Java, PHP, Python und Lua sowie die Kompilierung in JVM, HashLink/JIT, Flash und Neko-Bytecode mit Zugriff auf die nativen Funktionen jeder Zielplattform. Compiler-Code vertrieben von unter der GPLv2-Lizenz sowie die für Haxe entwickelte Standardbibliothek und virtuellen Maschinen HashLink и neko unter der MIT-Lizenz.
Sprache ist ausdrucksorientiert mit starkem Tippen. Es werden objektorientierte, generische und funktionale Programmiertechniken unterstützt. Die Haxe-Syntax ähnelt ECMAScript und expandiert seine Funktionen wie statische Typisierung, Autotype-Inferenz, Mustervergleich, Generika, iteratorbasierte for-Schleifen, AST-Makros, GADT (Generalized Algebraic Data Types), abstrakte Typen, anonyme Strukturen, vereinfachte Array-Definitionen, bedingte Kompilierungsausdrücke, Anhängen von Metadaten an Felder , Klassen und Ausdrücke, String-Interpolation („‚Mein Name ist $name‘“), Typparameter („new Main („foo“)‘) und vieles andere.
Klasse Test {
statische Funktion main() {
letzte Leute = [
„Elizabeth“ => „Programmierung“,
„Joel“ => „Design“
];
for (name => job in people) {
Trace('$name verdient seinen Lebensunterhalt!');
}
}
}
Neue Funktionen in Version 4.1:
Tail-Rekursionsoptimierung hinzugefügt.
Eine neue einheitliche API für die Ausnahmebehandlung hinzugefügt.
Das Konstrukt „try {} Catch(e) {}“ ist als Abkürzung für „try {} Catch(e: haxe.Exception) {}“ zulässig.
SSL-Unterstützung zum Evaluierungsinterpreter hinzugefügt.
Die Ziel-JVM gilt nicht mehr als experimentell.
Für das Language Server Protocol wurde Unterstützung für die Funktionen „Gehe zu Implementierung“ und „Referenzen suchen“ hinzugefügt.
Verbesserte Benennung temporärer lokaler Variablen im generierten Code. Überflüssiges „return;“ entfernt in Pfeilfunktionen ohne Rückgabewert.
Zugriffskombinationen (Get, Standard) sind auf Feldern zulässig (nur Getter, Standardzuweisungsverhalten).
Erlauben Sie Inkrementierungs- und Dekrementierungsoperatoren für Felder abstrakte Typen.
Verbessertes Inlining von for-Schleifen mithilfe anonymer Iteratoren.
js: Verbesserte StringMap-Implementierung für ES5.
js: Die Generierung von Let-Variablen wurde zur Compiler-Option „-D js-es=6“ hinzugefügt, die Generierung von ES6-Klassen wurde verbessert.
cs: Metadaten „@:assemblyMeta“ und „@:assemblyStrict“ hinzugefügt.
Python: Implementierung von „__contains__“ zu anonymen Objekten hinzugefügt
und „__getitem__“, wodurch sie als Wörterbücher im generierten Code verwendet werden können.
jvm: Deutlich verbesserte Leistung dank einer neuen Möglichkeit, auf typisierte Funktionen zuzugreifen und zusätzliche Schnittstellen zu generieren, wenn Objekte als anonyme Strukturen verwendet werden (dynamische Eigenschaftssuche wird verhindert):
Verbesserungen in der Standardbibliothek:
Funktion „Array.contains“ hinzugefügt.
„Array.keyValueIterator“ hinzugefügt, der die Schlüsselwertiteration für Arrays implementiert („for (key => value in array)“).