Eldono de la programlingvo Haxe 4.2

Eldono de la ilaro Haxe 4.2 haveblas, kiu inkluzivas la samnoman mult-paradigma altnivelan programlingvon kun forta tajpado, kruckompililon kaj norman bibliotekon de funkcioj. La projekto subtenas tradukadon al C++, HashLink/C, JavaScript, C#, Java, PHP, Python kaj Lua, same kiel kompilon al JVM, HashLink/JIT, Flash kaj Neko-bajtokodo, kun aliro al la indiĝenaj kapabloj de ĉiu celplatformo. La kompilkodo estas distribuita sub la licenco GPLv2, kaj la norma biblioteko kaj la virtualaj maŝinoj HashLink kaj Neko evoluigitaj por Haxe estas licencitaj sub la MIT-licenco.

La lingvo estas esprimorientita kun forta tajpado. Objekt-orientitaj, senmarkaj kaj funkciaj programaj teknikoj estas subtenataj. La sintakso de Haxe estas proksima al ECMAScript kaj etendas ĝin kun ecoj kiel ekzemple senmova tajpado, aŭto-speca inferenco, padronkongruo, senmarkaj, iterator-bazitaj por bukloj, AST-makrooj, GADT (Ĝeneraligitaj Algebraj Datumoj-Tipoj), abstraktaj tipoj, anonimaj strukturoj, simpligitaj. difinoj tabeloj, esprimoj por kondiĉa kompilo, alfiksado de metadatenoj al kampoj, klasoj kaj esprimoj, interpolado de ĉenoj ("Mia nomo estas $nomo"), tajpparametroj ("nova Ĉef("foo")') kaj multe pli. class Test { static function main() { final people = [ "Elizabeth" => "Programado", "Joel" => "Dezajno" ]; for (nomo => laboro en homoj) { trace(‘$nomo faras $laboron por vivteni!’); } } }

Novaj funkcioj en versio 4.2:

  • Deklari senmovajn variablojn kaj funkciojn ĉe la modula nivelo, sen neceso envolvi ilin en klaso.
  • Subteno por "klasikaj" abstraktaj klasoj kaj funkcioj.
  • Indiĝena efektivigo de variadikaj funkcioj por ĉiuj celplatformoj (haxe.Rest) kaj aldono de la argument-vastigfunkciigisto "f(... array)".
  • Efektivigo de eventobuklo por individuaj fadenoj ("sys.thread.Thread.events").
  • "@:inheritDoc" metadatenoj por heredi tipan/kampan dokumentadon.
  • Subteno de superŝarĝado de metodoj por eksteraj metodoj sur ĉiuj celplatformoj.
  • Plusendante la konstruktilon sub ĝia tipo al la abstraktaĵo uzante la "@:forward.new" metadatenojn.
  • Aldonita "EIs" konstrukciisto al "haxe.macro.Expr".
  • Kapablo fari abstraktan tipan varianton kun "@:forward.variance".
  • Reprezento de la "Ajna" tipo kiel "Dinamika" dum unuigado de variado.
  • Aldonis kelkajn bazajn esceptspecojn al la pakaĵo "haxe.exceptions".
  • Subteno por alfiksi metadatenojn dum deklarado de variabloj.
  • Funkcio "StringTools.unsafeCharAt" uzata por ripeto de ŝnuroj.
  • eval (interpretisto): Aldonitaj ligadoj al "libuv" en pako "eval.luv".
  • eval: ligadoj al indiĝenaj efektivigoj de "Int64" kaj "UInt64" per la "eval.integers" pakaĵo.
  • cs: UDP-socket efektivigo.
  • cs: "cs.Syntax" modulo por enliniaj enmetoj de C#-kodo.
  • jvm: Aldonis la flagon "-D jvm.dynamic-level=x" por kontroli la nombron da generitaj optimumigoj por dinamika kodo. 0 = neniu, 1 = kampa legado/skriba optimumigo, 2 = metodo fermoj ĉe kompiltempo.
  • java, jvm: Subteno por la flago "--java-lib ".
  • python: surfadenigado de API-efektivigo.

Ĝeneralaj plibonigoj:

  • "expr is SomeType" ne postulas envolvadon inter krampoj.
  • Pliigita prioritato por "@:uzante" tipaj etendoj.
  • Permesas la uzon de senmovaj tipaj etendaĵoj per "super".
  • Kapablo agordi metadatenojn al kampoj "@:noDoc".
  • La abstrakta tipo "Mapo" fariĝas transitiva.
  • Subteno por "@:native" sur enumkonstrukciistoj.
  • Subteno por "@:using" sur tipdeklaroj ("typedefs").
  • Plurliniaj eraroj uzas "..." kiel prefikson por postaj linioj.
  • Tipinferenco estis reverkita, anonimaj strukturoj estas pli bone konvertitaj al eksplicitaj tipoj kaj "fermitaj" kiam la funkcio finiĝas.
  • Deduktante la tipon de funkcioj sen argumentoj kiel "()->..." anstataŭ "Void->...".
  • La ŝlosilvorto "funkcio" estas permesita kiel paknomo.
  • Plibonigita enlinio de objektoj.
  • cs: Aldonita subteno por .NET 5.0.
  • cpp: Subteno por denaskaj konstrukciistoj por eksteraj klasoj.
  • php: Aldonita "php.Syntax.customArrayDecl" por deklari denaskan tabelon.
  • php: Ĝisdatigitaj eksteraj metodoj por diversaj funkcioj kaj klasoj.
  • php: Optimumigita efektivigo de anonimaj strukturoj.
  • hl: Saltu kompilon se ne estas ŝanĝoj al moduloj.
  • lua: Uzanta "hx-lua-simdjson" por analizi json.
  • jvm: Reduktita CPU-ŝarĝo en la efektivigo "sys.thread.Lock".
  • js: Plibonigita kongruo kun Google Closure Compiler.
  • Nula Sekureco: Konsideru "@:nullSafety(Off)" kiam oni deklaras variablojn: "var @:nullSafety(Off) v".

Ankaŭ, la aldono al la redaktilo VSCode estis ĝisdatigita al la nova versio de la kompililo, en kiu sugestoj aperis kun la generacio de mankantaj kampoj de interfacoj, simplaj kaj abstraktaj klasoj, same kiel proprietaj metodoj.

fonto: opennet.ru

Aldoni komenton