Release der Programmiersprache Haxe 4.1

Verfügbar Veröffentlichung des Tools Haxe 4.1, einschließlich einer hochgradig typisierten, multiparadigmatischen Programmiersprache mit dem gleichen Namen, eines Cross-Compilers und einer Standardbibliothek. Das Projekt unterstützt die Übersetzung nach C++, HashLink/C, JavaScript, C#, Java, PHP, Python und Lua sowie die Kompilierung in JVM-Bytecode, HashLink/JIT, Flash und Neko, mit Zugang zu den nativen Funktionen jeder Zielplattform. Der Compiler-Code wird unter der GPLv3-Lizenz bereitgestellt. ist unter der GPLv2-Lizenz veröffentlicht, während die Standardbibliothek und die für Haxe entwickelten virtuellen Maschinen HashLink und Neko unter der MIT-Lizenz.

Die Sprache ist ausdrucksorientiert mit strenger Typisierung. Es werden objektorientierte, generische und funktionale Programmieransätze unterstützt. Die Syntax von Haxe ähnelt ECMAScript und erweitert besitzt Funktionen wie statische Typisierung, Typinferenz, Musterzuordnung, Generika, iterative `for`-Schleifen, AST-Makros, GADT (Generalized Algebraic Data Types), abstrakte Typen, anonyme Strukturen, vereinfachte Array-Definitionen, Bedingungen zur Kompilierungszeit, Anbringen von Metadaten an Feldern, Klassen und Ausdrücken, String-Interpolation (‚Mein Name ist $name‘), Typparameter (‚new Main<String>(„foo“)‘) und und vieles mehr.

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

for (name => job in people) {
trace(‘$name arbeitet als $job!’);
}
}
}

Neuigkeiten der Version 4.1:

  • Optimierung der tail-recursion hinzugefügt.
  • Ein neues einheitliches API zur Ausnahmebehandlung hinzugefügt.
  • Die Struktur „try {} catch(e) {}“ wurde als Abkürzung für „try {} catch(e: haxe.Exception) {}“ erlaubt.
  • Die Unterstützung für SSL wurde im eval-Interpreter hinzugefügt.
  • Die Zielplattform JVM wird nicht mehr als experimentell betrachtet.
  • Für das Language Server Protocol wurde die Unterstützung für die Funktionen „Goto Implementation“ und „Find references“ hinzugefügt.
  • Die Benennung von temporären lokalen Variablen im generierten Code wurde verbessert. Überflüssige „return;“-Anweisungen in Pfeilfunktionen ohne Rückgabewert wurden entfernt.
  • Eine Zugriffscombination (get, default) für Felder wurde erlaubt (nur Getter, Standardverhalten für Zuweisungen).
  • Inkrement- und Dekrementoperatoren für Felder sind erlaubt. abstrakte Typen.
  • Das Inlining von For-Schleifen mit anonymen Iteratoren wurde verbessert.
  • js: Verbesserung der StringMap-Implementierung für ES5.
  • js: Im Compiler-Option „-D js-es=6“ wurde die Generierung von let-Variablen hinzugefügt, die Generierung von ES6-Klassen verbessert.
  • lua: Der „StringIterator“ wurde optimiert, die Fehlerbehandlung verbessert.
  • php: „Std.isOfType“ für grundlegende Typen optimiert.
  • php: Generierte Arrays implementieren nun die nativen Schnittstellen «Iterator», «IteratorAggregate», «Countable».
  • cs: Metadaten «@:assemblyMeta» und «@:assemblyStrict» wurden hinzugefügt.
  • python: Die Implementierung «__contains__» wurde zu anonymen Objekten hinzugefügt.
    und «__getitem__», was es ermöglicht, sie im generierten Code wie Wörterbücher zu verwenden.
  • jvm: Die Leistung wurde erheblich verbessert durch eine neue Methode zur Anrede von typisierten Funktionen und die Generierung zusätzlicher Schnittstellen, wenn Objekte als anonyme Strukturen verwendet werden (dynamische Eigenschaftensuche wurde verhindert):
    Release der Programmiersprache Haxe 4.1

Verbesserungen in der Standardbibliothek:

  • Die Funktion «Array.contains» wurde hinzugefügt.
  • «Array.keyValueIterator» wurde implementiert, um eine key-value Iteration für Arrays zu ermöglichen («for (key => value in array)»).
  • Ein Typbeschränkung «haxe.Constraints.NotVoid» wurde hinzugefügt.
  • Im «Lambda»-Klasse wurden die Funktionen «findIndex» und «foldi» hinzugefügt.
  • Der «array access» (Zugriff über «arr[i]») und key-value Iteration für «haxe.ds.HashMap» wurde implementiert.
  • jvm: JVM-spezifische Versionen von «StringMap», «sys.thread.Lock», «sys.thread.Thread» wurden implementiert.
  • java/jvm: Native Implementierungen von «MD5», «SHA-1» und «SHA-256» für die Module «haxe.crypto» wurden verwendet.
  • macro: «haxe.macro.Context.containsDisplayPosition(pos)» wurde hinzugefügt.
  • nullsafety: Der Modus «Strict» wird jetzt als einsträngig betrachtet; der Modus «StrictThreaded» wurde hinzugefügt.
  • «Std.is» ist als veraltet markiert zugunsten von «Std.isOfType».
  • Es wird eine Warnung ausgegeben, wenn lokale Variablen ohne Werte in Closures verwendet werden.
  • js: «untyped __js__(code, args)» ist als veraltet markiert und wird durch «js.Syntax.code(code, args)» ersetzt.
  • php/neko: «neko.Web» und «php.Web» sind als veraltet markiert und werden später in die Bibliothek «hx4compat» verschoben.

Im nächsten Release sind geplant:

  • Verbesserung des Paketmanagers haxelib.
  • Asynchrones System-API basierend auf libuv.
  • Koroutinen.
  • Deklaration von modulare statische Funktionen und Variablen ohne Erstellen von Klassen (bereits in Nachbauversionen verfügbar).

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster