Utgivning av programmeringsspråket Haxe 4.1

Tillgängliga verktygslåda Haxe 4.1, som inkluderar multiparadigm högnivåprogrammeringsspråket med samma namn med stark typning, 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. Kompilatorkod levererad av under GPLv2-licensen och standardbiblioteket och virtuella maskiner som utvecklats för Haxe HashLink и några under MIT-licensen.

Språket är uttrycksorienterad med stark skrivning. Objektorienterade, generiska och funktionella programmeringstekniker stöds. Haxe-syntax ligger nära ECMAScript och expanderar dess funktioner såsom statisk typning, autotypinferens, mönstermatchning, generik, iteratorbaserad för loopar, AST-makron, GADT (Generalized Algebraic Data Types), abstrakta typer, anonyma strukturer, förenklade arraydefinitioner, villkorliga kompileringsuttryck, bifoga metadata till fält , klasser och uttryck, stränginterpolation ("'Mitt namn är $namn'"), typparametrar ('new Main ("foo")') och mycket mer.

klass Test {
statisk funktion main() {
sista personer = [
"Elizabeth" => "Programmering",
"Joel" => "Design"
];

för (namn => jobb i människor) {
trace('$name gör $jobb för sitt uppehälle!');
}
}
}

Nya funktioner i version 4.1:

  • Lade till svansrekursionsoptimering.
  • Lade till ett nytt enhetligt API för undantagshantering.
  • Konstruktionen "försök {} catch(e) {}" är tillåten som en förkortning för "försök {} catch(e: haxe.Exception) {}".
  • Lade till SSL-stöd till eval-tolken.
  • Mål-JVM anses inte längre vara experimentell.
  • För Language Server Protocol har stöd för funktionerna "Goto Implementation" och "Hitta referenser" lagts till.
  • Förbättrad namngivning av temporära lokala variabler i genererad kod. Tog bort redundant "retur;" i pilfunktioner utan returvärde.
  • Åtkomstkombinationer (get, standard) är tillåtna på fält (endast getter, standardtilldelningsbeteende).
  • Tillåt inkrement- och minskningsoperatorer för fält abstrakta typer.
  • Förbättrad inlining av for-loopar med anonyma iteratorer.
  • js: Förbättrad StringMap-implementering för ES5.
  • js: Generering av låtvariabler har lagts till kompilatoralternativet "-D js-es=6", genereringen av ES6-klasser har förbättrats.
  • lua: "StringIterator" optimerad, felhantering förbättrad.
  • php: Optimerad "Std.isOfType" för bastyper.
  • php: Genererade arrayer implementerar nu de inbyggda gränssnitten "Iterator", "IteratorAggregate", "Countable".
  • cs: Lade till metadata "@:assemblyMeta" och "@:assemblyStrict".
  • python: lade till implementering av "__contains__" till anonyma objekt
    och "__getitem__", som gör att de kan användas som ordböcker i den genererade koden.

  • jvm: Avsevärt förbättrad prestanda tack vare ett nytt sätt att komma åt inskrivna funktioner och generera ytterligare gränssnitt i fall där objekt används som anonyma strukturer (dynamisk egenskapssökning förhindras):
    Utgivning av programmeringsspråket Haxe 4.1

Förbättringar i standardbiblioteket:

  • Lade till funktionen "Array.contains".
  • Lade till "Array.keyValueIterator", som implementerar nyckel-värde-iteration för arrayer ("för (nyckel => värde i array)").
  • Lade till begränsningstyp "haxe.Constraints.NotVoid".
  • Funktionerna "findIndex" och "foldi" har lagts till i klassen "Lambda".
  • Implementerad "array access" (åtkomst via "arr[i]") och nyckel-värde iteration för "haxe.ds.HashMap".
  • jvm: Implementerade JVM-specifika versioner av "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Använde inbyggda implementeringar av "MD5", "SHA-1" och "SHA-256" för "haxe.crypto"-modulerna.
  • makro: Lade till "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strikt"-läge behandlas nu som enkelgängat; lagt till "StrictThreaded"-läge.
  • "Std.is" har fasats ut till förmån för "Std.isOfType".
  • Lade till en varning vid användning av lokala variabler utan värden i stängningar.
  • js: "otypad __js__(kod, args)" är utfasad, ersatt med "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" och "php.Web" har fasats ut och kommer att flyttas till "hx4compat"-biblioteket senare.

I nästa release planerad:

  • Förbättringar av pakethanteraren axelib.
  • Asynkront system API baserat libuv.
  • Coroutines.
  • Deklarera modulära statiska funktioner och variabler utan att skapa klasser (redan tillgängligt i nattbyggen).

Källa: opennet.ru

Lägg en kommentar