Programavimo kalbos Haxe 4.1 išleidimas

Galima įrankių rinkinio išleidimas Haxe 4.1, kuri apima kelių paradigmų aukšto lygio programavimo kalbą tuo pačiu pavadinimu su stipriu spausdinimu, kryžminį kompiliatorių ir standartinę funkcijų biblioteką. Projektas palaiko vertimą į C++, HashLink/C, JavaScript, C#, Java, PHP, Python ir Lua, taip pat kompiliavimą į JVM, HashLink/JIT, Flash ir Neko baitinį kodą su prieiga prie kiekvienos tikslinės platformos vietinių galimybių. Kompiliatoriaus kodas išplatino pagal GPLv2 licenciją ir standartinę biblioteką bei virtualias mašinas, sukurtas Haxe HashLink и Neko pagal MIT licenciją.

Kalba yra orientuotas į išraišką su stipriu spausdinimu. Palaikomos į objektus orientuotos, bendrosios ir funkcinės programavimo technikos. Haxe sintaksė yra artima ECMAScript ir plečiasi jo funkcijos, pvz., statinis spausdinimas, automatinio tipo išvados, šablonų suderinimas, bendrieji reiškiniai, iteratorius pagrįstos kilpoms, AST makrokomandos, GADT (generalizuoti algebriniai duomenų tipai), abstraktūs tipai, anoniminės struktūros, supaprastinti masyvo apibrėžimai, sąlyginio kompiliavimo išraiškos, metaduomenų pridėjimas prie laukų. , klasės ir išraiškos, eilučių interpoliacija („Mano vardas yra $name“), tipo parametrai („new Main(“foo)“) ir daug daugiau.

Class Test {
statinė funkcija main() {
galutiniai žmonės = [
"Elizabeth" => "Programavimas",
"Joel" => "Dizainas"
];

for (vardas => darbas tarp žmonių) {
trace('$name dirba $darbą pragyvenimui!');
}
}
}

Naujos 4.1 versijos funkcijos:

  • Pridėtas uodegos rekursijos optimizavimas.
  • Pridėta nauja vieninga API išimčių tvarkymui.
  • Konstrukcija „try {} catch(e) {}“ leidžiama kaip „try {} catch(e: haxe.Exception) {}“ trumpinys.
  • Prie eval interpretatoriaus pridėtas SSL palaikymas.
  • Tikslinė JVM nebelaikoma eksperimentine.
  • Prie kalbos serverio protokolo pridėtos funkcijos „Eiti į diegimą“ ir „Rasti nuorodas“.
  • Patobulintas laikinųjų vietinių kintamųjų įvardijimas sukurtame kode. Pašalintas perteklinis „grįžimas“; rodyklės funkcijose be grąžinamos reikšmės.
  • Prieigos deriniai (gauti, numatytasis) leidžiami laukuose (tik geter, numatytasis priskyrimo elgesys).
  • Leisti laukų didinimo ir mažinimo operatorius abstrakčių tipų.
  • Patobulintas for kilpų įtraukimas naudojant anoniminius iteratorius.
  • js: patobulintas ES5 StringMap diegimas.
  • js: Prie kompiliatoriaus parinkties „-D js-es=6“ pridėtas „let“ kintamųjų generavimas, patobulintas ES6 klasių generavimas.
  • lua: optimizuotas „StringIterator“, patobulintas klaidų tvarkymas.
  • php: Optimizuotas "Std.isOfType" baziniams tipams.
  • php: Sugeneruoti masyvai dabar įgyvendina vietines sąsajas „Iterator“, „IteratorAggregate“, „Countable“.
  • cs: pridėti metaduomenys „@:assemblyMeta“ ir „@:assemblyStrict“.
  • python: pridėtas „__contains__“ įgyvendinimas anoniminiams objektams
    ir „__getitem__“, kuri leidžia juos naudoti kaip žodynus sugeneruotame kode.

  • jvm: žymiai pagerintas našumas dėl naujo būdo pasiekti įvestas funkcijas ir generuoti papildomas sąsajas tais atvejais, kai objektai naudojami kaip anoniminės struktūros (neleidžiama dinamiškai ieškoti):
    Programavimo kalbos Haxe 4.1 išleidimas

Standartinės bibliotekos patobulinimai:

  • Pridėta funkcija „Array.contains“.
  • Pridėta "Array.keyValueIterator", kuri įgyvendina masyvų rakto vertės iteraciją ("for (key => value in masyvas)").
  • Pridėtas apribojimo tipas "haxe.Constraints.NotVoid".
  • Funkcijos „findIndex“ ir „foldi“ buvo įtrauktos į „Lambda“ klasę.
  • Įdiegta „masyvo prieiga“ (prieiga per „arr[i]“) ir „haxe.ds.HashMap“ rakto vertės iteracija.
  • jvm: įdiegtos JVM specifinės „StringMap“, „sys.thread.Lock“, „sys.thread.Thread“ versijos.
  • java/jvm: „haxe.crypto“ moduliams naudotos vietinės „MD5“, „SHA-1“ ir „SHA-256“ versijos.
  • makrokomanda: pridėta „haxe.macro.Context.containsDisplayPosition(pos)“.
  • nullsafety: "Griežtas" režimas dabar traktuojamas kaip vienas sriegis; pridėtas "StrictThreaded" režimas.
  • „Std.is“ nebenaudojamas, o „Std.isOfType“.
  • Pridėtas įspėjimas, kai uždarose naudojami vietiniai kintamieji be verčių.
  • js: "neįvestas __js__(kodas, args)" yra nebenaudojamas, pakeistas "js.Syntax.code(code, args)".
  • php/neko: „neko.Web“ ir „php.Web“ nebenaudojami ir vėliau bus perkelti į „hx4compat“ biblioteką.

Kitame leidime yra planuojami:

  • Paketų tvarkyklės patobulinimai haxelib.
  • Asinchroninės sistemos API pagrindu libuv.
  • Korutinos.
  • Modulinių statinių funkcijų ir kintamųjų deklaravimas nekuriant klasių (jau pasiekiama naktinėse versijose).

Šaltinis: opennet.ru

Добавить комментарий