Programmeerimiskeele Haxe 4.1 väljalase

Saadaval tööriistakomplekti vabastamine Haxe 4.1, mis sisaldab samanimelist mitmeparadigmalist kõrgetasemelist programmeerimiskeelt 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 kood jaotatud GPLv2 litsentsi ning Haxe jaoks välja töötatud standardteegi ja virtuaalmasinate alusel HashLink и Neko MIT litsentsi alusel.

Keel on väljendusele orienteeritud tugeva trükkimisega. Toetatakse objektorienteeritud, üldisi ja funktsionaalseid programmeerimistehnikaid. Haxe süntaks on lähedane ECMAScriptile ja laieneb selle funktsioonid, nagu staatiline tippimine, automaatse tüübi järeldamine, mustrite sobitamine, üldised, iteraatoripõhised silmused, AST-makrod, GADT (generaliseeritud algebralised andmetüübid), abstraktsed tüübid, anonüümsed struktuurid, lihtsustatud massiivi määratlused, tingimuslikud kompileerimisavaldised, metaandmete lisamine väljadele , klassid ja avaldised, stringide interpolatsioon ("Minu nimi on $nimi"), tüübiparameetrid ('uus põhi ("foo")') ja palju rohkem.

klass Test {
staatiline funktsioon main() {
lõplikud inimesed = [
"Elizabeth" => "Programmeerimine",
"Joel" => "Disain"
];

for (nimi => töö inimeste seas) {
trace('$name teeb $tööd elatise nimel!');
}
}
}

Uued funktsioonid versioonis 4.1:

  • Lisatud saba rekursiooni optimeerimine.
  • Lisatud uus ühtne API erandite käsitlemiseks.
  • Konstruktsioon "try {} catch(e) {}" on lubatud lühendina sõnadele "try {} catch(e: haxe.Exception) {}".
  • Lisatud eval interpretaatorile SSL-i tugi.
  • Siht-JVM-i ei peeta enam eksperimentaalseks.
  • Keeleserveri protokolli jaoks on lisatud funktsioonide "Goto Implementation" ja "Find references" tugi.
  • Täiustatud ajutiste kohalike muutujate nimetamine loodud koodis. Eemaldatud üleliigne "tagastamine"; noolefunktsioonides ilma tagastusväärtuseta.
  • Juurdepääsukombinatsioonid (get, vaikimisi) on väljadel lubatud (ainult getter, määramise vaikekäitumine).
  • Luba väljade suurendamise ja vähendamise operaatorid abstraktsed tüübid.
  • For silmuste täiustatud sisestus anonüümsete iteraatorite abil.
  • js: StringMapi täiustatud rakendamine ES5 jaoks.
  • js: Kompilaatori valikule “-D js-es=6” on lisatud let muutujate genereerimine, täiustatud on ES6 klasside genereerimist.
  • lua: "StringIterator" optimeeritud, vigade käsitlemine paranenud.
  • php: optimeeritud "Std.isOfType" põhitüüpide jaoks.
  • php: loodud massiivid rakendavad nüüd natiivseid liideseid "Iterator", "IteratorAggregate", "Countable".
  • cs: lisatud metaandmed "@:assemblyMeta" ja "@:assemblyStrict".
  • python: lisati anonüümsetele objektidele "__contains__" teostus
    ja "__getitem__", mis võimaldab neid genereeritud koodis sõnaraamatutena kasutada.

  • jvm: märkimisväärselt paranenud jõudlus tänu uuele viisile pääseda juurde trükitud funktsioonidele ja luua täiendavaid liideseid juhtudel, kui objekte kasutatakse anonüümsete struktuuridena (dünaamiline atribuutide otsimine on takistatud):
    Programmeerimiskeele Haxe 4.1 väljalase

Standardteegi täiustused:

  • Lisatud funktsioon "Array.contains".
  • Lisatud "Array.keyValueIterator", mis rakendab massiivide jaoks võtmeväärtuste iteratsiooni ("for (key => väärtus massiivis)").
  • Lisatud piirangu tüüp "haxe.Constraints.NotVoid".
  • Funktsioonid "findIndex" ja "foldi" on lisatud "Lambda" klassi.
  • Rakendatud "haxe.ds.HashMap" jaoks "massiivi juurdepääs" (juurdepääs "arr[i]" kaudu) ja võtmeväärtuse iteratsioon.
  • jvm: juurutatud JVM-spetsiifilised versioonid "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: moodulite "haxe.crypto" jaoks on kasutatud "MD5", "SHA-1" ja "SHA-256" omarakendusi.
  • makro: lisatud "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "ranget" režiimi käsitletakse nüüd ühe keermega; lisatud "StrictThreaded" režiim.
  • "Std.is" on aegunud, eelistades "Std.isOfType".
  • Lisatud hoiatus kohalike muutujate kasutamisel ilma väärtusteta sulgemistes.
  • js: "tüüpimata __js__(kood, args)" on aegunud, asendatud "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" ja "php.Web" on aegunud ja teisaldatakse hiljem teeki "hx4compat".

Järgmises väljaandes on planeeritud:

  • Paketihalduri täiustused haxelib.
  • Asünkroonse süsteemi API-põhine libuv.
  • Korutiinid.
  • Modulaarsete staatiliste funktsioonide ja muutujate deklareerimine ilma klasse loomata (saadaval juba öistes ehitustes).

Allikas: opennet.ru

Lisa kommentaar