Vrystelling van die programmeertaal Haxe 4.2

'n Vrystelling van die Haxe 4.2 gereedskapstel is beskikbaar, wat die multi-paradigma hoëvlak programmeertaal met dieselfde naam met sterk tik, 'n kruisversteller en 'n standaard biblioteek van funksies insluit. Die projek ondersteun vertaling na C++, HashLink/C, JavaScript, C#, Java, PHP, Python en Lua, sowel as samestelling na JVM, HashLink/JIT, Flash en Neko bytecode, met toegang tot die inheemse vermoëns van elke teikenplatform. Die samestellerkode word onder die GPLv2-lisensie versprei, en die standaardbiblioteek en die HashLink- en Neko-virtuele masjiene wat vir Haxe ontwikkel is, word onder die MIT-lisensie gelisensieer.

Die taal is uitdrukkingsgerig met sterk tik. Objekgeoriënteerde, generiese en funksionele programmeringstegnieke word ondersteun. Haxe se sintaksis is naby ECMAScript en brei dit uit met kenmerke soos statiese tik, outotipe afleiding, patroonpassing, generiese, iterator-gebaseerd vir lusse, AST makro's, GADT (Generalized Algebraic Data Types), abstrakte tipes, anonieme strukture, vereenvoudig definisies skikkings, uitdrukkings vir voorwaardelike samestelling, heg van metadata aan velde, klasse en uitdrukkings, string interpolasie ('My naam is $naam'), tipe parameters ('nuwe Hoof("foo")') en nog baie meer. klastoets { static function main() { final people = [ "Elizabeth" => "Programmering", "Joel" => "Ontwerp" ]; for (naam => werk in mense) { trace(‘$naam doen $werk vir 'n lewe!’); } } }

Nuwe kenmerke in weergawe 4.2:

  • Verklaar statiese veranderlikes en funksies op modulevlak, sonder dat dit nodig is om dit in 'n klas toe te draai.
  • Ondersteuning vir "klassieke" abstrakte klasse en funksies.
  • Inheemse implementering van variadiese funksies vir alle teikenplatforms (haxe.Rest) en toevoeging van die argumentuitbreidingsoperateur "f(...array)".
  • Implementering van 'n gebeurtenislus vir individuele drade ("sys.thread.Thread.events").
  • "@:inheritDoc"-metadata vir die oorerwing van tipe-/velddokumentasie.
  • Metode oorlaai ondersteuning vir eksterne metodes op alle teiken platforms.
  • Die aanstuur van die konstruktor onderliggend aan sy tipe na die abstrakte deur die "@:forward.new" metadata te gebruik.
  • Het "EIs"-konstruktor by "haxe.macro.Expr" gevoeg.
  • Vermoë om 'n abstrakte tipe variant met "@:forward.variance" te maak.
  • Voorstelling van die "Enige" tipe as "Dynamies" wanneer variasie verenig word.
  • Het 'n paar basiese uitsonderingstipes by die "haxe.exceptions"-pakket gevoeg.
  • Ondersteuning vir die aanheg van metadata wanneer veranderlikes verklaar word.
  • Funksie "StringTools.unsafeCharAt" gebruik vir string iterasie.
  • eval (tolk): Bygevoeg bindings aan "libuv" in pakket "eval.luv".
  • eval: bindings aan inheemse implementerings van "Int64" en "UInt64" via die "eval.integers" pakket.
  • cs: UDP-sokimplementering.
  • cs: "cs.Syntax"-module vir inlyn-invoegings van C#-kode.
  • jvm: Het die "-D jvm.dynamic-level=x" vlag bygevoeg om die aantal gegenereerde optimaliserings vir dinamiese kode te beheer. 0 = geen, 1 = veld lees/skryf optimering, 2 = metode sluitings tydens samestelling tyd.
  • java, jvm: Ondersteuning vir die "--java-lib " vlag.
  • python: threading API implementering.

Algemene verbeterings:

  • "expr is SomeType" hoef nie tussen hakies toegedraai te word nie.
  • Verhoogde prioriteit vir "@:gebruik" tipe uitbreidings.
  • Laat die gebruik van statiese tipe uitbreidings toe via "super".
  • Vermoë om metadata na "@:noDoc"-velde te stel.
  • Die abstrakte tipe "Kaart" word oorganklik gemaak.
  • Ondersteuning vir "@:native" op enum-konstruktors.
  • Ondersteuning vir "@:using" op tipe verklarings ("typedefs").
  • Meerlynfoute gebruik "..." as 'n voorvoegsel vir daaropvolgende reëls.
  • Tipe-afleiding is herwerk, anonieme strukture word beter na eksplisiete tipes omgeskakel en "gesluit" wanneer die funksie voltooi is.
  • Lei die tipe funksies sonder argumente af as "()->..." in plaas van "Void->...".
  • Die "funksie" sleutelwoord word toegelaat as 'n pakketnaam.
  • Verbeterde invoering van voorwerpe.
  • cs: Bygevoeg ondersteuning vir .NET 5.0.
  • cpp: Ondersteuning vir inheemse konstrukteurs vir eksterne klasse.
  • php: Bygevoeg "php.Syntax.customArrayDecl" om 'n inheemse skikking te verklaar.
  • php: Bygewerkte eksterne metodes vir verskeie funksies en klasse.
  • php: Geoptimaliseerde implementering van anonieme strukture.
  • hl: Slaan samestelling oor as daar geen veranderinge aan modules is nie.
  • lua: Gebruik "hx-lua-simdjson" om json te ontleed.
  • jvm: Verminderde SVE-lading in die "sys.thread.Lock"-implementering.
  • js: Verbeterde verenigbaarheid met Google Closure Compiler.
  • Nul Veiligheid: Oorweeg "@:nullSafety(Off)" wanneer veranderlikes verklaar word: "var @:nullSafety(Off) v".

Die toevoeging tot die VSCode-redigeerder is ook opgedateer na die nuwe weergawe van die samesteller, waarin wenke verskyn het met die generering van ontbrekende velde van koppelvlakke, eenvoudige en abstrakte klasse, sowel as eiendomsmetodes.

Bron: opennet.ru

Voeg 'n opmerking