Lëshimi i gjuhës së programimit Haxe 4.2

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

Shto një koment