A Haxe 4.1 programozási nyelv kiadása

Elérhető eszköztár kiadása Haxe 4.1, amely magában foglalja 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énykönyvtá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. Fordító kód forgalmazza a GPLv2 licenc alatt, valamint a Haxe számára kifejlesztett szabványos könyvtár és virtuális gépek HashLink и neko az MIT engedélye alapján.

A nyelv az kifejezés-orientált erős gépeléssel. Objektumorientált, általános és funkcionális programozási technikák támogatottak. A Haxe szintaxis közel áll az ECMAScript és kitágul jellemzői, mint például statikus gépelés, autotípus-következteté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 tömbdefiníciók, feltételes fordítási kifejezések, metaadatok csatolása mezőkhöz , osztályok és kifejezések, karakterlánc-interpoláció („'A nevem $name”), típusparaméterek ('új fő ("foo")') és sokkal több.

osztály teszt {
static function main() {
végső emberek = [
"Elizabeth" => "Programozás",
"Joel" => "Dizájn"
];

for (név => állás az emberekben) {
trace('$name a megélhetésért $munkát végez!');
}
}
}

Új funkciók a 4.1-es verzióban:

  • Hozzáadott farok rekurzió optimalizálása.
  • Új, egységes API hozzáadva a kivételkezeléshez.
  • A "try {} catch(e) {}" konstrukció megengedett a "try {} catch(e: haxe.Exception) {}" rövidítéseként.
  • SSL támogatás hozzáadva az eval interpreterhez.
  • A cél JVM már nem tekinthető kísérletinek.
  • A Language Server Protocol esetében a „Goto Implementation” és a „Find references” funkciók támogatása hozzáadásra került.
  • Az ideiglenes helyi változók továbbfejlesztett elnevezése a generált kódban. A redundáns "return" eltávolítva; visszatérési érték nélküli nyílfüggvényekben.
  • Hozzáférési kombinációk (get, alapértelmezett) megengedettek a mezőkön (csak getter, alapértelmezett hozzárendelési viselkedés).
  • Engedélyezze az operátorok növelését és csökkentését a mezőkben absztrakt típusok.
  • A for ciklusok továbbfejlesztett beillesztése névtelen iterátorok segítségével.
  • js: Továbbfejlesztett StringMap implementáció az ES5 számára.
  • js: A „-D js-es=6” fordító opcióhoz lett hozzáadva a let változók generálása, az ES6 osztályok generálása javult.
  • lua: "StringIterator" optimalizálva, hibakezelés javítva.
  • php: Az alaptípusokhoz optimalizált "Std.isOfType".
  • php: A generált tömbök immár az „Iterator”, „IteratorAggregate”, „Countable” natív interfészeket valósítják meg.
  • cs: „@:assemblyMeta” és „@:assemblyStrict” metaadatok hozzáadva.
  • python: hozzáadta a "__contains__" megvalósítását az anonim objektumokhoz
    és "__getitem__", amely lehetővé teszi, hogy szótárként használják őket a generált kódban.

  • jvm: Jelentősen megnövekedett teljesítmény a beírt függvények elérésének új módjának és további interfészek létrehozásának köszönhetően olyan esetekben, amikor az objektumokat névtelen struktúraként használják (a dinamikus tulajdonságkeresés megakadályozva):
    A Haxe 4.1 programozási nyelv kiadása

Fejlesztések a szabványos könyvtárban:

  • "Array.contains" funkció hozzáadva.
  • Hozzáadott "Array.keyValueIterator", amely kulcs-érték iterációt valósít meg a tömbök számára ("for (key => value in array)").
  • Hozzáadott kényszertípus: "haxe.Constraints.NotVoid".
  • A „findIndex” és a „foldi” függvény hozzáadásra került a „Lambda” osztályhoz.
  • Megvalósított "tömb hozzáférés" (hozzáférés "arr[i]"-en keresztül) és kulcs-érték iteráció a "haxe.ds.HashMap" számára.
  • jvm: A "StringMap", "sys.thread.Lock", "sys.thread.Thread" implementált JVM-specifikus verziói.
  • java/jvm: Az "MD5", "SHA-1" és "SHA-256" natív implementációi a "haxe.crypto" modulokhoz.
  • makró: "haxe.macro.Context.containsDisplayPosition(pos)" hozzáadva.
  • nullsafety: A "Strict" mód mostantól egyszálasként kezelendő; hozzáadva a "StrictThreaded" módot.
  • A "Std.is" elavult, a "Std.isOfType" helyett.
  • Figyelmeztetés hozzáadva, ha helyi változókat használ a lezárásokban értékek nélkül.
  • js: az "untyped __js__(code, args)" elavult, helyébe a "js.Syntax.code(code, args)" lép.
  • php/neko: A "neko.Web" és a "php.Web" elavult, és később átkerül a "hx4compat" könyvtárba.

A következő kiadásban tervezett:

  • Csomagkezelő fejlesztések haxelib.
  • Aszinkron rendszer API alapú libuv.
  • Korutinok.
  • Moduláris statikus függvények és változók deklarálása osztályok létrehozása nélkül (már elérhető éjszakai buildekben).

Forrás: opennet.ru

Hozzászólás