Elérhető eszköztár kiadása Haxe 4.0, amely tartalmazza az azonos nevű, többparadigmás magas szintű programozási nyelvet, erős gépeléssel, egy keresztfordítót és egy szabványos függvénykönyvtárat. A projekt támogatja a fordítást C++, HashLink/C, JavaScript, C#, Java, PHP, Python és Lua nyelvekre, valamint JVM-re, HashLink/JIT-re, Flash-re és Neko bájtkódra fordítást, az egyes célplatformok natív képességeihez való hozzáféréssel. Fordító kód forgalmazza a GPLv2 licenc alatt, valamint egy szabványos könyvtár és egy Haxe számára kifejlesztett virtuális gép neko az MIT engedélye alapján.
A nyelv az kifejezés-orientált erős gépeléssel. Objektumorientált, általános és funkcionális programozási koncepciók támogatottak.
A Haxe szintaxis közel áll az ECMAScript és kitágul jellemzői, mint például statikus gépelés, autotípus-következtetés, mintaillesztés, általánosságok, iterátor alapú ciklusokhoz, AST makrók, GADT (Általános algebrai adattípusok), absztrakt típusok, névtelen struktúrák, egyszerűsített tömbdefiníciók, feltételes fordítási kifejezések, metaadatok csatolása mezőkhöz , osztályok és kifejezések, karakterlánc-interpoláció ('A nevem $name'), típusparaméterek ("new Main‹String›('foo')"), és sokkal több.
osztály teszt {
static function main() {
var people = [
"Elizabeth" => "Programozás",
"Joel" => "Dizájn"
];
for (név a people.keys()-ben) {
var job = emberek[név];
trace('$name a megélhetésért $munkát végez!');
}
}
}
Új szintaxis a "(név:String, age:Int)->Bool" vagy "(String, Int)->Bool" függvénytípus megadásához a "String->Int->Bool" helyett.
A nyíl függvény szintaxisa "(a, b) -> a + b" a "függvény(a, b) return a + b" helyett.
Védelem a Null értékek használatával kapcsolatos problémák ellen (kísérleti szolgáltatás, opcionálisan engedélyezve bizonyos mezőknél, osztályoknál vagy csomagoknál).
A "végső" kulcsszó az osztálymezőkre és a megváltoztathatatlan helyi változókra vonatkozik. A "final" függvények meghatározására is használható, hogy megakadályozzák azok öröklődés általi felülbírálását, valamint olyan osztályok/interfészek esetében, amelyek nem örökölhetők.
támogatás Unicode szabvány a "String" alaptípushoz az összes fordítási célhoz, kivéve a Neko-t.
A nulláról átírt beépített tolmács, ami most a név alatt jön Értékelés. Az új értelmezőnek köszönhetően a szkriptek és makrók sokkal gyorsabban futnak. Az interaktív hibakeresési mód támogatott.
Új célrendszer a fordításhoz (cél) Hashlink - egy nagy teljesítményű futtatókörnyezet, amelyet kifejezetten a Haxe-hoz terveztek, támogatja a JIT vagy C bájtkódra való fordítását, könnyen integrálható a C-vel, valamint hozzáférést biztosít az alacsony szintű numerikus típusokhoz és mutatókhoz.
Új JVM-cél – lehetővé teszi jvm bájtkód generálását a Java kódfordítási lépés kihagyásával a „-D jvm” jelző hozzáadásával, amikor Java-ban céloz.
Lehetőség a soron belüli telepítésre a függvények vagy konstruktorok hívásakor, még akkor is, ha nincsenek ekként deklarálva.
Beépítési lehetőség statikus kiterjesztések amikor egy típust (például "enum") deklarál a "@:using(path.ToExtension)" használatával.
Az absztrakt típusok mostantól támogatják a "@:op(a.b)" operátor "set" változatát az "obj.foo = bar" kifejezések újratöltéséhez.
A "for" ciklus szintaxisa mostantól támogatja a kulcsérték iterációját: "for (kulcs => érték a gyűjteményben) {}".
Támogatás az xml-szerű jelölés használatához a következő kifejezésekben: “var a = ‹hi/›;”. Ez a funkció egyelőre csak makrók elemzéséhez érhető el, és a tervezési szakaszban van.
Az anonim szerkezettípusok „teljes” jelölésében az opcionális mezők szintaxisa a következő: „{ var ?f:Int; }" (a rövid "{ ?f:Int }" alternatívája).
Az enum értékek mostantól alapértelmezett értékei lehetnek a függvényargumentumok számára: "function foo‹T›(opció:Opció‹T› = Nincs)".
Az "enum abstract Name(BasicType) {}" szintaxis többé nem igényli a "@:" előtagot az "enum"-ban.
Automatikus számozás absztrakt felsorolásokhoz:
enum abstract Foo(Int) {
var A; // 0
var B; 1
}
enum abstract Bar(String) {
var A; // "A"
var B; "B"
}
Az "extern" kulcsszóhoz már nem szükséges a "@:" előtag használata.
Eltávolította a " opciótmunkagépek Dinamikus" az osztálymezők karakterláncokon keresztüli eléréséhez. Elérhető külső osztályokhoz vagy absztrakt típussal való megvalósítással.
"A és B" szintaxis hozzáadva a típusmetszethez, amely jelenleg csak a névtelen struktúrákra és a típusparaméter-megkötésekre vonatkozik. A régi kényszerszintaxis eltávolítva.
Üres "Map" példányok létrehozása a "var map:Map‹Int, String› = [];" szintaxissal érhető el. tömbhöz hasonló.
Hozzáadott adatstruktúra "haxe.ds.ReadOnlyArray".
A metaadatok most már rendelkezhetnek névterekkel („@:prefix.name function() {…}”). Hasonlóan a definíciókkal: „#if (valami.zászló ... #vége”.