Frigivelse af programmeringssproget Haxe 4.2

En udgivelse af Haxe 4.2 værktøjssættet er tilgængelig, som inkluderer multi-paradigme højniveau programmeringssprog af samme navn med stærk indtastning, en cross-compiler og et standard bibliotek af funktioner. Projektet understøtter oversættelse til C++, HashLink/C, JavaScript, C#, Java, PHP, Python og Lua samt kompilering til JVM, HashLink/JIT, Flash og Neko bytecode, med adgang til de native muligheder for hver målplatform. Compilerkoden distribueres under GPLv2-licensen, og standardbiblioteket og de virtuelle HashLink- og Neko-maskiner, der er udviklet til Haxe, er licenseret under MIT-licensen.

Sproget er udtryksorienteret med stærk maskinskrivning. Objektorienterede, generiske og funktionelle programmeringsteknikker understøttes. Haxes syntaks er tæt på ECMAScript og udvider den med funktioner som statisk typning, auto-type inferens, mønstermatching, generiske, iterator-baserede for loops, AST makroer, GADT (Generalized Algebraic Data Types), abstrakte typer, anonyme strukturer, forenklet definitionsarrays, udtryk til betinget kompilering, vedhæftning af metadata til felter, klasser og udtryk, strenginterpolation ('Mit navn er $navn'), typeparametre ('ny Main("foo")') og meget mere. klasse Test { static function main() { final people = [ "Elizabeth" => "Programmering", "Joel" => "Design" ]; for (navn => job i mennesker) { trace(‘$navn gør $job for en levende!’); } } }

Nye funktioner i version 4.2:

  • Erklæring af statiske variabler og funktioner på modulniveau uden behov for at pakke dem ind i en klasse.
  • Understøttelse af "klassiske" abstrakte klasser og funktioner.
  • Indbygget implementering af variadiske funktioner for alle målplatforme (haxe.Rest) og tilføjelse af argumentudvidelsesoperatoren "f(...array)".
  • Implementering af en hændelsesløkke for individuelle tråde ("sys.thread.Thread.events").
  • "@:inheritDoc"-metadata til nedarvning af type-/feltdokumentation.
  • Metodeoverbelastningsunderstøttelse af eksterne metoder på alle målplatforme.
  • Videresendelse af konstruktøren, der ligger til grund for dens type, til abstraktet ved hjælp af "@:forward.new" metadata.
  • Tilføjet "EIs"-konstruktør til "haxe.macro.Expr".
  • Mulighed for at lave en abstrakt typevariant med "@:forward.variance".
  • Repræsentation af typen "Enhver" som "Dynamisk", når variationen forenes.
  • Tilføjet nogle grundlæggende undtagelsestyper til "haxe.exceptions"-pakken.
  • Understøttelse af vedhæftning af metadata ved deklarering af variable.
  • Funktionen "StringTools.unsafeCharAt" bruges til streng iteration.
  • eval (tolk): Tilføjet bindinger til "libuv" i pakken "eval.luv".
  • eval: bindinger til native implementeringer af "Int64" og "UInt64" via pakken "eval.integers".
  • cs: UDP socket implementering.
  • cs: "cs.Syntax"-modul til inline-indsættelser af C#-kode.
  • jvm: Tilføjet flaget "-D jvm.dynamic-level=x" for at kontrollere antallet af genererede optimeringer for dynamisk kode. 0 = ingen, 1 = feltlæse/skriveoptimering, 2 = metodelukninger på kompileringstidspunktet.
  • java, jvm: Understøttelse af flaget "--java-lib ".
  • python: threading API implementering.

Generelle forbedringer:

  • "expr is SomeType" kræver ikke indpakning i parentes.
  • Øget prioritet for udvidelser af typen "@:using".
  • Tillader brug af statiske udvidelser via "super".
  • Mulighed for at indstille metadata til "@:noDoc" felter.
  • Den abstrakte type "Map" er gjort transitiv.
  • Understøttelse af "@:native" på enum-konstruktører.
  • Understøttelse af "@:using" på typedeklarationer ("typedefs").
  • Flerlinjefejl bruger "..." som præfiks for efterfølgende linjer.
  • Typeslutning er blevet omarbejdet, anonyme strukturer konverteres bedre til eksplicitte typer og "lukkes", når funktionen er fuldført.
  • At udlede typen af ​​funktioner uden argumenter som "()->..." i stedet for "Void->...".
  • Nøgleordet "funktion" er tilladt som et pakkenavn.
  • Forbedret inlining af objekter.
  • cs: Tilføjet understøttelse af .NET 5.0.
  • cpp: Understøttelse af native konstruktører til eksterne klasser.
  • php: Tilføjet "php.Syntax.customArrayDecl" for at erklære et native array.
  • php: Opdaterede eksterne metoder til forskellige funktioner og klasser.
  • php: Optimeret implementering af anonyme strukturer.
  • hl: Spring kompilering over, hvis der ikke er ændringer til moduler.
  • lua: Brug af "hx-lua-simdjson" til at parse json.
  • jvm: Reduceret CPU-belastning i "sys.thread.Lock"-implementeringen.
  • js: Forbedret kompatibilitet med Google Closure Compiler.
  • Null Safety: Overvej "@:nullSafety(Off)", når du erklærer variabler: "var @:nullSafety(Off) v".

Desuden er tilføjelsen til VSCode-editoren blevet opdateret til den nye version af compileren, hvor der er dukket hints op med generering af manglende felter af grænseflader, enkle og abstrakte klasser samt egenskabsmetoder.

Kilde: opennet.ru

Tilføj en kommentar