Vydanie programovacieho jazyka Haxe 4.1

K dispozícii vydanie súpravy nástrojov Haxe 4.1, 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 štandardná knižnica a virtuálne stroje vyvinuté pre Haxe HashLink и neko pod licenciou MIT.

Jazyk je výrazovo orientovaný so silným písaním. Podporované sú objektovo orientované, generické a funkčné programovacie techniky. Syntax Haxe je blízka ECMAScript a expanduje jeho funkcie, ako je statické písanie, 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 ("foo")') a oveľa viac.

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

pre (meno => práca v ľuďoch) {
trace('$name robí $prácu na živobytie!');
}
}
}

Nové funkcie vo verzii 4.1:

  • Pridaná optimalizácia rekurzie chvosta.
  • Pridané nové jednotné rozhranie API na spracovanie výnimiek.
  • Konštrukt "try {} catch(e) {}" je povolený ako skratka pre "try {} catch(e: haxe.Exception) {}".
  • Do prekladača eval bola pridaná podpora SSL.
  • Cieľový JVM sa už nepovažuje za experimentálny.
  • Pre protokol Language Server Protocol bola pridaná podpora pre funkcie „Goto Implementation“ a „Find references“.
  • Vylepšené pomenovanie dočasných lokálnych premenných vo vygenerovanom kóde. Odstránené nadbytočné „návrat“; vo funkciách šípok bez návratovej hodnoty.
  • Prístupové kombinácie (získať, predvolené) sú povolené v poliach (len getter, predvolené správanie priradenia).
  • Povoliť operátory zvýšenia a zníženia pre polia abstraktné typy.
  • Vylepšené vkladanie cyklov for pomocou anonymných iterátorov.
  • js: Vylepšená implementácia StringMap pre ES5.
  • js: Generovanie let premenných bolo pridané do možnosti kompilátora „-D js-es=6“, generovanie tried ES6 bolo vylepšené.
  • lua: optimalizovaný "StringIterator", vylepšené spracovanie chýb.
  • php: Optimalizované "Std.isOfType" pre základné typy.
  • php: Generované polia teraz implementujú natívne rozhrania „Iterator“, „IteratorAggregate“, „Countable“.
  • cs: Pridané metadáta „@:assemblyMeta“ a „@:assemblyStrict“.
  • python: pridaná implementácia "__contains__" do anonymných objektov
    a "__getitem__", čo im umožňuje použiť ich ako slovníky vo vygenerovanom kóde.

  • jvm: Výrazne zlepšený výkon vďaka novému spôsobu prístupu k typizovaným funkciám a generovaniu ďalších rozhraní v prípadoch, keď sa objekty používajú ako anonymné štruktúry (je zabránené dynamickému vyhľadávaniu vlastností):
    Vydanie programovacieho jazyka Haxe 4.1

Vylepšenia v štandardnej knižnici:

  • Pridaná funkcia "Array.contains".
  • Pridaný "Array.keyValueIterator", ktorý implementuje iteráciu kľúč-hodnota pre polia ("for (key => hodnota v poli)").
  • Pridaný typ obmedzenia „haxe.Constraints.NotVoid“.
  • Do triedy „Lambda“ boli pridané funkcie „findIndex“ a „foldi“.
  • Implementovaný "prístup do poľa" (prístup cez "arr[i]") a iterácia kľúča a hodnoty pre "haxe.ds.HashMap".
  • jvm: Implementované verzie "StringMap", "sys.thread.Lock", "sys.thread.Thread" špecifické pre JVM.
  • java/jvm: Použité natívne implementácie „MD5“, „SHA-1“ a „SHA-256“ pre moduly „haxe.crypto“.
  • makro: Pridané "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strict" režim sa teraz považuje za jednovláknový; pridaný režim „StrictThreaded“.
  • „Std.is“ bolo zastarané v prospech „Std.isOfType“.
  • Pridané upozornenie pri použití lokálnych premenných bez hodnôt v uzáveroch.
  • js: „netypizovaný __js__(kód, argumenty)“ je zastaraný, nahradený výrazom „js.Syntax.code(kód, argumenty)“.
  • php/neko: „neko.Web“ a „php.Web“ boli zastarané a neskôr budú presunuté do knižnice „hx4compat“.

V ďalšom vydaní sú plánované:

  • Vylepšenia správcu balíkov haxelib.
  • Asynchrónny systém založený na API libuv.
  • Korutíny.
  • Deklarovanie modulárnych statických funkcií a premenných bez vytvárania tried (už dostupné v nočných zostavách).

Zdroj: opennet.ru

Pridať komentár