Eldono de la programlingvo Haxe 4.1

Disponebla liberigo de ilaro Haxe 4.1, 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. Kompilkodo distribuita de sub la GPLv2-licenco, kaj la norma biblioteko kaj virtualaj maŝinoj evoluigitaj por Haxe HashLink и neko sub la MIT-licenco.

Lingvo estas esprimorientita kun forta tajpado. Objekt-orientitaj, senmarkaj kaj funkciaj programaj teknikoj estas subtenataj. Haxe-sintakso estas proksima al ECMAScript kaj vastiĝas ĝiaj trajtoj kiel ekzemple senmova tajpado, aŭtotipa inferenco, padronkongruo, senmarkaj, iterator-bazitaj por bukloj, AST-makrooj, GADT (Ĝeneraligitaj Algebraj Datumoj-Tipoj), abstraktaj tipoj, anonimaj strukturoj, simpligitaj tabeldifinoj, kondiĉaj kompilesprimoj, alkroĉante metadatenojn al kampoj , klasoj kaj esprimoj, ĉeninterpolado ("'Mia nomo estas $nomo'"), tajpu parametrojn ('nova Ĉefa ("foo")') kaj multe pli.

klastesto {
senmova funkcio ĉefa () {
finaj homoj = [
"Elizabeth" => "Programado",
"Joel" => "Dezajno"
];

por (nomo => laboro en homoj) {
trace('$nomo faras $laboron por vivteni!');
}
}
}

Novaj funkcioj en versio 4.1:

  • Aldonita vosta rekursia optimumigo.
  • Aldonita nova unuigita API por esceptotraktado.
  • La konstruo "provu {} catch(e) {}" estas permesita kiel stenografio por "provu {} catch(e: haxe.Escepto) {}".
  • Aldonita SSL-subteno al la evala interpretisto.
  • La cela JVM ne plu estas konsiderata eksperimenta.
  • Por Lingva Servila Protokolo, subteno por la funkcioj "Iru Efektivigo" kaj "Trovi referencojn" estis aldonita.
  • Plibonigita nomado de provizoraj lokaj variabloj en generita kodo. Forigita redunda "reveno;" en sago funkcioj sen revena valoro.
  • Alirkombinaĵoj (get, default) estas permesitaj sur kampoj (nur getter, defaŭlta asigno konduto).
  • Permesu pliigi kaj malpliigi operatorojn por kampoj abstraktaj tipoj.
  • Plibonigita enliniado de for-bukloj uzante anonimajn iteratorojn.
  • js: Plibonigita StringMap-efektivigo por ES5.
  • js: Generacio de let-variabloj estis aldonita al la kompilila opcio "-D js-es=6", generacio de ES6-klasoj estis plibonigita.
  • lua: "StringIterator" optimumigita, erartraktado plibonigita.
  • php: Optimumigita "Std.isOfType" por bazspecoj.
  • php: Generataj tabeloj nun efektivigas la denaskajn interfacojn "Iterator", "IteratorAggregate", "Countable".
  • cs: Aldonitaj metadatenoj "@:assemblyMeta" kaj "@:assemblyStrict".
  • python: aldonis efektivigon de "__contains__" al anonimaj objektoj
    kaj "__getitem__", kiu permesas ilin esti uzataj kiel vortaroj en la generita kodo.

  • jvm: Signife plibonigita agado danke al nova maniero aliri tajpitajn funkciojn kaj generi pliajn interfacojn en kazoj kie objektoj estas uzataj kiel anonimaj strukturoj (dinamika serĉo de proprietoj estas malhelpita):
    Eldono de la programlingvo Haxe 4.1

Plibonigoj en la norma biblioteko:

  • Aldonita "Array.contains" funkcio.
  • Aldonita "Array.keyValueIterator", kiu efektivigas ŝlosilvaloran ripeton por tabeloj ("por (ŝlosilo => valoro en tabelo)").
  • Aldonita limtipo "haxe.Constraints.NotVoid".
  • La funkcioj "findIndex" kaj "foldi" estis aldonitaj al la "Lambda" klaso.
  • Efektivigita "araliro" (aliro per "arr[i]") kaj ŝlosilvalora ripeto por "haxe.ds.HashMap".
  • jvm: Efektivigitaj JVM-specifaj versioj de "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Uzis indiĝenajn efektivigojn de "MD5", "SHA-1" kaj "SHA-256" por la "haxe.crypto" moduloj.
  • makroo: Aldonita "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Stricta" reĝimo nun estas traktata kiel unufadena; aldonis "StrictThreaded" reĝimo.
  • "Std.is" estis malrekomendita favore al "Std.isOfType".
  • Aldonita averto dum uzado de lokaj variabloj sen valoroj en fermoj.
  • js: "netajpita __js__(kodo, argumentoj)" estas malrekomendita, anstataŭigita per "js.Syntax.code (kodo, argumentoj)".
  • php/neko: "neko.Web" kaj "php.Web" estas malrekomenditaj kaj estos movitaj al la biblioteko "hx4compat" poste.

En la sekva eldono estas planitaj:

  • Pliboniĝoj pri pakaĵmanaĝero haxelib.
  • Nesinkrona sistemo API bazita libuv.
  • Korutinoj.
  • Deklari modulajn senmovajn funkciojn kaj variablojn sen krei klasojn (jam haveblaj en noktaj konstruoj).

fonto: opennet.ru

Aldoni komenton