tööriista väljalase , mis sisaldab sama nime kandvat multiparadiigmilist kõrgema taseme programmeerimiskeelt, millel on range tüüpimine, ristkompilaator ja standardteek funktsioonidest. Projekt toetab C++, HashLink/C, JavaScripti, C#, Java, PHP, Pythoni ja Lua tõlget ning ka JVM, HashLink/JIT, Flash ja Neko baitkoodi kompileerimist, võimaldades juurde pääseda igale sihtplatvormile iseloomulikutele omadustele. Kompilaatori kood on GPLv2 litsentsi all, ning standardteek ja Haxe virtuaalmasinate arendused ja on MIT litsentsi all.
Keel on range tüüpimisega. Toetatakse objektorienteeritud, üldistatud ja funktsionaalset programmeerimist. Haxe süntaks on lähedane ECMAScriptile ja omab selliseid võimalusi nagu staatiline tüüpimine, tüübi automaatne tuletamine, mustrite sobitamine, generics, iteratsioonidel põhinev "for" tsükkel, AST-makrod, GADT (üldistatud algebrastruktuuri tübid), abstraktsed tüüpide, anonüümsed struktuurid, lihtsustatud massiivide määratlused, tingimuslikku kompileerimist käsitlevad avaldised, metaandmete sidumine väljendite, klasside ja väljadega, stringide interpolatsioon ("‘My name is $name'"), tüübi parameetrid ('new Main<String>("foo")') ja .
class Test {
static function main() {
final people = [
«Elizabeth» => «Programmeerimine»,
«Joel» => «Disain»
];
for (name => job in people) {
trace(‘$name teenib $job’);
}
}
}
Versiooni 4.1 uuendused:
- Lisatud sabarekursiooni optimeerimine.
- Lisatud uus ühtne API erandite töötlemiseks.
- Lubatud konstruktsioon «try {} catch(e) {}» lühendina «try {} catch(e: haxe.Exception) {}».
- Eval tõlgendisse lisatud SSL-i tugi.
- Sihtplatvorm JVM ei ole enam eksperimenteeritud.
- Language Server Protocolile lisatud funktsioonide «Goto Implementation» ja «Find references» tugi.
- Parandatud ajutiste lokaalsete muutujate nimetamise praktikat genereeritud koodis. Eemaldatud üleliigsed «return;» ilma tagastavate väärtusteta noolfunktsioonides.
- Väljadele lubatud juurdepääsu kombinatsioon (get, default) (ainult getter, käitumine vaikimisi määramisel).
- Lubatud inkrementeerimise ja dekrementeerimise operaatorid väljadele .
- Parandatud for-tsüklite sissetoomist (inlining) anonüümsete iteratooride abil.
- js: Parandatud StringMapi rakendust ES5 jaoks.
- js: Kompilaatori valikusse «-D js-es=6» lisatud let muutuja genereerimine, parandatud ES6 klasside genereerimist.
- lua: optimeeritud «StringIterator», parandatud vea töötlemist.
- php: Optimeeritud „Std.isOfType“ põhitüüpide jaoks.
- php: Generaatorite massiivid realiseerivad nüüd kohalikke liideseid „Iterator“, „IteratorAggregate“ ja „Countable“.
- cs: Lisatud metaandmed „@:assemblyMeta“ ja „@:assemblyStrict“.
- python: Anonüümsetesse objektidesse on lisatud „__contains__“ rakendus.
ja „__getitem__“, mis võimaldab kasutada neid sõnastikutena genereeritud koodis. - jvm: Oluliselt on paranenud jõudlus uue tüüpi funktsioonide kutsumise ja täiendavate liideste genereerimise kaudu juhtudel, kui objekte kasutatakse anonüümsete struktuuridena (ennetatud dünaamilist atribuutide otsimist):
Parandused standardraamatukogus:
- Lisatud funktsioon „Array.contains“.
- Lisatud „Array.keyValueIterator“, mis realiseerib võtme-väärtuse iteratsiooni massiivide jaoks („for (key => value in array)“).
- Lisatud tüpi piirang „haxe.Constraints.NotVoid“.
- Klasse „Lambda“ on lisatud funktsioonid „findIndex“ ja „foldi“.
- Tehtud on „array access“ (juurdepääs kaudu „arr[i]“) ja võtme-väärtuse iteratsioon „haxe.ds.HashMap“ jaoks.
- jvm: Rakendatud on JVM-spetsiifilised versioonid „StringMap“, „sys.thread.Lock“, „sys.thread.Thread“.
- java/jvm: Kasutatud on kohalikke realiseerimisi „MD5“, „SHA-1“ ja „SHA-256“ moodulites „haxe.crypto“.
- macro: Lisatud „haxe.macro.Context.containsDisplayPosition(pos)“.
- nullsafety: režiim «Strict» on nüüd käsitletud kui ühesuunaline; lisatud režiim «StrictThreaded».
- «Std.is» kuulutati vananenuks «Std.isOfType» kasuks.
- Lisatud hoiatuse kohta, kui kasutatakse lokaalseid muutujaid väärtusteta sulgudes.
- js: «untyped __js__(code, args)» kuulutati vananenuks, asemele pakutakse «js.Syntax.code(code, args)».
- php/neko: «neko.Web» ja «php.Web» kuulutati vananenuks ja need viiakse hiljem üle «hx4compat» teeki.
Järgmises väljaandes :
- Pakettide halduri täiustamine .
- Asünkroonne süsteemi API põhine .
- Koosprogrammidel (coroutines).
- Modulaarsete staatiliste funktsioonide ja muutujate kuulutamine ilma klasside loomiseta (saadaval juba öistes kogudes).
Allikas: opennet.ru
