Programmeerimiskeele Haxe 4.2 väljalase

Saadaval on Haxe 4.2 tööriistakomplekti väljalase, mis sisaldab samanimelist mitmeparadigmalist kõrgetasemelist programmeerimiskeelt koos tugeva tippimisega, ristkompilaatorit ja standardset funktsioonide teeki. Projekt toetab tõlget C++, HashLink/C, JavaScripti, C#, Java, PHP, Python ja Lua keeltesse, samuti kompileerimist JVM-i, HashLink/JIT-i, Flashi ja Neko baitkoodidesse, millel on juurdepääs iga sihtplatvormi natiivsetele võimalustele. Kompilaatori koodi levitatakse GPLv2 litsentsi all ning standardne raamatukogu ning Haxe jaoks välja töötatud HashLink ja Neko virtuaalmasinad on litsentsitud MIT litsentsi alusel.

Keel on väljenduskeskne ja tugeva trükkimisega. Toetatakse objektorienteeritud, üldisi ja funktsionaalseid programmeerimistehnikaid. Haxe süntaks on lähedane ECMAScriptile ja laiendab seda selliste funktsioonidega nagu staatiline tippimine, automaatse tüübi järeldamine, mustrite sobitamine, geneerilised meetodid, iteraatoripõhine silmuste jaoks, AST-makrod, GADT (generaliseeritud algebralised andmetüübid), abstraktsed tüübid, anonüümsed struktuurid, lihtsustatud definitsioonimassiivid, avaldised tingimuslikuks kompileerimiseks, metaandmete lisamine väljadele, klassidele ja avaldistele, stringide interpoleerimine ('Minu nimi on $nimi'), tüübiparameetrid ('uus Main("foo")') ja palju muud. class Test { staatiline funktsioon main() { final people = [ "Elizabeth" => "Programmeerimine", "Joel" => "Disain" ]; for (nimi => töö inimestes) { trace ('$nimi teeb $tööd elatise nimel!'); } } }

Uued funktsioonid versioonis 4.2:

  • Staatiliste muutujate ja funktsioonide deklareerimine mooduli tasemel, ilma et oleks vaja neid klassi mässida.
  • "Klassikaliste" abstraktsete klasside ja funktsioonide tugi.
  • Variadic funktsioonide loomulik juurutamine kõikidele sihtplatvormidele (haxe.Rest) ja argumendilaiendusoperaatori “f(...massiivi)” lisamine.
  • Sündmustsükli rakendamine üksikute lõimede jaoks (“sys.thread.Thread.events”).
  • "@:inheritDoc" metaandmed tüübi/välja dokumentatsiooni pärimiseks.
  • Väliste meetodite meetodi ülekoormamise tugi kõigil sihtplatvormidel.
  • Selle tüübi aluseks oleva konstruktori edastamine abstrakti kasutades metaandmeid @:forward.new.
  • Lisatud "haxe.macro.Expr" konstruktor "EIs".
  • Võimalus teha abstraktset tüüpi varianti "@:forward.variance"-ga.
  • Tüübi „Igasugune” esitamine kui „dünaamiline” variatsiooni ühendamisel.
  • Paketi "haxe.exceptions" on lisatud mõned põhilised eranditüübid.
  • Tugi metaandmete lisamiseks muutujate deklareerimisel.
  • Stringi iteratsiooniks kasutatav funktsioon "StringTools.unsafeCharAt".
  • eval (tõlk): Pakendis "eval.luv" lisatud "libuv" köited.
  • eval: seosed "Int64" ja "UInt64" natiivsete rakendustega paketi "eval.integers" kaudu.
  • cs: UDP-pesa rakendamine.
  • cs: "cs.Syntax" moodul C# koodi sisestamiseks.
  • jvm: lisati lipp "-D jvm.dynamic-level=x", et juhtida dünaamilise koodi jaoks loodud optimeerimiste arvu. 0 = puudub, 1 = välja lugemise/kirjutamise optimeerimine, 2 = meetodi sulgemine kompileerimise ajal.
  • java, jvm: lipu "--java-lib " tugi.
  • python: keermestamise API juurutamine.

Üldised täiustused:

  • "expr is SomeType" ei nõua sulgudesse mähkimist.
  • Suurem prioriteet "@:using" tüüpi laiendite jaoks.
  • Võimaldab kasutada staatilist tüüpi laiendeid "super" kaudu.
  • Võimalus määrata metaandmeid @:noDoc väljadele.
  • Abstraktne tüüp "Kaart" on muudetud transitiivseks.
  • "@:native" tugi enum-konstruktorites.
  • "@:using" tugi tüübideklaratsioonides ("typedefs").
  • Mitmerealised vead kasutavad järgmiste ridade eesliitena "...".
  • Tüübi järeldused on ümber töödeldud, anonüümsed struktuurid teisendatakse paremini selgesõnalisteks tüüpideks ja suletakse, kui funktsioon on lõpetatud.
  • Argumentideta funktsioonide tüübi tuletamine "()->..." asemel "Void->...".
  • Märksõna "funktsioon" on paketinimena lubatud.
  • Objektide täiustatud sisestus.
  • cs: lisatud tugi .NET 5.0-le.
  • cpp: väliste klasside natiivsete konstruktorite tugi.
  • php: natiivse massiivi deklareerimiseks lisati "php.Syntax.customArrayDecl".
  • php: värskendatud välised meetodid erinevate funktsioonide ja klasside jaoks.
  • php: anonüümsete struktuuride optimeeritud juurutamine.
  • hl: jätke koostamine vahele, kui moodulites pole muudatusi.
  • lua: jsoni sõelumiseks kasutatakse käsku "hx-lua-simdjson".
  • jvm: vähendatud protsessori koormus rakenduses "sys.thread.Lock".
  • js: täiustatud ühilduvus Google Closure Compileriga.
  • Null-ohutus: arvestage muutujate deklareerimisel "@:nullSafety(Off)": "var @:nullSafety(Off) v".

Samuti on VSCode redaktori täiendus uuendatud kompilaatori uuele versioonile, millesse on ilmunud vihjed puuduvate liideste väljade, lihtsate ja abstraktsete klasside ning atribuutmeetodite genereerimisega.

Allikas: opennet.ru

Lisa kommentaar