Verëffentlechung vun der Programméiersprooch Haxe 4.0

Verfügbar Toolkit Verëffentlechung Haxe 4.0, déi d'Multi-Paradigme High-Level Programméierungssprooch mam selwechten Numm enthält mat staarken Tippen, e Cross-Compiler an eng Standardbibliothéik vu Funktiounen. 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. Compiler Code verdeelt duerch ënner der GPLv2 Lizenz, an eng Standardbibliothéik an eng virtuell Maschinn entwéckelt fir Haxe Neko ënner der MIT Lizenz.

Sprooch ass Ausdrock-orientéiert mat staarken Tippen. Objektorientéiert, generesch a funktionell Programméierungskonzepter ginn ënnerstëtzt.
Haxe Syntax ass no bei ECMAScript an erweidert seng Features wéi statesch Tippen, Autotype-Inferenz, Mustermatching, Generik, Iterator-baséiert fir Loops, AST Makroen, GADT (Generaliséiert Algebraic Data Types), abstrakt Typen, anonym Strukturen, vereinfacht Array Definitiounen, bedingend Kompiléierungsausdréck, Metadaten u Felder befestegt , Klassen an Ausdréck, String Interpolatioun ("Mäi Numm ass $name"), Typ Parameteren ("nei Main‹String›('foo')"), an vill méi.

Klass Test {
statesch Funktioun main() {
var Leit = [
"Elizabeth" => "Programméiere",
"Joel" => "Design"
];

fir (Numm an people.keys()) {
var job = Leit[Numm];
trace('$Numm mécht $Job fir e Liewen!');
}
}
}

Haaptstrooss Innovatiounen Versioun 4.0:

  • Nei Syntax fir d'Funktiounstyp "(Name:String, age:Int)->Bool" oder "(String, Int)->Bool" anstatt "String->Int->Bool" ze spezifizéieren.
  • Pfeil Funktioun Syntax ass "(a, b) -> a + b" amplaz "Funktioun (a, b) zréck a + b".
  • Schutz géint Probleemer verbonne mat der Notzung vun Null Wäerter (experimentell Feature, optional aktivéiert fir verschidde Felder, Klassen oder Packagen).
  • Dat "final" Schlësselwuert ass fir Klassefelder a lokal Variabelen déi onverännerbar sinn. "Finale" kann och benotzt ginn fir Funktiounen ze definéieren fir ze verhënneren datt se duerch Ierfschaft iwwerdréit ginn a fir Klassen / Interfaces déi net ierflech kënne ginn.
  • Ënnerstëtzung Unicode Standard fir de Basistyp "String" op all Kompiléierungsziler ausser Neko.
  • Built-in Dolmetscher vun Null nei geschriwwen, deen elo ënner dem Numm kënnt Evaluéieren. Dank dem neien Dolmetscher lafen Scripten a Makroen vill méi séier. Interaktiven Debugging Modus gëtt ënnerstëtzt.
  • Neien Zilsystem fir Kompiléierung (Zil) Haschlink - eng High-Performance Runtime speziell fir Haxe entworf, Ënnerstëtzung fir Kompiléierung op Bytecode fir JIT oder C, huet einfach Integratioun mat C, souwéi Zougang zu nidderegen numereschen Typen a Pointer.
  • Neit JVM Zil - erlaabt Iech jvm Bytecode ze generéieren andeems Dir de Java Code Compilatioun Schrëtt iwwerspréngt andeems Dir de "-D jvm" Fändel bäigefüügt wann Dir op Java zielt.
  • D'Kapazitéit fir inline-deployéieren um Punkt fir Funktiounen oder Konstruktoren ze ruffen, och wa se net als solch deklaréiert sinn.
  • Méiglechkeet vun Inclusioun statesch Extensiounen wann Dir en Typ deklaréiert (wéi "enum") mat "@:using(path.ToExtension)".
  • Abstrakt Typen ënnerstëtzen elo eng "set" Versioun vum "@:op(a.b)" Bedreiwer fir "obj.foo = bar" Ausdréck nei ze lueden.
  • D'"fir" Loop Syntax ënnerstëtzt elo Schlësselwäert Iteratioun: "fir (Schlëssel => Wäert an der Sammlung) {}".
  • Ënnerstëtzung fir xml-ähnlech Markup an Ausdréck ze benotzen: "var a = ‹hi/›;". Fir de Moment ass dës Feature nëmme fir Parsing mat Makroen verfügbar an ass an der Designstadium.
  • D'Syntax fir optional Felder an der "voll" Notatioun vun anonyme Strukturtypen ass: "{ var ?f:Int; }" (eng Alternativ zum kuerzen "{ ?f:Int }").
  • Enum Wäerter kënnen elo Standardwäerter fir Funktiounsargumenter sinn: "Funktioun foo‹T› (Optioun: Option‹T› = Keen)”.
  • D'Syntax "enum abstrakt Numm(BasicType) {}" erfuerdert net méi de Präfix "@:" am "enum".
  • Automatesch Nummeréierung fir abstrakt Opzielungen:

    enum abstrakt Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstract Bar(String) {
    var A; // "A"
    var B; // "B"
    }

  • Dat "externt" Schlësselwuert erfuerdert net méi d'Benotzung vum "@:" Präfix.
  • D'Optioun geläscht "implementéiert Dynamic" fir Zougang zu Klassefelder iwwer Strings ze kréien. Verfügbar fir extern Klassen oder duerch Implementatioun vun engem abstrakte Typ.
  • Derbäigesat "A & B" Syntax fir Typ Kräizung, déi aktuell nëmmen fir anonym Strukturen an Typ Parameter Contrainten gëlt. Déi al Aschränkungssyntax gouf geläscht.
  • Eidel "Map" Instanzen erstellen ass verfügbar iwwer d'Syntax "var map:Map‹Int, String› = [];" ähnlech wéi eng Array.
  • Derbäigesat Datestruktur "haxe.ds.ReadOnlyArray".
  • Metadaten kënnen elo Nummraim hunn ("@:prefix.name Funktioun () {...}"). Ähnlech mat Definitiounen: "#if (some.flag ... #end".
  • Neie Serviceprotokoll fir IDEs benotzt an Plugin fir VSCode.
  • Aktualiséiert extern Definitiounen (extern) fir Web APIen a bäigefüügt fehlend.

Source: opennet.ru

Setzt e Commentaire