Tillgängliga verktygslåda Haxe 4.1, som inkluderar multiparadigm högnivåprogrammeringsspråket med samma namn med stark typning, en korskompilator och ett standardbibliotek med funktioner. Projektet stöder översättning till C++, HashLink/C, JavaScript, C#, Java, PHP, Python och Lua, samt kompilering till JVM, HashLink/JIT, Flash och Neko bytecode, med tillgång till de inbyggda funktionerna för varje målplattform. Kompilatorkod levererad av under GPLv2-licensen och standardbiblioteket och virtuella maskiner som utvecklats för Haxe HashLink и några under MIT-licensen.
Språket är uttrycksorienterad med stark skrivning. Objektorienterade, generiska och funktionella programmeringstekniker stöds. Haxe-syntax ligger nära ECMAScript och expanderar dess funktioner såsom statisk typning, autotypinferens, mönstermatchning, generik, iteratorbaserad för loopar, AST-makron, GADT (Generalized Algebraic Data Types), abstrakta typer, anonyma strukturer, förenklade arraydefinitioner, villkorliga kompileringsuttryck, bifoga metadata till fält , klasser och uttryck, stränginterpolation ("'Mitt namn är $namn'"), typparametrar ('new Main ("foo")') och mycket mer.
klass Test {
statisk funktion main() {
sista personer = [
"Elizabeth" => "Programmering",
"Joel" => "Design"
];
för (namn => jobb i människor) {
trace('$name gör $jobb för sitt uppehälle!');
}
}
}
Nya funktioner i version 4.1:
Lade till svansrekursionsoptimering.
Lade till ett nytt enhetligt API för undantagshantering.
Konstruktionen "försök {} catch(e) {}" är tillåten som en förkortning för "försök {} catch(e: haxe.Exception) {}".
Lade till SSL-stöd till eval-tolken.
Mål-JVM anses inte längre vara experimentell.
För Language Server Protocol har stöd för funktionerna "Goto Implementation" och "Hitta referenser" lagts till.
Förbättrad namngivning av temporära lokala variabler i genererad kod. Tog bort redundant "retur;" i pilfunktioner utan returvärde.
Åtkomstkombinationer (get, standard) är tillåtna på fält (endast getter, standardtilldelningsbeteende).
Tillåt inkrement- och minskningsoperatorer för fält abstrakta typer.
Förbättrad inlining av for-loopar med anonyma iteratorer.
js: Förbättrad StringMap-implementering för ES5.
js: Generering av låtvariabler har lagts till kompilatoralternativet "-D js-es=6", genereringen av ES6-klasser har förbättrats.
php: Genererade arrayer implementerar nu de inbyggda gränssnitten "Iterator", "IteratorAggregate", "Countable".
cs: Lade till metadata "@:assemblyMeta" och "@:assemblyStrict".
python: lade till implementering av "__contains__" till anonyma objekt
och "__getitem__", som gör att de kan användas som ordböcker i den genererade koden.
jvm: Avsevärt förbättrad prestanda tack vare ett nytt sätt att komma åt inskrivna funktioner och generera ytterligare gränssnitt i fall där objekt används som anonyma strukturer (dynamisk egenskapssökning förhindras):
Förbättringar i standardbiblioteket:
Lade till funktionen "Array.contains".
Lade till "Array.keyValueIterator", som implementerar nyckel-värde-iteration för arrayer ("för (nyckel => värde i array)").
Lade till begränsningstyp "haxe.Constraints.NotVoid".
Funktionerna "findIndex" och "foldi" har lagts till i klassen "Lambda".
Implementerad "array access" (åtkomst via "arr[i]") och nyckel-värde iteration för "haxe.ds.HashMap".
jvm: Implementerade JVM-specifika versioner av "StringMap", "sys.thread.Lock", "sys.thread.Thread".
java/jvm: Använde inbyggda implementeringar av "MD5", "SHA-1" och "SHA-256" för "haxe.crypto"-modulerna.
makro: Lade till "haxe.macro.Context.containsDisplayPosition(pos)".
nullsafety: "Strikt"-läge behandlas nu som enkelgängat; lagt till "StrictThreaded"-läge.
"Std.is" har fasats ut till förmån för "Std.isOfType".
Lade till en varning vid användning av lokala variabler utan värden i stängningar.
js: "otypad __js__(kod, args)" är utfasad, ersatt med "js.Syntax.code(code, args)".
php/neko: "neko.Web" och "php.Web" har fasats ut och kommer att flyttas till "hx4compat"-biblioteket senare.