Izid programskega jezika Haxe 4.2

Na voljo je izdaja kompleta orodij Haxe 4.2, ki vključuje istoimenski visokonivojski programski jezik z več paradigmami z močnim tipkanjem, navzkrižnim prevajalnikom in standardno knjižnico funkcij. Projekt podpira prevajanje v C++, HashLink/C, JavaScript, C#, Java, PHP, Python in Lua, kot tudi kompilacijo v JVM, HashLink/JIT, Flash in Neko bytecode, z dostopom do izvornih zmogljivosti vsake ciljne platforme. Koda prevajalnika se distribuira pod licenco GPLv2, standardna knjižnica in virtualni stroji HashLink in Neko, razviti za Haxe, pa so licencirani pod licenco MIT.

Jezik je izrazno usmerjen z močnim tipkanjem. Podprte so tehnike objektno usmerjenega, splošnega in funkcionalnega programiranja. Haxejeva sintaksa je blizu ECMAScriptu in ga razširja s funkcijami, kot so statično tipkanje, samodejni tipski sklep, ujemanje vzorcev, generiki, zanke for, ki temeljijo na iteratorju, AST makri, GADT (generalni algebraični podatkovni tipi), abstraktni tipi, anonimne strukture, poenostavljeni nizi definicij, izrazi za pogojno prevajanje, pripenjanje metapodatkov k poljem, razredom in izrazom, interpolacija nizov ('My name is $name'), tipski parametri ('new Main("foo")') in še veliko več. class Test { static function main() { final people = [ "Elizabeth" => "Programiranje", "Joel" => "Design" ]; for (name => job in people) { trace(‘$name opravlja $job za preživetje!’); } } }

Nove funkcije v različici 4.2:

  • Deklaracija statičnih spremenljivk in funkcij na ravni modula, ne da bi jih bilo treba zaviti v razred.
  • Podpora za "klasične" abstraktne razrede in funkcije.
  • Izvorna izvedba variadičnih funkcij za vse ciljne platforme (haxe.Rest) in dodajanje operatorja razširitve argumenta »f(...array)«.
  • Izvedba zanke dogodkov za posamezne niti (»sys.thread.Thread.events«).
  • Metapodatki »@:inheritDoc« za dedovanje dokumentacije tipa/polja.
  • Podpora za preobremenitev metod za zunanje metode na vseh ciljnih platformah.
  • Posredovanje konstruktorja, na katerem temelji njegov tip, v povzetek z uporabo metapodatkov »@:forward.new«.
  • Dodan konstruktor "EIs" v "haxe.macro.Expr".
  • Sposobnost izdelave različice abstraktnega tipa z "@:forward.variance".
  • Predstavitev vrste »Any« kot »Dynamic« pri poenotenju variacije.
  • V paket "haxe.exceptions" je bilo dodanih nekaj osnovnih vrst izjem.
  • Podpora za pripenjanje metapodatkov pri deklaraciji spremenljivk.
  • Funkcija "StringTools.unsafeCharAt", ki se uporablja za ponavljanje nizov.
  • eval (tolmač): dodane so bile vezave na "libuv" v paketu "eval.luv".
  • eval: vezave na izvorne izvedbe »Int64« in »UInt64« prek paketa »eval.integers«.
  • cs: implementacija vtičnice UDP.
  • cs: modul “cs.Syntax” za vstavljanje kode C# v vrstico.
  • jvm: dodana zastavica »-D jvm.dynamic-level=x« za nadzor števila ustvarjenih optimizacij za dinamično kodo. 0 = nič, 1 = optimizacija branja/pisanja polja, 2 = zaprtja metode v času prevajanja.
  • java, jvm: Podpora za zastavico "--java-lib ".
  • python: implementacija API-ja za navoje.

Splošne izboljšave:

  • "expr is SomeType" ne zahteva ovijanja v oklepaje.
  • Povečana prioriteta za razširitve tipa "@:using".
  • Omogoča uporabo razširitev statičnega tipa prek »super«.
  • Možnost nastavitve metapodatkov za polja »@:noDoc«.
  • Abstraktni tip "Zemljevid" je prehoden.
  • Podpora za "@:native" na konstruktorjih enum.
  • Podpora za "@:using" na deklaracijah tipa ("typedefs").
  • Večvrstične napake uporabljajo "..." kot predpono za naslednje vrstice.
  • Sklepanje tipa je bilo predelano, anonimne strukture se bolje pretvorijo v eksplicitne tipe in se "zaprejo", ko se funkcija zaključi.
  • Sklepanje vrste funkcij brez argumentov kot "()->..." namesto "Void->...".
  • Ključna beseda "funkcija" je dovoljena kot ime paketa.
  • Izboljšano vstavljanje predmetov.
  • cs: Dodana podpora za .NET 5.0.
  • cpp: Podpora za izvorne konstruktorje za zunanje razrede.
  • php: dodan "php.Syntax.customArrayDecl" za deklaracijo izvorne matrike.
  • php: posodobljene zunanje metode za različne funkcije in razrede.
  • php: Optimizirana implementacija anonimnih struktur.
  • hl: preskoči prevajanje, če ni sprememb modulov.
  • lua: uporaba "hx-lua-simdjson" za razčlenitev json.
  • jvm: Zmanjšana obremenitev procesorja v izvedbi "sys.thread.Lock".
  • js: Izboljšana združljivost z Google Closure Compiler.
  • Null Safety: Pri deklaraciji spremenljivk upoštevajte "@:nullSafety(Off)": "var @:nullSafety(Off) v".

Prav tako je bil dodatek k urejevalniku VSCode posodobljen na novo različico prevajalnika, v katerem so se pojavili namigi z generiranjem manjkajočih polj vmesnikov, preprostih in abstraktnih razredov ter metod lastnosti.

Vir: opennet.ru

Dodaj komentar