Izdanje programskog jezika Haxe 4.1

Dostupno izdanje alata Haxe 4.1, koji uključuje istoimeni programski jezik visoke razine s više paradigmi sa snažnim tipiziranjem, unakrsnim kompajlerom i standardnom bibliotekom funkcija. Projekt podržava prijevod u C++, HashLink/C, JavaScript, C#, Java, PHP, Python i Lua, kao i kompilaciju u JVM, HashLink/JIT, Flash i Neko bajt kod, s pristupom nativnim mogućnostima svake ciljne platforme. Kod prevoditelja distribuira pod licencom GPLv2, te standardna biblioteka i virtualni strojevi razvijeni za Haxe HashLink и Neko pod licencom MIT-a.

Jezik je usmjeren na izražavanje s jakim tipkanjem. Podržane su objektno orijentirane, generičke i funkcionalne tehnike programiranja. Haxe sintaksa je bliska ECMAScriptu i širi se njegove značajke kao što su statički tip, zaključivanje autotipa, podudaranje uzoraka, generički, petlje for na temelju iteratora, AST makronaredbe, GADT (općeniti algebarski tipovi podataka), apstraktni tipovi, anonimne strukture, pojednostavljene definicije polja, izrazi uvjetne kompilacije, prilaganje metapodataka poljima , klase i izrazi, interpolacija niza (“'Zovem se $name'”), parametri tipa ('novi glavni ("foo")') i mnogo više.

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

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

Nove značajke u verziji 4.1:

  • Dodana optimizacija repne rekurzije.
  • Dodan je novi jedinstveni API za rukovanje iznimkama.
  • Konstrukcija "try {} catch(e) {}" dopuštena je kao skraćenica za "try {} catch(e: haxe.Exception) {}".
  • Dodana SSL podrška eval interpreteru.
  • Ciljni JVM više se ne smatra eksperimentalnim.
  • Za protokol jezičnog poslužitelja dodana je podrška za funkcije “Goto Implementation” i “Find references”.
  • Poboljšano imenovanje privremenih lokalnih varijabli u generiranom kodu. Uklonjen suvišni "return;" u funkcijama strelica bez povratne vrijednosti.
  • Kombinacije pristupa (get, default) dopuštene su na poljima (samo getter, standardno ponašanje dodjele).
  • Dopusti operatore povećanja i smanjenja za polja apstraktne vrste.
  • Poboljšano umetanje for petlji korištenjem anonimnih iteratora.
  • js: poboljšana implementacija StringMap za ES5.
  • js: Generiranje let varijabli dodano je opciji prevoditelja “-D js-es=6”, generiranje ES6 klasa je poboljšano.
  • lua: "StringIterator" optimiziran, rukovanje greškama poboljšano.
  • php: Optimiziran "Std.isOfType" za osnovne tipove.
  • php: Generirani nizovi sada implementiraju izvorna sučelja “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Dodani metapodaci "@:assemblyMeta" i "@:assemblyStrict".
  • python: dodana implementacija "__contains__" anonimnim objektima
    i "__getitem__", što im omogućuje da se koriste kao rječnici u generiranom kodu.

  • jvm: Značajno poboljšana izvedba zahvaljujući novom načinu pristupa tipiziranim 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 knjižnici:

  • Dodana funkcija "Array.contains".
  • Dodan "Array.keyValueIterator", koji implementira iteraciju ključ-vrijednost za nizove ("za (ključ => vrijednost u nizu)").
  • Dodana vrsta ograničenja "haxe.Constraints.NotVoid".
  • Funkcije “findIndex” i “foldi” dodane su klasi “Lambda”.
  • Implementiran "pristup nizu" (pristup putem "arr[i]") i iteracija ključ-vrijednost za "haxe.ds.HashMap".
  • jvm: Implementirane JVM-specifične verzije "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Korištene izvorne implementacije "MD5", "SHA-1" i "SHA-256" za module "haxe.crypto".
  • makro: Dodano "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strogi" način rada sada se tretira kao single threaded; dodan način "StrictThreaded".
  • "Std.is" je zastario u korist "Std.isOfType".
  • Dodano je upozorenje pri korištenju lokalnih varijabli bez vrijednosti u zatvaranjima.
  • js: "untyped __js__(code, args)" je zastario, zamijenjen s "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 upravitelja paketa hakselib.
  • Temeljen na API-ju asinkronog sustava libuv.
  • Korutine.
  • Deklariranje modularnih statičkih funkcija i varijabli bez stvaranja klasa (već dostupno u noćnim verzijama).

Izvor: opennet.ru

Dodajte komentar