Izdanje programskog jezika Haxe 4.1

Dostupno izdanje kompleta alata Haxe 4.1, koji uključuje istoimeni programski jezik visokog nivoa sa više paradigmi sa jakim kucanjem, unakrsni kompajler i standardnu ​​biblioteku funkcija. Projekat podržava prevođenje na C++, HashLink/C, JavaScript, C#, Java, PHP, Python i Lua, kao i kompilaciju u JVM, HashLink/JIT, Flash i Neko bajt kod, uz pristup izvornim mogućnostima svake ciljne platforme. Kod kompajlera distribuira pod GPLv2 licencom, i standardnu ​​biblioteku i virtuelne mašine razvijene za Haxe HashLink и neko pod MIT licencom.

Jezik je orijentisan na ekspresiju sa jakim kucanjem. Podržane su objektno orijentisane, generičke i funkcionalne tehnike programiranja. Haxe sintaksa je bliska ECMAScript i širi se njegove karakteristike kao što su statičko kucanje, zaključivanje autotipa, podudaranje uzoraka, generika, petlje zasnovane na iteratorima, AST makroi, GADT (generalizovani algebarski tipovi podataka), apstraktni tipovi, anonimne strukture, pojednostavljene definicije nizova, izrazi za uslovnu kompilaciju, pričvršćivanje metapodataka poljima , klase i izrazi, interpolacija nizova (“'Moje ime je $name'”), parametri tipa ('new Main ("foo")') i mnogo više.

razred Test {
statička funkcija main() {
konačni ljudi = [
"Elizabeth" => "Programiranje",
"Joel" => "Dizajn"
];

za (ime => posao u ljudima) {
trace('$name radi $posao za život!');
}
}
}

Nove funkcije u verziji 4.1:

  • Dodata optimizacija rep rekurzije.
  • Dodan novi unificirani API za rukovanje iznimkama.
  • Konstrukcija "try {} catch(e) {}" je dozvoljena kao skraćenica za "try {} catch(e: haxe.Exception) {}".
  • Dodata SSL podrška eval interpreteru.
  • Ciljni JVM se više ne smatra eksperimentalnim.
  • Za protokol jezičkog poslužitelja dodana je podrška za funkcije “Idi na implementaciju” i “Pronađi reference”.
  • Poboljšano imenovanje privremenih lokalnih varijabli u generiranom kodu. Uklonjen suvišni "return"; u funkcijama strelice bez povratne vrijednosti.
  • Kombinacije pristupa (dobi, zadano) su dozvoljene u poljima (samo getter, zadano ponašanje dodjeljivanja).
  • Dozvolite operatore inkrementa i dekrementa za polja apstraktne vrste.
  • Poboljšano umetanje for petlji korištenjem anonimnih iteratora.
  • js: Poboljšana implementacija StringMap za ES5.
  • js: Generisanje let varijabli je dodato opciji kompajlera “-D js-es=6”, generisanje ES6 klasa je poboljšano.
  • lua: optimiziran "StringIterator", poboljšano rukovanje greškama.
  • php: Optimizovano "Std.isOfType" za osnovne tipove.
  • php: Generisani nizovi sada implementiraju izvorne interfejse “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Dodati metapodaci "@:assemblyMeta" i "@:assemblyStrict".
  • python: dodana implementacija "__contains__" na anonimne objekte
    i "__getitem__", što im omogućava da se koriste kao rječnici u generiranom kodu.

  • jvm: Značajno poboljšane performanse zahvaljujući novom načinu pristupa ukucanim funkcijama i generiranju dodatnih sučelja u slučajevima kada se objekti koriste kao anonimne strukture (spriječeno je dinamičko traženje svojstava):
    Izdanje programskog jezika Haxe 4.1

Poboljšanja u standardnoj biblioteci:

  • Dodata funkcija "Array.contains".
  • Dodan "Array.keyValueIterator", koji implementira iteraciju ključ/vrijednost za nizove ("for (key => value in array)").
  • Dodan tip ograničenja "haxe.Constraints.NotVoid".
  • Funkcije “findIndex” i “foldi” su dodate klasi “Lambda”.
  • Implementiran "pristup nizu" (pristup preko "arr[i]") i iteracija ključ/vrijednost za "haxe.ds.HashMap".
  • jvm: Implementirane verzije "StringMap", "sys.thread.Lock", "sys.thread.Thread" specifične za JVM.
  • java/jvm: Korištene izvorne implementacije "MD5", "SHA-1" i "SHA-256" za "haxe.crypto" module.
  • makro: Dodan "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strogi" način se sada tretira kao jednostruki; dodat je "StrictThreaded" način rada.
  • "Std.is" je zastario u korist "Std.isOfType".
  • Dodano upozorenje kada koristite lokalne varijable bez vrijednosti u zatvaranjima.
  • js: "untyped __js__(code, args)" je zastario, zamijenjen sa "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" i "php.Web" su zastarjeli i kasnije će biti premješteni u biblioteku "hx4compat".

U sljedećem izdanju su planirani:

  • Poboljšanja menadžera paketa haxelib.
  • Asinhroni sistem baziran na API-ju libuv.
  • Coroutines.
  • Deklarisanje modularnih statičkih funkcija i varijabli bez kreiranja klasa (već dostupno u noćnim gradnjama).

izvor: opennet.ru

Dodajte komentar