Utgivelse av programmeringsspråket Haxe 4.1

Tilgjengelig utgivelse av verktøysett Haxe 4.1, som inkluderer multi-paradigme høynivå programmeringsspråk med samme navn med sterk skriving, en krysskompilator og et standard bibliotek med funksjoner. Prosjektet støtter oversettelse til C++, HashLink/C, JavaScript, C#, Java, PHP, Python og Lua, samt kompilering til JVM, HashLink/JIT, Flash og Neko bytecode, med tilgang til de opprinnelige egenskapene til hver målplattform. Kompilatorkode distribuert av under GPLv2-lisensen, og standardbiblioteket og virtuelle maskiner utviklet for Haxe HashLink и neko under MIT-lisensen.

Språket er uttrykksorientert med sterk skriving. Objektorienterte, generiske og funksjonelle programmeringsteknikker støttes. Haxe-syntaks er nær ECMAScript og utvides funksjonene som statisk skriving, autotype-inferens, mønstertilpasning, generikk, iteratorbasert for loops, AST-makroer, GADT (Generalized Algebraic Data Types), abstrakte typer, anonyme strukturer, forenklede matrisedefinisjoner, betingede kompileringsuttrykk, vedlegge metadata til felt , klasser og uttrykk, strenginterpolasjon ("'Mitt navn er $navn'"), typeparametere ('new Main ("foo")') og mye mer.

klasse Test {
statisk funksjon main() {
siste personer = [
"Elizabeth" => "Programmering",
"Joel" => "Design"
];

for (navn => jobb i mennesker) {
trace('$navn gjør $jobb for en levende!');
}
}
}

Nye funksjoner i versjon 4.1:

  • Lagt til halerekursjonsoptimalisering.
  • Lagt til en ny enhetlig API for håndtering av unntak.
  • Konstruksjonen "try {} catch(e) {}" er tillatt som en forkortelse for "try {} catch(e: haxe.Exception) {}".
  • Lagt til SSL-støtte til eval-tolken.
  • Mål-JVM anses ikke lenger som eksperimentell.
  • For Language Server Protocol er støtte for funksjonene "Gå til implementering" og "Finn referanser" lagt til.
  • Forbedret navngivning av midlertidige lokale variabler i generert kode. Fjernet overflødig "retur;" i pilfunksjoner uten returverdi.
  • Tilgangskombinasjoner (get, standard) er tillatt på felt (kun getter, standard tildelingsatferd).
  • Tillat økning og reduksjonsoperatorer for felt abstrakte typer.
  • Forbedret inlining av for loops ved hjelp av anonyme iteratorer.
  • js: Forbedret StringMap-implementering for ES5.
  • js: Generering av la variabler er lagt til kompilatoralternativet "-D js-es=6", generering av ES6-klasser er forbedret.
  • lua: "StringIterator" optimalisert, feilhåndtering forbedret.
  • php: Optimalisert "Std.isOfType" for basistyper.
  • php: Genererte arrays implementerer nå de native grensesnittene "Iterator", "IteratorAggregate", "Countable".
  • cs: Lagt til metadata "@:assemblyMeta" og "@:assemblyStrict".
  • python: lagt til implementering av "__contains__" til anonyme objekter
    og "__getitem__", som gjør at de kan brukes som ordbøker i den genererte koden.

  • jvm: Betydelig forbedret ytelse takket være en ny måte å få tilgang til maskinskrevne funksjoner og generere ekstra grensesnitt i tilfeller der objekter brukes som anonyme strukturer (dynamisk egenskapsoppslag forhindres):
    Utgivelse av programmeringsspråket Haxe 4.1

Forbedringer i standardbiblioteket:

  • Lagt til "Array.contains" funksjon.
  • Lagt til "Array.keyValueIterator", som implementerer nøkkel-verdi-iterasjon for matriser ("for (nøkkel => verdi i matrise)").
  • Lagt til begrensningstype "haxe.Constraints.NotVoid".
  • Funksjonene «findIndex» og «foldi» er lagt til «Lambda»-klassen.
  • Implementert "array access" (tilgang via "arr[i]") og nøkkelverdi-iterasjon for "haxe.ds.HashMap".
  • jvm: Implementerte JVM-spesifikke versjoner av "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Brukte innfødte implementeringer av "MD5", "SHA-1" og "SHA-256" for "haxe.crypto"-modulene.
  • makro: Lagt til "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Streng"-modus behandles nå som enkeltgjenget; lagt til "StrictThreaded"-modus.
  • "Std.is" er avviklet til fordel for "Std.isOfType".
  • Lagt til en advarsel ved bruk av lokale variabler uten verdier i lukkinger.
  • js: "untyped __js__(code, args)" er utdatert, erstattet av "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" og "php.Web" er avviklet og vil bli flyttet til "hx4compat"-biblioteket senere.

I neste utgivelse er planlagt:

  • Pakkebehandlingsforbedringer haxelib.
  • Asynkront system API basert libuv.
  • Korutiner.
  • Erklære modulære statiske funksjoner og variabler uten å lage klasser (allerede tilgjengelig i nattlig bygg).

Kilde: opennet.ru

Legg til en kommentar