Izid programskega jezika Haxe 4.1

Na voljo izdaja kompleta orodij Haxe 4.1, ki vključuje istoimenski visokonivojski programski jezik z več paradigmami z močnim tipkanjem, navzkrižnim prevajalnikom in standardno knjižnico funkcij. Projekt podpira prevajanje v C++, HashLink/C, JavaScript, C#, Java, PHP, Python in Lua, kot tudi kompilacijo v JVM, HashLink/JIT, Flash in Neko bytecode, z dostopom do izvornih zmogljivosti vsake ciljne platforme. Koda prevajalnika distributer pod licenco GPLv2 ter standardne knjižnice in virtualnih strojev, razvitih za Haxe HashLink и Neko pod licenco MIT.

Jezik je izrazno usmerjeni z močnim tipkanjem. Podprte so tehnike objektno usmerjenega, splošnega in funkcionalnega programiranja. Sintaksa Haxe je blizu ECMAScriptu in širi njegove funkcije, kot so statično tipkanje, sklepanje o samodejnem tipu, ujemanje vzorcev, generiki, zanke for na osnovi iteratorjev, makri AST, GADT (generalni algebraični podatkovni tipi), abstraktni tipi, anonimne strukture, poenostavljene definicije matrik, izrazi pogojnega prevajanja, pripenjanje metapodatkov v polja , razredi in izrazi, interpolacija nizov (»'Ime mi je $name'«), parametri tipa ('novo glavno ("foo")') in veliko več.

razred Test {
statična funkcija main() {
končni ljudje = [
"Elizabeth" => "Programiranje",
"Joel" => "Oblikovanje"
];

za (ime => delo v ljudeh) {
trace('$name opravlja $job za preživetje!');
}
}
}

Nove funkcije v različici 4.1:

  • Dodana optimizacija repne rekurzije.
  • Dodan nov poenoten API za obravnavanje izjem.
  • Konstrukt "try {} catch(e) {}" je dovoljen kot okrajšava za "try {} catch(e: haxe.Exception) {}".
  • Tolmaču eval dodana podpora za SSL.
  • Ciljni JVM se ne šteje več za poskusnega.
  • Za protokol jezikovnega strežnika je bila dodana podpora za funkciji »Goto Implementation« in »Find references«.
  • Izboljšano poimenovanje začasnih lokalnih spremenljivk v ustvarjeni kodi. Odstranjen odvečni "return;" v puščičnih funkcijah brez vrnjene vrednosti.
  • Kombinacije dostopa (get, default) so dovoljene na poljih (le getter, privzeto vedenje dodelitve).
  • Dovoli operatorje povečanja in zmanjšanja za polja abstraktne vrste.
  • Izboljšano vstavljanje zank for z uporabo anonimnih iteratorjev.
  • js: Izboljšana implementacija StringMap za ES5.
  • js: generiranje spremenljivk let je bilo dodano možnosti prevajalnika “-D js-es=6”, generiranje razredov ES6 je bilo izboljšano.
  • lua: "StringIterator" optimiziran, obravnavanje napak izboljšano.
  • php: Optimiziran "Std.isOfType" za osnovne vrste.
  • php: Ustvarjena polja zdaj izvajajo izvorne vmesnike »Iterator«, »IteratorAggregate«, »Countable«.
  • cs: Dodani metapodatki "@:assemblyMeta" in "@:assemblyStrict".
  • python: dodana implementacija "__contains__" anonimnim objektom
    in "__getitem__", kar omogoča njihovo uporabo kot slovarje v ustvarjeni kodi.

  • jvm: Bistveno izboljšana zmogljivost zahvaljujoč novemu načinu dostopa do vnesenih funkcij in generiranju dodatnih vmesnikov v primerih, ko se objekti uporabljajo kot anonimne strukture (dinamično iskanje lastnosti je preprečeno):
    Izid programskega jezika Haxe 4.1

Izboljšave v standardni knjižnici:

  • Dodana funkcija "Array.contains".
  • Dodan "Array.keyValueIterator", ki implementira iteracijo ključ-vrednost za nize ("za (ključ => vrednost v nizu)").
  • Dodan tip omejitve "haxe.Constraints.NotVoid".
  • Funkciji »findIndex« in »foldi« sta bili dodani razredu »Lambda«.
  • Implementiran »matrični dostop« (dostop prek »arr[i]«) in iteracija ključ-vrednost za »haxe.ds.HashMap«.
  • jvm: Implementirane različice »StringMap«, »sys.thread.Lock«, »sys.thread.Thread«, specifične za JVM.
  • java/jvm: uporabljene izvorne izvedbe »MD5«, »SHA-1« in »SHA-256« za module »haxe.crypto«.
  • makro: dodan "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strogi" način se zdaj obravnava kot enoniten; dodan način "StrictThreaded".
  • »Std.is« je bil opuščen v korist »Std.isOfType«.
  • Dodano opozorilo pri uporabi lokalnih spremenljivk brez vrednosti v zaprtjih.
  • js: "untyped __js__(code, args)" je zastarel, nadomeščen z "js.Syntax.code(code, args)".
  • php/neko: »neko.Web« in »php.Web« sta bila opuščena in bosta pozneje premaknjena v knjižnico »hx4compat«.

V naslednji izdaji so načrtovani:

  • Izboljšave upravitelja paketov hakselib.
  • Temelji na API-ju asinhronega sistema libuv.
  • Korutine.
  • Deklaracija modularnih statičnih funkcij in spremenljivk brez ustvarjanja razredov (že na voljo v nočnih zgradbah).

Vir: opennet.ru

Dodaj komentar