Një version i paketës së veglave Haxe 4.2 është i disponueshëm, i cili përfshin gjuhën e programimit të nivelit të lartë me shumë paradigmë me të njëjtin emër me shtypje të fortë, një ndër-përpilues dhe një bibliotekë standarde funksionesh. Projekti mbështet përkthimin në C++, HashLink/C, JavaScript, C#, Java, PHP, Python dhe Lua, si dhe përpilimin në JVM, HashLink/JIT, Flash dhe Neko bytecode, me akses në aftësitë vendase të çdo platforme të synuar. Kodi i përpiluesit shpërndahet nën licencën GPLv2 dhe biblioteka standarde dhe makinat virtuale HashLink dhe Neko të zhvilluara për Haxe janë të licencuara nën licencën MIT.
Gjuha është e orientuar drejt shprehjes me shtypje të fortë. Mbështeten teknikat e programimit të orientuara drejt objekteve, gjenerike dhe funksionale. Sintaksa e Haxe është afër ECMAScript dhe e zgjeron atë me veçori të tilla si shtypja statike, konkluzionet e tipit automatik, përputhja e modelit, gjenerikët, ciklit e bazuar në përsëritës, makrotë AST, GADT (Llojet e Përgjithshme të të Dhënave Algjebrike), llojet abstrakte, strukturat anonime, të thjeshtuara vargje përkufizimesh, shprehje për kompilim të kushtëzuar, bashkangjitje të meta të dhënave në fusha, klasa dhe shprehje, interpolimi i vargjeve ('Emri im është $name'), parametrat e tipit ('New Main("foo")') dhe shumë më tepër. class Test { funksion statik main() { final people = [ "Elizabeth" => "Programim", "Joel" => "Dizajn" ]; for (emri => puna në njerëz) { trace(‘$name bën $punë për jetesë!’); } }
Karakteristikat e reja në versionin 4.2:
- Deklarimi i variablave dhe funksioneve statike në nivelin e modulit, pa qenë nevoja t'i mbështillni ato në një klasë.
- Mbështetje për klasat dhe funksionet abstrakte "klasike".
- Implementimi origjinal i funksioneve variadike për të gjitha platformat e synuara (haxe.Rest) dhe shtimi i operatorit të zgjerimit të argumentit “f(...array)”.
- Zbatimi i një cikli eventi për thread-et individuale (“sys.thread.Thread.events”).
- Meta të dhënat "@:inheritDoc" për trashëgiminë e dokumentacionit të llojit/fushës.
- Mbështetja e mbingarkesës së metodës për metodat e jashtme në të gjitha platformat e synuara.
- Përcjellja e konstruktorit në bazë të llojit të tij në abstrakt duke përdorur metadatat "@:forward.new".
- U shtua konstruktori "EIs" në "haxe.macro.Expr".
- Aftësia për të bërë një variant të tipit abstrakt me "@:forward.variance".
- Përfaqësimi i llojit "Çdo" si "Dynamic" kur unifikon variacionin.
- U shtuan disa lloje themelore përjashtimesh në paketën "haxe.exceptions".
- Mbështetje për bashkëngjitjen e meta të dhënave gjatë deklarimit të variablave.
- Funksioni "StringTools.unsafeCharAt" përdoret për përsëritjen e vargjeve.
- eval (interpretues): Lidhje të shtuara për "libuv" në paketën "eval.luv".
- eval: lidhjet me implementimet vendase të "Int64" dhe "UInt64" nëpërmjet paketës "eval.integers".
- cs: Implementimi i prizës UDP.
- cs: Moduli “cs.Syntax” për futjet inline të kodit C#.
- jvm: Shtoi flamurin “-D jvm.dynamic-level=x” për të kontrolluar numrin e optimizimeve të krijuara për kodin dinamik. 0 = asnjë, 1 = optimizimi i leximit/shkrimit të fushës, 2 = mbyllja e metodës në kohën e përpilimit.
- java, jvm: Mbështetje për flamurin "--java-lib ".
- python: zbatimi threading API.
Përmirësime të përgjithshme:
- "expr is SomeType" nuk kërkon mbështjellje në kllapa.
- Prioriteti i rritur për shtesat e tipit "@:përdor".
- Lejon përdorimin e shtesave të tipit statik nëpërmjet "super".
- Aftësia për të vendosur meta të dhënat në fushat "@:noDoc".
- Lloji abstrakt "Hartë" është bërë kalimtar.
- Mbështetje për "@:native" në konstruktorët enum.
- Mbështetje për "@:using" në deklaratat e tipit ("typedefs").
- Gabimet me shumë rreshta përdorin "..." si parashtesë për rreshtat pasues.
- Konkluzionet e tipit janë ripërpunuar, strukturat anonime konvertohen më mirë në lloje eksplicite dhe "mbyllen" kur funksioni përfundon.
- Konkludimi i llojit të funksioneve pa argumente si "()->..." në vend të "Void->...".
- Fjala kyçe "funksion" lejohet si emër i paketës.
- Rreshtimi i përmirësuar i objekteve.
- cs: Mbështetje e shtuar për .NET 5.0.
- cpp: Mbështetje për konstruktorët vendas për klasat e jashtme.
- php: U shtua "php.Syntax.customArrayDecl" për të deklaruar një grup origjinal.
- php: Metodat e jashtme të përditësuara për funksione dhe klasa të ndryshme.
- php: Implementimi i optimizuar i strukturave anonime.
- hl: Kapërceni kompilimin nëse nuk ka ndryshime në module.
- lua: Përdorimi i "hx-lua-simdjson" për të analizuar json.
- jvm: Ngarkesa e reduktuar e CPU-së në implementimin "sys.thread.Lock".
- js: Përputhshmëri e përmirësuar me Përpiluesin e Mbylljes së Google.
- Siguria Null: Merrni parasysh "@:nullSafety(Off)" kur deklaroni variablat: "var @:nullSafety(Off) v".
Gjithashtu, shtesa në redaktorin VSCode është përditësuar në versionin e ri të përpiluesit, në të cilin janë shfaqur sugjerime me gjenerimin e fushave të munguara të ndërfaqeve, klasave të thjeshta dhe abstrakte, si dhe metodave të vetive.
Burimi: opennet.ru