A Haxe 4.2 programozási nyelv kiadása

Elérhető a Haxe 4.2 eszközkészlet kiadása, amely tartalmazza az azonos nevű, többparadigmás, magas szintű programozási nyelvet, erős gépeléssel, egy keresztfordítót és egy szabványos függvénytárat. A projekt támogatja a fordítást C++, HashLink/C, JavaScript, C#, Java, PHP, Python és Lua nyelvekre, valamint JVM-re, HashLink/JIT-re, Flash-re és Neko bájtkódra fordítást, az egyes célplatformok natív képességeihez való hozzáféréssel. A fordítókódot a GPLv2 licenc alatt terjesztik, a szabványos könyvtárat, valamint a Haxe számára kifejlesztett HashLink és Neko virtuális gépeket pedig az MIT licenc alatt.

A nyelv kifejezés-orientált, erős gépelés. Objektumorientált, általános és funkcionális programozási technikák támogatottak. A Haxe szintaxisa közel áll az ECMAScript-hez, és olyan funkciókkal bővíti ki, mint például statikus gépelés, automatikus típuskövetés, mintaillesztés, általánosságok, iterátor alapú ciklusokhoz, AST makrók, GADT (Általános algebrai adattípusok), absztrakt típusok, névtelen struktúrák, egyszerűsített definíciós tömbök, kifejezések feltételes fordításhoz, metaadatok csatolása mezőkhöz, osztályokhoz és kifejezésekhez, karakterlánc-interpoláció ('A nevem $name'), típusparaméterek ('new Main("foo")') és még sok más. class Teszt { static function main() { final people = [ "Elizabeth" => "Programozás", "Joel" => "Design" ]; for (név => állás az emberekben) { trace(‘$név a megélhetésért $munkát végez!'); } } }

Új funkciók az 4.2-s verzióban:

  • Statikus változók és függvények deklarálása modul szinten, anélkül, hogy osztályba kellene csomagolni őket.
  • A „klasszikus” absztrakt osztályok és függvények támogatása.
  • A variadic függvények natív megvalósítása minden célplatformon (haxe.Rest) és az „f(...array)” argumentumbővítő operátor hozzáadása.
  • Eseményhurok megvalósítása az egyes szálakhoz („sys.thread.Thread.events”).
  • "@:inheritDoc" metaadatok a típus/mező dokumentáció örökléséhez.
  • Módszer túlterhelés támogatása külső metódusokhoz minden célplatformon.
  • A típusa mögött álló konstruktor továbbítása az absztraktba a „@:forward.new” metaadatok használatával.
  • "EIs" konstruktor hozzáadva a "haxe.macro.Expr"-hez.
  • Képes absztrakt típusváltozat készítésére "@:forward.variance"-val.
  • Az „Any” típus „dinamikus” megjelenítése a variáció egyesítésekor.
  • Néhány alapvető kivételtípus hozzáadva a "haxe.exceptions" csomaghoz.
  • Támogatás a metaadatok csatolásához változók deklarálásakor.
  • A "StringTools.unsafeCharAt" függvény a karakterlánc iterációjához használatos.
  • eval (tolmács): kötések hozzáadva a "libuv"-hoz az "eval.luv" csomagban.
  • eval: kötések az "Int64" és az "UInt64" natív megvalósításaihoz az "eval.integers" csomagon keresztül.
  • cs: UDP socket megvalósítás.
  • cs: „cs.Syntax” modul a C# kód beillesztéséhez.
  • jvm: A „-D jvm.dynamic-level=x” jelző hozzáadása a dinamikus kód generált optimalizálásainak számának vezérléséhez. 0 = nincs, 1 = mező olvasási/írási optimalizálása, 2 = metóduslezárások fordítási időben.
  • java, jvm: A "--java-lib " jelző támogatása.
  • python: szálfűző API megvalósítás.

Általános fejlesztések:

  • Az "expr is SomeType" nem igényel zárójelben történő tördelést.
  • Megnövelt prioritás a "@:using" típusú kiterjesztéseknél.
  • Lehetővé teszi statikus típusú kiterjesztések használatát a "szuper"-en keresztül.
  • Lehetőség a metaadatok „@:noDoc” mezőkre történő beállítására.
  • A „Térkép” absztrakt típus tranzitív.
  • A "@:native" támogatása az enum konstruktorokon.
  • A "@:using" támogatása a típusdeklarációknál ("typedefs").
  • A többsoros hibák a "..." előtagot használják a következő sorokhoz.
  • A típuskövetkeztetést átdolgozták, az anonim struktúrák jobban konvertálhatók explicit típusokká, és „bezáródnak”, amikor a funkció befejeződik.
  • Az argumentumok nélküli függvények típusának kikövetkeztetése "()->..." helyett "Vid->...".
  • A "function" kulcsszó megengedett csomagnévként.
  • Az objektumok jobb beillesztése.
  • cs: Hozzáadott támogatás a .NET 5.0-hoz.
  • cpp: Natív konstruktorok támogatása külső osztályokhoz.
  • php: "php.Syntax.customArrayDecl" hozzáadva a natív tömb deklarálásához.
  • php: Frissített külső metódusok különféle függvényekhez és osztályokhoz.
  • php: Névtelen struktúrák optimalizált megvalósítása.
  • hl: Az összeállítás kihagyása, ha a modulokon nincs változás.
  • lua: A „hx-lua-simdjson” használata a json elemzéséhez.
  • jvm: Csökkentett CPU terhelés a "sys.thread.Lock" megvalósításban.
  • js: Továbbfejlesztett kompatibilitás a Google Closure Compilerrel.
  • Null Safety: Vegye figyelembe a "@:nullSafety(Off)" értéket a változók deklarálásakor: "var @:nullSafety(Off) v".

Ezenkívül a VSCode szerkesztő kiegészítése frissítve lett a fordító új verziójára, amelyben tippek jelentek meg az interfészek hiányzó mezőinek, egyszerű és absztrakt osztályok, valamint tulajdonság metódusok generálásával.

Forrás: opennet.ru

Hozzászólás