Vrystelling van die programmeertaal Haxe 4.1

Beskikbaar gereedskapstel vrystelling Haxe 4.1, wat die multi-paradigma hoëvlak programmeertaal met dieselfde naam insluit met sterk tik, 'n kruissamesteller en 'n standaard biblioteek van funksies. 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. Samesteller kode versprei deur onder die GPLv2-lisensie, en die standaardbiblioteek en virtuele masjiene wat vir Haxe ontwikkel is HashLink и Neko onder die MIT-lisensie.

Taal is uitdrukking-georiënteerd met sterk tik. Objekgeoriënteerde, generiese en funksionele programmeringstegnieke word ondersteun. Haxe-sintaksis is naby aan ECMAScript en brei uit sy kenmerke soos statiese tik, outotipe-afleiding, patroonpassing, generiese, iterator-gebaseerd vir lusse, AST-makro's, GADT (Generalized Algebraic Data Types), abstrakte tipes, anonieme strukture, vereenvoudigde skikkingsdefinisies, voorwaardelike samestelling uitdrukkings, die heg van metadata aan velde , klasse en uitdrukkings, string-interpolasie ("'My naam is $naam'"), tipe parameters ('nuwe Hoof ("foo")') en baie meer.

klastoets {
statiese funksie main() {
finale mense = [
"Elizabeth" => "Programmering",
"Joel" => "Ontwerp"
];

vir (naam => werk in mense) {
trace('$name doen $werk vir 'n lewe!');
}
}
}

Nuwe kenmerke in weergawe 4.1:

  • Bygevoeg stert rekursie optimalisering.
  • Het 'n nuwe verenigde API bygevoeg vir uitsonderingshantering.
  • Die konstruk "probeer {} catch(e) {}" word toegelaat as 'n snelskrif vir "probeer {} catch(e: haxe.Exception) {}".
  • SSL-ondersteuning by die eval-tolk gevoeg.
  • Die teiken JVM word nie meer as eksperimenteel beskou nie.
  • Vir Language Server Protocol is ondersteuning vir die "Gaan na Implementering" en "Vind verwysings" funksies bygevoeg.
  • Verbeterde benaming van tydelike plaaslike veranderlikes in gegenereerde kode. Verwyder oortollige "return;" in pyltjie funksies sonder 'n terugkeerwaarde.
  • Toegangskombinasies (get, verstek) word toegelaat op velde (slegs getter, verstek opdraggedrag).
  • Laat inkrement- en afnameoperateurs vir velde toe abstrakte tipes.
  • Verbeterde inlyn van for-lusse met behulp van anonieme iterators.
  • js: Verbeterde StringMap-implementering vir ES5.
  • js: Generering van laat veranderlikes is bygevoeg by die samesteller opsie "-D js-es=6", generasie van ES6 klasse is verbeter.
  • lua: "StringIterator" geoptimaliseer, fouthantering verbeter.
  • php: Geoptimaliseerde "Std.isOfType" vir basistipes.
  • php: Gegenereerde skikkings implementeer nou die inheemse koppelvlakke "Iterator", "IteratorAggregate", "Countable".
  • cs: Metadata "@:assemblyMeta" en "@:assemblyStrict" bygevoeg.
  • python: het implementering van "__contains__" by anonieme voorwerpe bygevoeg
    en "__getitem__", wat hulle toelaat om as woordeboeke in die gegenereerde kode gebruik te word.

  • jvm: Aansienlik verbeterde werkverrigting danksy 'n nuwe manier om toegang tot getikte funksies te verkry en bykomende koppelvlakke te genereer in gevalle waar voorwerpe as anonieme strukture gebruik word (dinamiese eiendomsopsoek word verhoed):
    Vrystelling van die programmeertaal Haxe 4.1

Verbeterings in die standaard biblioteek:

  • Bygevoeg "Array.contains" funksie.
  • Bygevoeg "Array.keyValueIterator", wat sleutel-waarde iterasie vir skikkings implementeer ("vir (sleutel => waarde in skikking)").
  • Bygevoeg beperking tipe "haxe.Constraints.NotVoid".
  • Die "findIndex" en "foldi" funksies is by die "Lambda" klas gevoeg.
  • Implementeer "skikking toegang" (toegang via "arr[i]") en sleutel-waarde iterasie vir "haxe.ds.HashMap".
  • jvm: Geïmplementeerde JVM-spesifieke weergawes van "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Gebruik inheemse implementerings van "MD5", "SHA-1" en "SHA-256" vir die "haxe.crypto" modules.
  • makro: Bygevoeg "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Streng" modus word nou as enkeldraad behandel; bygevoeg "StrictThreaded" modus.
  • "Std.is" is afgekeur ten gunste van "Std.isOfType".
  • 'n Waarskuwing bygevoeg wanneer plaaslike veranderlikes sonder waardes in sluitings gebruik word.
  • js: "ongetikte __js__(kode, args)" is afgekeur, vervang deur "js.Syntax.code(kode, args)".
  • php/neko: "neko.Web" en "php.Web" is opgeskort en sal later na die "hx4compat"-biblioteek geskuif word.

In die volgende uitgawe word beplan:

  • Pakketbestuurderverbeterings haxelib.
  • Asynchrone stelsel API gebaseer libuv.
  • Coroutines.
  • Verklaar modulêre statiese funksies en veranderlikes sonder om klasse te skep (reeds beskikbaar in nagtelike bou).

Bron: opennet.ru

Voeg 'n opmerking