Vrijgave van de programmeertaal Haxe 4.1

Beschikbaar toolkit-uitgave Hax 4.1, die de gelijknamige programmeertaal op hoog niveau met meerdere paradigma's bevat, met sterk typen, een cross-compiler en een standaardbibliotheek met functies. Het project ondersteunt vertaling naar C++, HashLink/C, JavaScript, C#, Java, PHP, Python en Lua, evenals compilatie naar JVM, HashLink/JIT, Flash en Neko bytecode, met toegang tot de native mogelijkheden van elk doelplatform. Compilercode gedistribueerd door onder de GPLv2-licentie, en de standaardbibliotheek en virtuele machines ontwikkeld voor Haxe HashLink и Neko onder de MIT-licentie.

Taal is expressiegericht met krachtig typen. Objectgeoriënteerde, generieke en functionele programmeertechnieken worden ondersteund. De Haxe-syntaxis ligt dicht bij ECMAScript en breidt uit de functies ervan zoals statisch typen, autotype-inferentie, patroonmatching, generieke methoden, op iterator gebaseerde for-lussen, AST-macro's, GADT (Generalized Algebraic Data Types), abstracte typen, anonieme structuren, vereenvoudigde array-definities, voorwaardelijke compilatie-expressies, het koppelen van metagegevens aan velden , klassen en expressies, stringinterpolatie ("'Mijn naam is $name'"), typeparameters ('new Main ("foe")') en veel meer.

klasse Test {
statische functie hoofd() {
laatste mensen = [
"Elizabeth" => "Programmeren",
"Joel" => "Ontwerp"
];

for (naam => baan in mensen) {
trace('$name doet $job voor de kost!');
}
}
}

Nieuwe functies in versie 4.1:

  • Optimalisatie van staartrecursie toegevoegd.
  • Er is een nieuwe uniforme API toegevoegd voor de afhandeling van uitzonderingen.
  • De constructie "try {} catch(e) {}" is toegestaan ​​als afkorting voor "try {} catch(e: haxe.Exception) {}".
  • SSL-ondersteuning toegevoegd aan de eval-interpreter.
  • De doel-JVM wordt niet langer als experimenteel beschouwd.
  • Voor Language Server Protocol is ondersteuning voor de functies “Goto Implementation” en “Find references” toegevoegd.
  • Verbeterde naamgeving van tijdelijke lokale variabelen in gegenereerde code. Overbodige "return" verwijderd; in pijlfuncties zonder retourwaarde.
  • Toegangscombinaties (get, standaard) zijn toegestaan ​​voor velden (alleen getter, standaard toewijzingsgedrag).
  • Sta operatoren voor het verhogen en verlagen van velden toe abstracte typen.
  • Verbeterde inlineing van for-lussen met behulp van anonieme iterators.
  • js: Verbeterde StringMap-implementatie voor ES5.
  • js: Het genereren van let-variabelen is toegevoegd aan de compileroptie “-D js-es=6”, het genereren van ES6-klassen is verbeterd.
  • lua: "StringIterator" geoptimaliseerd, foutafhandeling verbeterd.
  • php: Geoptimaliseerde "Std.isOfType" voor basistypen.
  • php: Gegenereerde arrays implementeren nu de native interfaces “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Metagegevens "@:assemblyMeta" en "@:assemblyStrict" toegevoegd.
  • python: implementatie van "__contains__" toegevoegd aan anonieme objecten
    en "__getitem__", waardoor ze kunnen worden gebruikt als woordenboeken in de gegenereerde code.

  • jvm: Aanzienlijk verbeterde prestaties dankzij een nieuwe manier om toegang te krijgen tot getypte functies en om extra interfaces te genereren in gevallen waarin objecten worden gebruikt als anonieme structuren (dynamisch opzoeken van eigenschappen wordt voorkomen):
    Vrijgave van de programmeertaal Haxe 4.1

Verbeteringen in de standaardbibliotheek:

  • Functie "Array.contains" toegevoegd.
  • "Array.keyValueIterator" toegevoegd, die sleutel-waarde-iteratie voor arrays implementeert ("for (key => waarde in array)").
  • Beperkingstype "haxe.Constraints.NotVoid" toegevoegd.
  • De functies “findIndex” en “foldi” zijn toegevoegd aan de klasse “Lambda”.
  • Geïmplementeerde "array access" (toegang via "arr[i]") en sleutelwaarde-iteratie voor "haxe.ds.HashMap".
  • jvm: JVM-specifieke versies geïmplementeerd van "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Gebruikte native implementaties van "MD5", "SHA-1" en "SHA-256" voor de "haxe.crypto"-modules.
  • macro: "haxe.macro.Context.containsDisplayPosition(pos)" toegevoegd.
  • nullsafety: de "Strikte" modus wordt nu behandeld als single threaded; "StrictThreaded" -modus toegevoegd.
  • "Std.is" is verouderd ten gunste van "Std.isOfType".
  • Een waarschuwing toegevoegd bij het gebruik van lokale variabelen zonder waarden in afsluitingen.
  • js: "untyped __js__(code, args)" is verouderd en vervangen door "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" en "php.Web" zijn verouderd en zullen later naar de "hx4compat"-bibliotheek worden verplaatst.

In de volgende uitgave gepland:

  • Verbeteringen in pakketbeheer haxelib.
  • Asynchrone systeem-API gebaseerd libuv.
  • Coroutijnen.
  • Het declareren van modulaire statische functies en variabelen zonder klassen te maken (al beschikbaar in nachtelijke builds).

Bron: opennet.ru

Voeg een reactie