Veröffentlichung der Programmiersprache Haxe 4.1

Verfügbar Toolkit-Veröffentlichung Haxe 4.1, das die gleichnamige Multi-Paradigma-High-Level-Programmiersprache mit starker Typisierung, einen Cross-Compiler und eine Standard-Funktionsbibliothek umfasst. Das Projekt unterstützt die Übersetzung in C++, HashLink/C, JavaScript, C#, Java, PHP, Python und Lua sowie die Kompilierung in JVM, HashLink/JIT, Flash und Neko-Bytecode mit Zugriff auf die nativen Funktionen jeder Zielplattform. Compiler-Code vertrieben von unter der GPLv2-Lizenz sowie die für Haxe entwickelte Standardbibliothek und virtuellen Maschinen HashLink и neko unter der MIT-Lizenz.

Sprache ist ausdrucksorientiert mit starkem Tippen. Es werden objektorientierte, generische und funktionale Programmiertechniken unterstützt. Die Haxe-Syntax ähnelt ECMAScript und expandiert seine Funktionen wie statische Typisierung, Autotype-Inferenz, Mustervergleich, Generika, iteratorbasierte for-Schleifen, AST-Makros, GADT (Generalized Algebraic Data Types), abstrakte Typen, anonyme Strukturen, vereinfachte Array-Definitionen, bedingte Kompilierungsausdrücke, Anhängen von Metadaten an Felder , Klassen und Ausdrücke, String-Interpolation („‚Mein Name ist $name‘“), Typparameter („new Main („foo“)‘) und vieles andere.

Klasse Test {
statische Funktion main() {
letzte Leute = [
„Elizabeth“ => „Programmierung“,
„Joel“ => „Design“
];

for (name => job in people) {
Trace('$name verdient seinen Lebensunterhalt!');
}
}
}

Neue Funktionen in Version 4.1:

  • Tail-Rekursionsoptimierung hinzugefügt.
  • Eine neue einheitliche API für die Ausnahmebehandlung hinzugefügt.
  • Das Konstrukt „try {} Catch(e) {}“ ist als Abkürzung für „try {} Catch(e: haxe.Exception) {}“ zulässig.
  • SSL-Unterstützung zum Evaluierungsinterpreter hinzugefügt.
  • Die Ziel-JVM gilt nicht mehr als experimentell.
  • Für das Language Server Protocol wurde Unterstützung für die Funktionen „Gehe zu Implementierung“ und „Referenzen suchen“ hinzugefügt.
  • Verbesserte Benennung temporärer lokaler Variablen im generierten Code. Überflüssiges „return;“ entfernt in Pfeilfunktionen ohne Rückgabewert.
  • Zugriffskombinationen (Get, Standard) sind auf Feldern zulässig (nur Getter, Standardzuweisungsverhalten).
  • Erlauben Sie Inkrementierungs- und Dekrementierungsoperatoren für Felder abstrakte Typen.
  • Verbessertes Inlining von for-Schleifen mithilfe anonymer Iteratoren.
  • js: Verbesserte StringMap-Implementierung für ES5.
  • js: Die Generierung von Let-Variablen wurde zur Compiler-Option „-D js-es=6“ hinzugefügt, die Generierung von ES6-Klassen wurde verbessert.
  • lua: „StringIterator“ optimiert, Fehlerbehandlung verbessert.
  • php: „Std.isOfType“ für Basistypen optimiert.
  • php: Generierte Arrays implementieren jetzt die nativen Schnittstellen „Iterator“, „IteratorAggregate“, „Countable“.
  • cs: Metadaten „@:assemblyMeta“ und „@:assemblyStrict“ hinzugefügt.
  • Python: Implementierung von „__contains__“ zu anonymen Objekten hinzugefügt
    und „__getitem__“, wodurch sie als Wörterbücher im generierten Code verwendet werden können.

  • jvm: Deutlich verbesserte Leistung dank einer neuen Möglichkeit, auf typisierte Funktionen zuzugreifen und zusätzliche Schnittstellen zu generieren, wenn Objekte als anonyme Strukturen verwendet werden (dynamische Eigenschaftssuche wird verhindert):
    Veröffentlichung der Programmiersprache Haxe 4.1

Verbesserungen in der Standardbibliothek:

  • Funktion „Array.contains“ hinzugefügt.
  • „Array.keyValueIterator“ hinzugefügt, der die Schlüsselwertiteration für Arrays implementiert („for (key => value in array)“).
  • Einschränkungstyp „haxe.Constraints.NotVoid“ hinzugefügt.
  • Die Funktionen „findIndex“ und „foldi“ wurden zur Klasse „Lambda“ hinzugefügt.
  • „Array-Zugriff“ (Zugriff über „arr[i]“) und Schlüsselwert-Iteration für „haxe.ds.HashMap“ implementiert.
  • jvm: JVM-spezifische Versionen von „StringMap“, „sys.thread.Lock“, „sys.thread.Thread“ implementiert.
  • java/jvm: Verwendete native Implementierungen von „MD5“, „SHA-1“ und „SHA-256“ für die „haxe.crypto“-Module.
  • Makro: „haxe.macro.Context.containsDisplayPosition(pos)“ hinzugefügt.
  • nullsafety: Der „Strict“-Modus wird jetzt als Single-Threaded behandelt; „StrictThreaded“-Modus hinzugefügt.
  • „Std.is“ wurde zugunsten von „Std.isOfType“ veraltet.
  • Es wurde eine Warnung hinzugefügt, wenn lokale Variablen ohne Werte in Abschlüssen verwendet werden.
  • js: „untyped __js__(code, args)“ ist veraltet und wird durch „js.Syntax.code(code, args)“ ersetzt.
  • php/neko: „neko.Web“ und „php.Web“ sind veraltet und werden später in die Bibliothek „hx4compat“ verschoben.

In der nächsten Veröffentlichung sind geplant:

  • Verbesserungen des Paketmanagers haxelib.
  • Asynchrones System API-basiert libuv.
  • Coroutinen.
  • Deklarieren modularer statischer Funktionen und Variablen ohne Erstellen von Klassen (bereits in nächtlichen Builds verfügbar).

Source: opennet.ru

Kommentar hinzufügen