Izdanje programskog jezika Haxe 4.2

Dostupno je izdanje alata Haxe 4.2, koje uključuje istoimeni programski jezik visoke razine s više paradigmi sa snažnim tipkanjem, 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 se pod licencom GPLv2, a standardna biblioteka i virtualni strojevi HashLink i Neko razvijeni za Haxe licencirani su pod licencom MIT.

Jezik je orijentiran na izražavanje sa snažnim tipkanjem. Podržane su objektno orijentirane, generičke i funkcionalne tehnike programiranja. Haxeova sintaksa bliska je ECMAScriptu i proširuje ga značajkama kao što su statičko tipkanje, automatsko zaključivanje tipa, podudaranje uzoraka, generički, for petlje temeljene na iteratoru, AST makronaredbe, GADT (općeniti algebarski tipovi podataka), apstraktni tipovi, anonimne strukture, pojednostavljeni nizovi definicija, izrazi za uvjetnu kompilaciju, prilaganje metapodataka poljima, klasama i izrazima, interpolacija nizova ('Zovem se $name'), parametri tipa ('novi glavni (“foo”)') i mnogi drugi. class Test { static function main() { final people = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; for (name => posao u ljudima) { trace('$name radi $posao za život!'); } } }

Nove značajke u verziji 4.2:

  • Deklariranje statičkih varijabli i funkcija na razini modula, bez potrebe da ih omotate u klasu.
  • Podrška za "klasične" apstraktne klase i funkcije.
  • Izvorna implementacija varijacijskih funkcija za sve ciljne platforme (haxe.Rest) i dodavanje operatora proširenja argumenata “f(...array)”.
  • Implementacija petlje događaja za pojedinačne niti (“sys.thread.Thread.events”).
  • "@:inheritDoc" metapodaci za nasljeđivanje dokumentacije tipa/polja.
  • Podrška za preopterećenje metoda za vanjske metode na svim ciljnim platformama.
  • Prosljeđivanje konstruktora koji je u osnovi njegovog tipa u sažetak pomoću metapodataka “@:forward.new”.
  • Dodan "EIs" konstruktor u "haxe.macro.Expr".
  • Mogućnost izrade varijante apstraktnog tipa s "@:forward.variance".
  • Predstavljanje vrste "Bilo koje" kao "Dinamične" prilikom objedinjavanja varijacije.
  • Dodane su neke osnovne vrste iznimki u paket "haxe.exceptions".
  • Podrška za prilaganje metapodataka prilikom deklariranja varijabli.
  • Funkcija "StringTools.unsafeCharAt" koja se koristi za ponavljanje niza.
  • eval (tumač): Dodana povezivanja za "libuv" u paketu "eval.luv".
  • eval: povezivanja s izvornim implementacijama "Int64" i "UInt64" putem paketa "eval.integers".
  • cs: implementacija UDP utičnice.
  • cs: “cs.Syntax” modul za inline umetanje C# koda.
  • jvm: Dodana je oznaka “-D jvm.dynamic-level=x” za kontrolu broja generiranih optimizacija za dinamički kod. 0 = ništa, 1 = optimizacija čitanja/pisanja polja, 2 = zatvaranja metoda tijekom kompajliranja.
  • java, jvm: Podrška za oznaku "--java-lib <directory>".
  • python: API implementacija niti.

Opća poboljšanja:

  • "expr is SomeType" ne zahtijeva omotavanje u zagrade.
  • Povećani prioritet za proširenja tipa "@:using".
  • Omogućuje korištenje ekstenzija statičnog tipa putem "super".
  • Mogućnost postavljanja metapodataka u polja “@:noDoc”.
  • Apstraktni tip "Mapa" je tranzitivan.
  • Podrška za "@:native" na enum konstruktorima.
  • Podrška za "@:using" na deklaracijama tipa ("typedefs").
  • Višeredne pogreške koriste "..." kao prefiks za naredne retke.
  • Zaključivanje tipa je prerađeno, anonimne strukture se bolje pretvaraju u eksplicitne tipove i "zatvore" kada funkcija završi.
  • Zaključivanje vrste funkcija bez argumenata kao "()->..." umjesto "Void->...".
  • Ključna riječ "function" dopuštena je kao naziv paketa.
  • Poboljšano umetanje objekata.
  • cs: Dodana podrška za .NET 5.0.
  • cpp: Podrška za izvorne konstruktore za vanjske klase.
  • php: Dodano "php.Syntax.customArrayDecl" za deklariranje izvornog niza.
  • php: ažurirane vanjske metode za razne funkcije i klase.
  • php: Optimizirana implementacija anonimnih struktura.
  • hl: Preskoči kompilaciju ako nema promjena na modulima.
  • lua: Korištenje "hx-lua-simdjson" za raščlanjivanje jsona.
  • jvm: Smanjeno opterećenje CPU-a u implementaciji "sys.thread.Lock".
  • js: poboljšana kompatibilnost s Google Closure Compiler-om.
  • Null Safety: Razmotrite "@:nullSafety(Off)" kada deklarirate varijable: "var @:nullSafety(Off) v".

Također, dodatak uređivaču VSCode ažuriran je na novu verziju prevoditelja, u kojem su se pojavili savjeti za generiranje nedostajućih polja sučelja, jednostavnih i apstraktnih klasa, kao i metoda svojstava.

Izvor: opennet.ru

Dodajte komentar