Saatavilla työkalupakin julkaisu Haxe 4.0, joka sisältää samannimisen moniparadigman korkean tason ohjelmointikielen vahvalla kirjoituksella, ristikääntäjän ja vakiofunktiokirjaston. Projekti tukee kääntämistä C++-, HashLink/C-, JavaScript-, C#-, Java-, PHP-, Python- ja Lua-sovelluksiin sekä kääntämistä JVM-, HashLink/JIT-, Flash- ja Neko-tavukoodiin, joilla on pääsy kunkin kohdealustan alkuperäisiin ominaisuuksiin. Kääntäjän koodi jakelija GPLv2-lisenssillä sekä Haxelle kehitetty vakiokirjasto ja virtuaalikone Neko MIT-lisenssillä.
Kieli on ilmaisusuuntautunut vahvalla kirjoituksella. Oliolähtöisiä, yleisiä ja toiminnallisia ohjelmointikonsepteja tuetaan.
Haxe-syntaksi on lähellä ECMAScriptiä ja laajenee sen ominaisuudet, kuten staattinen kirjoittaminen, autotyyppien päättely, kuvioiden täsmääminen, yleiset ominaisuudet, iteraattoripohjaiset silmukoille, AST-makrot, GADT (Generalized Algebraic Data Types), abstraktit tyypit, anonyymit rakenteet, yksinkertaistetut taulukkomääritykset, ehdolliset käännöslausekkeet, metatietojen liittäminen kenttiin , luokat ja lausekkeet, merkkijonojen interpolointi ('Minun nimeni on $nimi'), tyyppiparametrit ("new Main‹String›('foo')") ja paljon enemmän.
luokkakoe {
staattinen funktio main() {
var people = [
"Elizabeth" => "Ohjelmointi",
"Joel" => "Design"
];
for (nimi in people.keys()) {
var työ = ihmiset[nimi];
trace('$name tekee $työtä elantonsa vuoksi!');
}
}
}
Uusi syntaksi funktiotyypin "(nimi:merkkijono, ikä:Int)->Bool" tai "(String, Int)->Bool" määrittämiseen "String->Int->Bool" sijaan.
Nuolifunktion syntaksi on "(a, b) -> a + b" eikä "funktio(a, b) return a + b".
Suojaus nolla-arvojen käyttöön liittyviltä ongelmilta (kokeellinen ominaisuus, valinnaisesti käytössä tietyissä kentissä, luokissa tai paketeissa).
"Viimeinen" avainsana on luokkakenttiä ja paikallisia muuttujia, jotka ovat muuttumattomia. "lopullista" voidaan myös käyttää funktioiden määrittämiseen, jotta ne estetään periytymisen ohittamisesta ja luokille/rajapinnoille, joita ei voida periä.
Tukea Unicode-standardi perustyypille "String" kaikissa käännöskohteissa paitsi Nekossa.
Sisäänrakennettu tyhjästä uudelleen kirjoitettu tulkki, joka tulee nyt nimellä eval. Uuden tulkin ansiosta komentosarjat ja makrot toimivat paljon nopeammin. Interaktiivinen virheenkorjaustila on tuettu.
Uusi kohdejärjestelmä kokoamista varten (target) Hashlink - Erityisesti Haxelle suunniteltu korkean suorituskyvyn ajonaika, joka tukee kääntämistä tavukoodiksi JIT:lle tai C:lle, on helppo integroida C:n kanssa sekä pääsy matalan tason numeerisiin tyyppeihin ja osoittimiin.
Uusi JVM-kohde - mahdollistaa jvm-tavukoodin luomisen ohittamalla Java-koodin käännösvaiheen lisäämällä "-D jvm" -lipun, kun kohdistat Javassa.
Mahdollisuus ottaa käyttöön inline-käyttöön funktioita tai rakentajia kutsuttaessa, vaikka niitä ei ole ilmoitettu sellaisiksi.
Mahdollisuus sisällyttää staattiset laajennukset kun määritetään tyyppi (kuten "enum") käyttämällä "@:using(path.ToExtension)".
Abstraktityypit tukevat nyt "@:op(a.b)"-operaattorin "set"-versiota "obj.foo = bar" -lausekkeiden lataamiseksi uudelleen.
"For"-silmukkasyntaksi tukee nyt avainarvon iteraatiota: "for (avain => arvo kokoelmassa) {}".
Tuki xml-tyyppisten merkintöjen käyttämiselle lausekkeissa: “var a = ‹hi/›;”. Toistaiseksi tämä ominaisuus on käytettävissä vain jäsentämiseen makrojen kanssa, ja se on suunnitteluvaiheessa.
Anonyymien rakennetyyppien "täydellisen" merkinnän valinnaisten kenttien syntaksi on: "{ var ?f:Int; }" (vaihtoehto lyhyelle "{ ?f:Int }").
Enum-arvot voivat nyt olla oletusarvoja funktion argumenteille: "function foo‹T›(optio:Option‹T› = Ei mitään)".
Syntaksi "enum abstract Name(BasicType) {}" ei enää vaadi @:-etuliitettä "enum"-kentässä.
enum abstract Foo(Int) {
var A; // 0
var B; // 1
}
enum abstract Bar(String) {
var A; // "A"
var B; // "B"
}
Avainsana "extern" ei enää vaadi @:-etuliitettä.
Poistettu vaihtoehto "työkoneet Dynaaminen" päästäksesi luokkakenttiin merkkijonojen kautta. Saatavilla ulkoisille luokille tai toteutuksena abstraktilla tyypillä.
Lisätty "A & B" -syntaksi tyyppileikkaukselle, joka tällä hetkellä koskee vain anonyymejä rakenteita ja tyyppiparametrirajoituksia. Vanha rajoitussyntaksi on poistettu.
Tyhjien "Map"-instanssien luominen on mahdollista syntaksilla "var map:Map‹Int, String› = [];" samanlainen kuin taulukko.
Lisätty tietorakenne "haxe.ds.ReadOnlyArray".
Metatiedoissa voi nyt olla nimiavaruuksia ("@:prefix.name function() {…}"). Samoin määritelmien kanssa: "#jos (joku.lippu ... #loppu".
Uusi palveluprotokolla käytössä oleville IDE:ille VSCode-laajennus.
Päivitetty ulkoiset määritelmät (ulkoiset) Web API:ille ja lisätty puuttuvat määritelmät.