Tilgjengelig utgivelse av verktøysett Haxe 4.1, som inkluderer multi-paradigme høynivå programmeringsspråk med samme navn med sterk skriving, en krysskompilator og et standard bibliotek med funksjoner. Prosjektet støtter oversettelse til C++, HashLink/C, JavaScript, C#, Java, PHP, Python og Lua, samt kompilering til JVM, HashLink/JIT, Flash og Neko bytecode, med tilgang til de opprinnelige egenskapene til hver målplattform. Kompilatorkode distribuert av under GPLv2-lisensen, og standardbiblioteket og virtuelle maskiner utviklet for Haxe HashLink и neko under MIT-lisensen.
Språket er uttrykksorientert med sterk skriving. Objektorienterte, generiske og funksjonelle programmeringsteknikker støttes. Haxe-syntaks er nær ECMAScript og utvides funksjonene som statisk skriving, autotype-inferens, mønstertilpasning, generikk, iteratorbasert for loops, AST-makroer, GADT (Generalized Algebraic Data Types), abstrakte typer, anonyme strukturer, forenklede matrisedefinisjoner, betingede kompileringsuttrykk, vedlegge metadata til felt , klasser og uttrykk, strenginterpolasjon ("'Mitt navn er $navn'"), typeparametere ('new Main ("foo")') og mye mer.
klasse Test {
statisk funksjon main() {
siste personer = [
"Elizabeth" => "Programmering",
"Joel" => "Design"
];
for (navn => jobb i mennesker) {
trace('$navn gjør $jobb for en levende!');
}
}
}
Nye funksjoner i versjon 4.1:
Lagt til halerekursjonsoptimalisering.
Lagt til en ny enhetlig API for håndtering av unntak.
Konstruksjonen "try {} catch(e) {}" er tillatt som en forkortelse for "try {} catch(e: haxe.Exception) {}".
Lagt til SSL-støtte til eval-tolken.
Mål-JVM anses ikke lenger som eksperimentell.
For Language Server Protocol er støtte for funksjonene "Gå til implementering" og "Finn referanser" lagt til.
Forbedret navngivning av midlertidige lokale variabler i generert kode. Fjernet overflødig "retur;" i pilfunksjoner uten returverdi.
Tilgangskombinasjoner (get, standard) er tillatt på felt (kun getter, standard tildelingsatferd).
Tillat økning og reduksjonsoperatorer for felt abstrakte typer.
Forbedret inlining av for loops ved hjelp av anonyme iteratorer.
js: Forbedret StringMap-implementering for ES5.
js: Generering av la variabler er lagt til kompilatoralternativet "-D js-es=6", generering av ES6-klasser er forbedret.
php: Genererte arrays implementerer nå de native grensesnittene "Iterator", "IteratorAggregate", "Countable".
cs: Lagt til metadata "@:assemblyMeta" og "@:assemblyStrict".
python: lagt til implementering av "__contains__" til anonyme objekter
og "__getitem__", som gjør at de kan brukes som ordbøker i den genererte koden.
jvm: Betydelig forbedret ytelse takket være en ny måte å få tilgang til maskinskrevne funksjoner og generere ekstra grensesnitt i tilfeller der objekter brukes som anonyme strukturer (dynamisk egenskapsoppslag forhindres):
Forbedringer i standardbiblioteket:
Lagt til "Array.contains" funksjon.
Lagt til "Array.keyValueIterator", som implementerer nøkkel-verdi-iterasjon for matriser ("for (nøkkel => verdi i matrise)").
Lagt til begrensningstype "haxe.Constraints.NotVoid".
Funksjonene «findIndex» og «foldi» er lagt til «Lambda»-klassen.
Implementert "array access" (tilgang via "arr[i]") og nøkkelverdi-iterasjon for "haxe.ds.HashMap".
jvm: Implementerte JVM-spesifikke versjoner av "StringMap", "sys.thread.Lock", "sys.thread.Thread".
java/jvm: Brukte innfødte implementeringer av "MD5", "SHA-1" og "SHA-256" for "haxe.crypto"-modulene.
makro: Lagt til "haxe.macro.Context.containsDisplayPosition(pos)".
nullsafety: "Streng"-modus behandles nå som enkeltgjenget; lagt til "StrictThreaded"-modus.
"Std.is" er avviklet til fordel for "Std.isOfType".
Lagt til en advarsel ved bruk av lokale variabler uten verdier i lukkinger.
js: "untyped __js__(code, args)" er utdatert, erstattet av "js.Syntax.code(code, args)".
php/neko: "neko.Web" og "php.Web" er avviklet og vil bli flyttet til "hx4compat"-biblioteket senere.