Vydanie programovacieho jazyka Haxe 4.0

K dispozícii vydanie súpravy nástrojov Haxe 4.0, ktorý zahŕňa multiparadigmový vysokoúrovňový programovací jazyk rovnakého mena so silným písaním, krížový kompilátor a štandardnú knižnicu funkcií. Projekt podporuje preklad do C++, HashLink/C, JavaScript, C#, Java, PHP, Python a Lua, ako aj kompiláciu do JVM, HashLink/JIT, Flash a Neko bytecode s prístupom k natívnym schopnostiam každej cieľovej platformy. Kód kompilátora distribuovaný pod licenciou GPLv2 a štandardnou knižnicou a virtuálnym strojom vyvinutým pre Haxe neko pod licenciou MIT.

Jazyk je výrazovo orientovaný so silným písaním. Podporované sú koncepty objektovo orientovaného, ​​generického a funkčného programovania.
Syntax Haxe je blízka ECMAScript a expanduje jeho funkcie, ako sú statické typovanie, odvodenie automatického typu, porovnávanie vzorov, generiká, cykly založené na iterátoroch, makrá AST, GADT (Generalized Algebraic Data Types), abstraktné typy, anonymné štruktúry, zjednodušené definície polí, výrazy podmienenej kompilácie, pripájanie metadát k poliam , triedy a výrazy, interpolácia reťazcov ('Moje meno je $name'), parametre typu ("new Main‹String›('foo')") a oveľa viac.

trieda Test {
statická funkcia main() {
var ľudia = [
"Elizabeth" => "Programovanie",
"Joel" => "Dizajn"
];

for (meno v people.keys()) {
var job = ludia[meno];
trace('$name robí $prácu na živobytie!');
}
}
}

Hlavné inovácie verzia 4.0:

  • Nová syntax pre špecifikáciu typu funkcie "(name:String, age:Int)->Bool" alebo "(String, Int)->Bool" namiesto "String->Int->Bool".
  • Syntax funkcie šípky je "(a, b) -> a + b" namiesto "funkcia (a, b) vráti a + b".
  • Ochrana pred problémami spojenými s používaním hodnôt Null ​​(experimentálna funkcia, voliteľne povolená pre určité polia, triedy alebo balíky).
  • Kľúčové slovo „final“ je pre polia triedy a lokálne premenné, ktoré sú nemenné. „final“ možno použiť aj na definovanie funkcií, aby sa zabránilo ich prepísaniu dedením a pre triedy/rozhrania, ktoré sa nedajú dediť.
  • Podpora Štandard Unicode pre základný typ „String“ na všetkých cieľoch kompilácie okrem Neko.
  • Vstavaný tlmočník prepísaný od nuly, ktorý teraz prichádza pod názvom eval. Vďaka novému interpreteru bežia skripty a makrá oveľa rýchlejšie. Interaktívny režim ladenia je podporovaný.
  • Nový cieľový systém pre kompiláciu (cieľ) Hashlink - vysokovýkonný runtime navrhnutý špeciálne pre Haxe, podporujúci kompiláciu do bajtkódu pre JIT alebo C, má jednoduchú integráciu s C, ako aj prístup k nízkoúrovňovým numerickým typom a ukazovateľom.
  • Nový cieľ JVM – umožňuje generovať bajtkód jvm preskočením kroku kompilácie kódu Java pridaním príznaku „-D jvm“ pri zacielení v jazyku Java.
  • Schopnosť inline nasadenia v bode volania funkcií alebo konštruktorov, aj keď nie sú ako také deklarované.
  • Možnosť zaradenia statické rozšírenia pri deklarovaní typu (napríklad "enum") pomocou "@:using(path.ToExtension)".
  • Abstraktné typy teraz podporujú "set" verziu operátora "@:op(ab)" na opätovné načítanie výrazov "obj.foo = bar".
  • Syntax cyklu "for" teraz podporuje iteráciu kľúč-hodnota: "for (kľúč => hodnota v kolekcii) {}".
  • Podpora používania značiek podobných xml vo výrazoch: „var a = ‹hi/›;“. Táto funkcia je zatiaľ dostupná len na analýzu pomocou makier a je vo fáze návrhu.
  • Syntax pre voliteľné polia v „úplnom“ zápise anonymných typov štruktúr je: „{ var ?f:Int; }" (alternatíva ku krátkemu "{ ?f:Int }").
  • Hodnoty vymenovania teraz môžu byť predvolené hodnoty pre argumenty funkcií: "funkcia foo‹T›(možnosť:Možnosť‹T› = Žiadne)".
  • Syntax "enum abstract Name (BasicType) {}" už nevyžaduje predponu "@:" v "enum".
  • Automatické číslovanie pre abstraktné enumerácie:

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

  • Kľúčové slovo „exter“ už nevyžaduje použitie predpony „@:“.
  • Odstránená možnosť "náradie Dynamic" na prístup k poliam triedy prostredníctvom reťazcov. Dostupné pre externé triedy alebo prostredníctvom implementácie abstraktným typom.
  • Pridaná syntax „A & B“ pre priesečník typov, ktorá sa momentálne vzťahuje len na anonymné štruktúry a obmedzenia parametrov typu. Stará syntax obmedzenia bola odstránená.
  • Vytváranie prázdnych inštancií "Map" je dostupné prostredníctvom syntaxe "var map:Map‹Int, String› = [];" podobne ako pole.
  • Pridaná dátová štruktúra „haxe.ds.ReadOnlyArray“.
  • Metadáta môžu mať teraz priestory názvov („@:prefix.name function() {…}“). Podobne s definíciami: “#if (some.flag ... #end”.
  • Nový servisný protokol pre IDE používané v plugin pre VSCode.
  • Aktualizované externé definície (externé) pre webové rozhrania API a pridané chýbajúce.

Zdroj: opennet.ru

Pridať komentár