Verëffentlechung vun der Programméiersprooch Haxe 4.2

Eng Verëffentlechung vum Haxe 4.2 Toolkit ass verfügbar, deen d'Multi-paradigm High-Level Programméierungssprooch mam selwechten Numm mat staarken Typen, e Cross-Compiler an eng Standardbibliothéik vu Funktiounen enthält. De Projet ënnerstëtzt d'Iwwersetzung op C++, HashLink/C, JavaScript, C#, Java, PHP, Python a Lua, souwéi Kompiléierung op JVM, HashLink/JIT, Flash an Neko Bytecode, mat Zougang zu den gebiertege Fäegkeeten vun all Zilplattform. De Compiler Code gëtt ënner der GPLv2 Lizenz verdeelt, an d'Standardbibliothéik an d'HashLink an Neko virtuell Maschinnen entwéckelt fir Haxe sinn ënner der MIT Lizenz lizenzéiert.

D'Sprooch ass Ausdrock-orientéiert mat staarken Tippen. Objektorientéiert, generesch a funktionell Programméierungstechnike ginn ënnerstëtzt. Dem Haxe seng Syntax ass no bei ECMAScript an erweidert et mat Features wéi statesch Tippen, Auto-Typ Inferenz, Muster Matching, Generics, Iterator-baséiert fir Loops, AST Makroen, GADT (Generaliséiert Algebraic Data Types), abstrakt Typen, anonym Strukturen, vereinfacht Definitiounen Arrays, Ausdréck fir bedingt Kompiléierung, Metadaten u Felder befestegt, Klassen an Ausdréck, String Interpolatioun ('Mäi Numm ass $name'), Typparameter ('nei Main' ("foo")') a vill anerer. class Test { static function main() { final people = [ "Elizabeth" => "Programméiere", "Joel" => "Design" ]; fir (Numm => Aarbecht a Leit) { trace('$Numm mécht $Job fir e Liewen!'); } } }

Nei Features an der Versioun 4.2:

  • Statesch Verännerlechen a Funktiounen um Modulniveau deklaréieren, ouni datt se an enger Klass wéckelen.
  • Ënnerstëtzung fir "klassesch" abstrakt Klassen a Funktiounen.
  • Gebierteg Ëmsetzung vun variadic Funktiounen fir all Zil- Plattformen (haxe.Rest) an Zousätzlech vun der Argument Expansioun Bedreiwer "f (... Array)".
  • Ëmsetzung vun engem Event Loop fir eenzel Threads ("sys.thread.Thread.events").
  • "@:inheritDoc" Metadaten fir ierwen Typ / Feld Dokumentatioun.
  • Method iwwerlaascht Ënnerstëtzung fir extern Methoden op all Zilplattformen.
  • Forwarding the constructor underlying its type to the abstract with the "@:forward.new" Metadaten.
  • Derbäigesat "EIs" constructor zu "haxe.macro.Expr".
  • D'Kapazitéit fir eng abstrakt Typvariant mat "@:forward.variance" ze maachen.
  • Representatioun vum "All" Typ als "Dynamic" wann d'Vereenegung vun der Variatioun.
  • Huet e puer grondleeënd Ausnahmstypen zum Package "haxe.exceptions" bäigefüügt.
  • Ënnerstëtzung fir Metadaten ze befestigen wann Dir Variabelen deklaréiert.
  • Funktioun "StringTools.unsafeCharAt" benotzt fir String Iteratioun.
  • eval (Interpreter): Bindungen op "libuv" am Package "eval.luv" bäigefüügt.
  • eval: Bindungen un gebierteg Implementatioune vun "Int64" an "UInt64" iwwer de "eval.integers" Package.
  • cs: UDP Socket Ëmsetzung.
  • cs: "cs.Syntax" Modul fir inline Insertiounen vum C # Code.
  • jvm: Den "-D jvm.dynamic-level=x" Fändel bäigefüügt fir d'Zuel vun generéierten Optimisatiounen fir dynamesche Code ze kontrolléieren. 0 = keng, 1 = Feld liesen / schreiwen Optimisatioun, 2 = Method Zoumaache bei der Kompiléierungszäit.
  • java, jvm: Ënnerstëtzung fir de Fändel "--java-lib <directory>".
  • python: threading API Ëmsetzung.

Allgemeng Verbesserungen:

  • "expr ass SomeType" erfuerdert keng Wrapung an Klammern.
  • Méi Prioritéit fir "@:benotzen" Typ Extensiounen.
  • Erlaabt d'Benotzung vu statesche Typ Extensiounen iwwer "super".
  • D'Kapazitéit fir Metadaten op "@:noDoc" Felder ze setzen.
  • Den abstrakte Typ "Kaart" gëtt transitiv gemaach.
  • Ënnerstëtzung fir "@:native" op enum Konstruktoren.
  • Ënnerstëtzung fir "@:using" op Typdeklaratiounen ("typedefs").
  • Multiline Feeler benotzen "..." als Präfix fir spéider Linnen.
  • Typ Inferenz gouf ëmgeschafft, anonym Strukture si besser an explizit Typen ëmgewandelt an "zougemaach" wann d'Funktioun fäerdeg ass.
  • D'Aart vu Funktiounen ouni Argumenter als "()->..." ofzeschléissen anstatt "Void->...".
  • D'Schlësselwuert "Funktioun" ass als Package Numm erlaabt.
  • Verbessert Inlining vun Objeten.
  • cs: Zousätzlech Ënnerstëtzung fir .NET 5.0.
  • cpp: Ënnerstëtzung fir gebierteg Konstruktoren fir extern Klassen.
  • php: "php.Syntax.customArrayDecl" bäigefüügt fir eng gebierteg Array ze deklaréieren.
  • php: Aktualiséiert extern Methode fir verschidde Funktiounen a Klassen.
  • php: Optimiséiert Ëmsetzung vun anonyme Strukturen.
  • hl: Iwwersprangen Compilatioun wann et keng Ännerunge fir Moduler sinn.
  • lua: Benotzt "hx-lua-simdjson" fir json ze analyséieren.
  • jvm: Reduzéiert CPU Belaaschtung an der "sys.thread.Lock" Ëmsetzung.
  • js: Verbesserte Kompatibilitéit mam Google Closure Compiler.
  • Null Sécherheet: Bedenkt "@:nullSafety(Off)" wann Dir Variabelen deklaréiert: "var @:nullSafety(Off) v".

Och d'Ergänzung vum VSCode Editor gouf op déi nei Versioun vum Compiler aktualiséiert, an deem Hiweiser erschéngen mat der Generatioun vu fehlend Felder vun Interfaces, einfachen an abstrakte Klassen, souwéi Eegeschaftemethoden.

Source: opennet.ru

Setzt e Commentaire