Haxe programmeerimiskeele versioon 4.2 on välja antud

Välja on Haxe 4.2, mis sisaldab sama nime kandvat mitme paradigma keskset kõrgemat programmeerimiskeelt rangete tüüpide süsteemiga, kröös-kompileerijat ja standardfunktsioonide raamatukogu. Projekt toetab tõlget C++-sse, HashLinki/C-sse, JavaScripti, C#-sse, Java-sse, PHP-sse, Pythonisse ja Luasse, samuti kompileerimist JVM-i baitkoodi, HashLinki/JIT-i, Flashi ja Neko, juurdepääsuga iga sihtplatvormi natiivsetele võimalustele. Kompilaatori kood on litsentseeritud GPLv2 all, samas kui standardraamatukogu ja arendatavad Haxe virtuaalmasinad HashLink ja Neko on litsentseeritud MIT all.

Keel on väljenduspõhine ja rangelt tüpiseeritud. Toetatakse objekt-orienteeritud, üldiste ja funktsionaalse programmeerimise lähenemisi. Haxe süntaks sarnaneb ECMAScriptiga ja laiendab seda selliste võimalustega nagu staatiline tüübisüsteem, automaatne tüübihindamine, mustrite sobitamine, geneerilised tüübid, itereerijatel põhinev "for"-tsükkel, AST-makrod, GADT (üldised algebralised andmetüübid), abstraktsed tüübid, anonüümsed struktuurid, lihtsustatud massiivide määratlemine, tingimusliku kompileerimise avaldised, metaandmete kinnitamine väljadele, klassidele ja avaldistele, stringide interpolatsioon (‘Minu nimi on $name’), tüüpide parameetrid (‘new Main<String>(«foo»)’) ja palju muud. class Test { static function main() { final people = [ «Elizabeth» => «Programming», «Joel» => «Design» ]; for (name => job in people) { trace(‘$name töötab $job’); } } }

Uued omadused versioonis 4.2:

  • Statiliste muutujate ja funktsioonide määramine mooduli tasandil, ilma vajaduseta neid klassi pakkida.
  • Toetatakse "klassikalisi" abstraktseid klasse ja funktsioone.
  • Natiivne variatiivsete funktsioonide rakendus kõikidel sihtplatvormidel (haxe.Rest) ja argumentide lahtiütlemise operaatori „f(…array)” lisamine.
  • Sündmuste tsükli (event loop) rakendamine eraldi lõimedeks ("sys.thread.Thread.events").
  • Metadatud "@:inheritDoc" tüüpide/valdkondade dokumentatsiooni pärimise jaoks.
  • Meetodite ülekoormuse tugi välistele meetoditele kõikidel sihtplatvormidel.
  • Üleviimine abstraktse konstruktori, mis põhineb selle tüübil, metadatud "@:forward.new" kaudu.
  • "haxe.macro.Expr" on lisatud konstruktorkl"EIs".
  • Võimalus muuta abstraktne tüüp variantseks "@:forward.variance" abil.
  • Tüübi "Any" esitamine "Dynamic"-ina variantide ühtlustamisel.
  • Paketti "haxe.exceptions" on lisatud mõned põhieksitstüübid.
  • Muutuja deklareerimisel metadatud kinnitamise tugi.
  • Funktsioon "StringTools.unsafeCharAt", mis on kasutusel stringide iteratsioonis.
  • eval (tõlgendaja): paketti "eval.luv" on lisatud "libuv"-le seotud teid.
  • eval: paketti "eval.integers" kaudu originaalrealiseerimiste "Int64" ja "UInt64" seosed.
  • cs: UDP soketi rakendamine.
  • cs: moodul "cs.Syntax" C#-koodi inline-sisestamiste jaoks.
  • jvm: Lisatud lipp "-D jvm.dynamic-level=x" dünaamilise koodi genereeritud optimeerimiste arvu kontrollimiseks. 0 = puudub, 1 = väljade lugemise/kirjutamise optimeerimine, 2 = meetodite sulgemised kompileerimise ajal.
  • java, jvm: Toetatakse lippu «—java-lib ».
  • python: rakendatakse threading API-d.

Üldised täiustused:

  • «expr is SomeType» ei vaja sulgudesse panemist.
  • Tüübi laienduste «@:using» prioriteeti on tõstetud.
  • Statiliste tüüpide laienduste kasutamine läbi «super» on lubatud.
  • Võimalus määrata «@:noDoc» välja metainformatsiooni.
  • Abstraktne tüüp «Map» on muudetud transitiivseks.
  • Toetatakse «@:native» loendite konstruktorites.
  • Toetatakse «@:using» tüübide väljakuulutustes («typedefs»).
  • Mitmerealised vead kasutavad «…» eelneva rida prefiksina.
  • Tüüpide väljund on ümber disainitud, anonüümsed struktuurid muudetakse paremini selgeteks tüüpideks ja «kinni» püütakse funktsiooni lõpetamisel.
  • Funktsioonide tüübiväljund ilma argumentideta nagu «()-›…» asemel «Void-›…».
  • Märksõna «function» on lubatud paketi nimeks.
  • Objektide sisseehitus (inlining) on parandatud.
  • cs: Lisatud toetus .NET 5.0-le.
  • cpp: Toetatakse väliste klasside loomulikke konstruktoreid.
  • php: Lisatud «php.Syntax.customArrayDecl» loomuliku massiivi kuulutamiseks.
  • php: Uuendatud väliseid meetodeid (externs) erinevatele funktsioonidele ja klassidele.
  • php: Anonüümsete struktuuride rakendust on optimeeritud.
  • hl: Kompileerimiskäivitus, kui moodulites pole muudatusi.
  • lua: 'hx-lua-simdjson' kasutamine JSON-i analüüsimiseks.
  • jvm: CPU koormust on vähendatud 'sys.thread.Lock' rakenduses.
  • js: Parandatud ühilduvust Google Closure Compileriga.
  • Null Safety: Muutujate deklaratsiooni korral arvesse võetud '@:nullSafety(Off)': 'var @:nullSafety(Off) v'.

Uue kompilaatori versiooniga on värskendatud ka VSCode redigeerija laiendust, mis sisaldab näpunäiteid puuduolevate liideste, lihtsate ja abstraktsete klasside ning omaduste meetodite genereerimiseks.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster