Është e disponueshme lëshimi i toolkit-it Haxe 4.2, i cili përfshin gjuhën e programimit shumëparadigmore me emrin e njëjtë, me tipizim të rreptë, një ndërkompilator dhe një bibliotekë standarde funksionesh. 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 akses në mundësitë natyrore të çdo platforme të synuar. Kodi i kompilatorit shpërndahet nën licencën GPLv2, ndërsa biblioteca standarde dhe makinat virtuale të zhvilluara për Haxe, HashLink dhe Neko, nën licencën MIT.
Gjuha është e orientuar ndaj shprehjeve me tipizim të fortë. Mbështeten teknikë të programimit objektor, të përgjithshëm dhe funksional. Sintaksa e Haxe është e ngjashme me ECMAScript dhe e zgjeron atë me mundësi si tipizim statik, inferencë automatike të tipeve, përputhje të modeleve, gjenerikë, cikli 'for' i bazuar në iterata, makro të AST (Llojet e të Dhënave Algebraike të P përgjithshëm), tipe abstrakte, struktura anonime, definime të thjeshta të array-t, shprehje për përmbledhje kushtore, lidhje të metadatanëve me fushat, klasat dhe shprehjet, interpolim të vargjeve ('Emri im është $name'), parametra të tipeve ('new Main<String>("foo")') dhe shumë të tjera. class Test { static function main() { final people = [ «Elizabeth» => «Programim», «Joel» => «Dizajn» ]; for (name => job in people) { trace(‘$name bën $job për të jetuar!’); } } }
Mundësitë e reja të versionit 4.2:
- Deklarimi i variablave dhe funksioneve statike në nivelin e modulit, pa nevojën për t'u ambalazhuar në një klasë.
- Mbështetje për klasat dhe funksionet abstrakte "klasike".
- Implementimi natyror i funksioneve variative për të gjithë platformat e synuara (haxe.Rest) dhe shtimi i operatorit për shpërndarjen e argumenteve 'f(…array)'.
- Implementimi i ciklit të ngjarjeve (event loop) për thread-e të veçantë ("sys.thread.Thread.events").
- Metadatat «@:inheritDoc» për trashëgimin e dokumentacionit të tipeve/fushave.
- Mbështetje për ngarkimin e metodave për metoda të jashtme në të gjitha platformat e synuara.
- Dërgimi në konstruktorin abstrakt që ndodhet në thelb të llojit të tij me metadatat «@:forward.new».
- Tek «haxe.macro.Expr» është shtuar konstruktori «EIs».
- Mundësia për të bërë një tip abstrakt variant me «@:forward.variance».
- Paraqitja e tipit «Any» si «Dynamic» gjatë unifikimit të variantës.
- Në paketën «haxe.exceptions» janë shtuar disa tipe themelore të përjashtimeve.
- Mbështetje për bashkëngjitjen e metadatanve gjatë shpalljes së variablave.
- Funksioni «StringTools.unsafeCharAt», i përdorur gjatë iterimit të stringëve.
- eval (interpretues): në paketën «eval.luv» janë shtuar lidhjet me «libuv».
- eval: lidhjet me implementimet native të «Int64» dhe «UInt64» përmes paketës «eval.integers».
- cs: implementimi i soketëve UDP.
- cs: moduli «cs.Syntax» për vendosjet inline të kodit C#.
- jvm: është shtuar flagu «-D jvm.dynamic-level=x» për të kontrolluar numrin e optimizimeve të gjeneruara në kodin dinamik. 0 = asnjë, 1 = optimizimi i leximit/shkrimit të fushave, 2 = mbylljet e metodave gjatë fazës së përpunimit.
- java, jvm: Mbështetje për flagun «—java-lib ».
- python: implementimi i API-së threading.
Përmirësime të përgjithshme:
- «expr është SomeType» nuk kërkon të mbyllet në kllufa.
- Prioriteti i tipave të zgjerimit «@:using» është rritur.
- Lejohet përdorimi i zgjerimeve statike të tipit përmes «super».
- Mundësia për të vendosur metadata për fushat «@:noDoc».
- Tipi abstrakt «Map» është bërë tranzitiv.
- Mbështetje për «@:native» në konstruktoret e enumeracionit.
- Mbështetje për «@:using» në shpalljet e tipit («typedefs»).
- Gabimet me shumë rreshta përdorin «…» si prefiks për rreshtat pasues.
- Output-i i tipave është rishikuar, strukturat anonime më mirë konvertohen në tipe eksplicite dhe «mbyllen» pas përfundimit të funksionit.
- Tipi i funksioneve të pa argumenteve si «()->…» në vend të «Void->…».
- Fjalë kyçe «function» lejohet si emër pakete.
- Përmirësuar inkorporimi (inlining) i objekteve.
- cs: Shtuar mbështetje për .NET 5.0.
- cpp: Mbështetje për konstruktoret natyrore në klasat e jashtme.
- php: Shtuar «php.Syntax.customArrayDecl» për shpalljen e një array-i natyror.
- php: Rishikuar metodat e jashtme (externs) për funksione dhe klasa të ndryshme.
- php: Optimizuar implementimi i strukturave anonime.
- hl: Arsyetimi i kompilimit në mungesë të ndryshimeve në module.
- lua: Përdorimi i «hx-lua-simdjson» për analizimin e json.
- jvm: Ngarkesa e CPU është ulur në implementimin e «sys.thread.Lock».
- js: Përmirësuar përputhshmëria me Google Closure Compiler.
- Null Safety: Konsiderimi i «@:nullSafety(Off)» gjatë shpalljes së variablave: «var @:nullSafety(Off) v».
Gjithashtu, deri në versionet e reja të kompilatorit, është përmirësuar shtesa për redaktorin VSCode, ku janë shtuar sugjerime me gjenerimin e fushave të munguar të interface-ve, klasave të thjeshta dhe abstrakte, si dhe metodave të pronave.
Burimi: opennet.ru
