lirimi i veglës , duke përfshin një gjuhë programimi multikompare të nivelit të lartë me tipizim të fortë, kompileri ndërplatformë dhe bibliotekën standarde të funksioneve. Projekti mbështet përkthimin në C++, HashLink/C, JavaScript, C#, Java, PHP, Python dhe Lua, si dhe kompilimin në bytecode JVM, HashLink/JIT, Flash dhe Neko, me qasje në mundësitë native të çdo platforme të synuar. Kodi i kompajlerit nën licencën GPLv2, ndërsa biblioteka standarde dhe makinat virtuale në zhvillim për Haxe dhe në përputhje me licencën MIT.
Gjuha është me tipizim të fortë. Mbështeten praktikat e programimit objekt-orientuar, të përgjithsuar dhe funksional. Sintaksa e Haxe është e ngjashme me ECMAScript dhe atë me mundësi si tipizimi statik, deduksionin automatik të tipit, përputhjen e modeleve, gjenerikët, ciklin 'for' të bazuar në iterues, makrotë AST, GADT (Tipet e Të Dhënave të Përgjithësuara), llojet abstrakte, struktura anonime, përkufizime të thjeshta të array-ve, shprehje për përpilimin e kushti, ngjitur metadata në fusha, klasa dhe shprehje, interpolimi i vargjeve (‘My name is $name’), parametrat e tipeve (‘new Main<String>(“foo”)’) dhe .
class Test {
funkcioni statik kryesor() {
njerëzit përfundimtarë = [
«Elizabeth» => «Programim»,
«Joel» => «Dizajn»
];
për (emri => puna në njerëzit) {
trace(‘$emri bën $punë për një jetë!’);
}
}
}
Novitetet e versionit 4.1:
- Shtuar optimizimi i rekursioneve tail.
- Shtuar një API të ri të unifikuar për trajtimin e përjashtimeve.
- Lejohet konstrukti «try {} catch(e) {}» si një shkurtim për «try {} catch(e: haxe.Exception) {}».
- mbështetje për SSL e shtuar në interpretuesin eval.
- Platforma e synuar JVM nuk konsiderohet më eksperimentale.
- Për Protokollin e Serverit të Gjuhëve shtuar mbështetje për funksionet «Shko te Zbatimi» dhe «Gjej referencat».
- Përmirësuar emërimin e variablave të përkohshëm në kodin e gjeneruar. Eliminuar «return;» të tepërta në funksionet e harkut pa vlerë kthimi.
- Për fushat lejohet kombinimi i aksesit (merr, parazgjedhje) (vetëm geter, sjellja për caktimin në parazgjedhje).
- Lejohet operatorët e rritjes dhe uljes për fushat .
- Përmirësuar vendosja (inlining) e cikleve for duke përdorur iterues anonim.
- js: Përmirësuar realizimi i StringMap për ES5.
- js: Në opsionin e kompilatorit «-D js-es=6» shtuar gjenerimi i variablave let, përmirësuar gjenerimin e klasave ES6.
- lua: optimizuar «StringIterator», përmirësuar trajtimi i gabimeve.
- php: Optimizuar «Std.isOfType» për llojet bazë.
- php: Të gjeneruarat tani implementojnë ndërfaqet native «Iterator», «IteratorAggregate», «Countable».
- cs: Metadatet «@:assemblyMeta» dhe «@:assemblyStrict» janë shtuar.
- python: Në objektet anonime është shtuar implementimi «__contains__».
dhe «__getitem__», duke lejuar përdorimin e tyre si fjalorë në kodin e gjeneruar. - jvm: Përdorimi i një metode të re për të quajtur funksionet e tipizuar dhe gjenerimin e ndërfaqeve shtesë në rastet kur objektet përdoren si struktura anonime (parandalimi i kërkimit dinamik të pronave):
Përmirësime në bibliotekën standarde:
- Shtuar funksionin «Array.contains».
- Shtuar «Array.keyValueIterator», që implementon iterimin key-value për arrays («for (key => value in array)»).
- Shtuar kufizimin e tipit «haxe.Constraints.NotVoid».
- Në klasën «Lambda» janë shtuar funksionet «findIndex» dhe «foldi».
- Implementuar «array access» (qasje përmes «arr[i]») dhe iterimi key-value për «haxe.ds.HashMap».
- jvm: Janë implementuar versionet specifike për JVM të «StringMap», «sys.thread.Lock», «sys.thread.Thread».
- java/jvm: Janë përdorur implementimet native të «MD5», «SHA-1» dhe «SHA-256» për modulët «haxe.crypto».
- macro: Shtuar «haxe.macro.Context.containsDisplayPosition(pos)».
- nullsafety: moda «Strict» tani shqyrtohet si një njësi e vetme; është shtuar moda «StrictThreaded».
- «Std.is» është shpallur i vjetruar në favor të «Std.isOfType».
- Është shtuar një paralajmërim kur përdoren variablat lokale pa vlera në mbyllje.
- js: «untyped __js__(code, args)» është shpallur i vjetruar, në vend të tij ofrohet «js.Syntax.code(code, args)».
- php/neko: «neko.Web» dhe «php.Web» janë shpallur të vjetëruar dhe do të zhvendosen më vonë në bibliotekën «hx4compat».
Në versionin e ardhshëm :
- Përmirësimi i menaxherit të paketave .
- API sistemik asinkron në bazë të .
- Korrutinat (coroutines).
- Deklarimi i funksioneve statike modulare dhe variablave pa krijuar klasa (më në fund i disponueshëm në ndërtimet e natës).
Burimi: opennet.ru
