Utgivning av programmeringsspråket Haxe 4.2

En utgåva av Haxe 4.2-verktygssatsen är tillgänglig, som inkluderar multi-paradigm högnivåprogrammeringsspråket med samma namn med stark skrivning, en korskompilator och ett standardbibliotek med funktioner. Projektet stöder översättning till C++, HashLink/C, JavaScript, C#, Java, PHP, Python och Lua, samt kompilering till JVM, HashLink/JIT, Flash och Neko bytecode, med tillgång till de inbyggda funktionerna för varje målplattform. Kompilatorkoden distribueras under GPLv2-licensen, och standardbiblioteket och de virtuella HashLink- och Neko-maskinerna som utvecklats för Haxe är licensierade under MIT-licensen.

Språket är uttrycksorienterat med stark maskinskrivning. Objektorienterade, generiska och funktionella programmeringstekniker stöds. Haxes syntax ligger nära ECMAScript och utökar den med funktioner som statisk typning, autotypinferens, mönstermatchning, generika, iteratorbaserad för loopar, AST-makron, GADT (Generalized Algebraic Data Types), abstrakta typer, anonyma strukturer, förenklade definitionsarrayer, uttryck för villkorlig kompilering, bifoga metadata till fält, klasser och uttryck, stränginterpolation ('Mitt namn är $name'), typparametrar ('new Main("foo")') och mycket mer. class Test { static function main() { final people = [ "Elizabeth" => "Programmering", "Joel" => "Design" ]; for (namn => jobb i människor) { trace(‘$namn gör $jobb för sitt uppehälle!’); } } }

Nya funktioner i version 4.2:

  • Deklarera statiska variabler och funktioner på modulnivå, utan att behöva slå in dem i en klass.
  • Stöd för "klassiska" abstrakta klasser och funktioner.
  • Inbyggd implementering av variadiska funktioner för alla målplattformar (haxe.Rest) och tillägg av argumentexpansionsoperatorn "f(...array)".
  • Implementering av en händelseloop för enskilda trådar ("sys.thread.Thread.events").
  • "@:inheritDoc"-metadata för ärvningstyp/fältdokumentation.
  • Metodöverbelastningsstöd för externa metoder på alla målplattformar.
  • Vidarebefordra konstruktorn som ligger bakom dess typ till abstraktet med hjälp av "@:forward.new" metadata.
  • Lade till "EIs"-konstruktorn till "haxe.macro.Expr".
  • Möjlighet att göra en abstrakt typvariant med "@:forward.variance".
  • Representation av typen "Val som helst" som "Dynamisk" när variationen förenas.
  • Lade till några grundläggande undantagstyper i paketet "haxe.exceptions".
  • Stöd för att bifoga metadata vid deklaration av variabler.
  • Funktionen "StringTools.unsafeCharAt" används för strängiteration.
  • eval (tolk): Lade till bindningar till "libuv" i paketet "eval.luv".
  • eval: bindningar till inbyggda implementeringar av "Int64" och "UInt64" via paketet "eval.integers".
  • cs: Implementering av UDP-socket.
  • cs: "cs.Syntax"-modul för infogning av C#-kod.
  • jvm: Lade till flaggan "-D jvm.dynamic-level=x" för att styra antalet genererade optimeringar för dynamisk kod. 0 = ingen, 1 = läs/skrivoptimering för fält, 2 = metodnedläggning vid kompilering.
  • java, jvm: Stöd för flaggan "--java-lib ".
  • python: threading API implementering.

Allmänna förbättringar:

  • "expr är SomeType" kräver inte omslag inom parentes.
  • Ökad prioritet för tillägg av typen "@:using".
  • Tillåter användning av tillägg av statisk typ via "super".
  • Möjlighet att ställa in metadata till "@:noDoc"-fält.
  • Den abstrakta typen "Map" görs transitiv.
  • Stöd för "@:native" på enum-konstruktörer.
  • Stöd för "@:using" på typdeklarationer ("typedefs").
  • Flerradsfel använder "..." som prefix för efterföljande rader.
  • Typinferens har omarbetats, anonyma strukturer konverteras bättre till explicita typer och "stängs" när funktionen är klar.
  • Utleda typen av funktioner utan argument som "()->..." istället för "Void->...".
  • Nyckelordet "funktion" är tillåtet som ett paketnamn.
  • Förbättrad inlining av objekt.
  • cs: Tillagt stöd för .NET 5.0.
  • cpp: Stöd för inhemska konstruktörer för externa klasser.
  • php: Lade till "php.Syntax.customArrayDecl" för att deklarera en inbyggd array.
  • php: Uppdaterade externa metoder för olika funktioner och klasser.
  • php: Optimerad implementering av anonyma strukturer.
  • hl: Hoppa över kompilering om det inte sker några ändringar av moduler.
  • lua: Använd "hx-lua-simdjson" för att analysera json.
  • jvm: Minskad CPU-belastning i "sys.thread.Lock"-implementeringen.
  • js: Förbättrad kompatibilitet med Google Closure Compiler.
  • Null Safety: Tänk på "@:nullSafety(Off)" när du deklarerar variabler: "var @:nullSafety(Off) v".

Dessutom har tillägget till VSCode-redigeraren uppdaterats till den nya versionen av kompilatorn, där tips har dykt upp med genereringen av saknade fält av gränssnitt, enkla och abstrakta klasser, såväl som egenskapsmetoder.

Källa: opennet.ru

Lägg en kommentar