Haxe 4.1 programazio hizkuntzaren kaleratzea

Eskuragarri tresna-kitaren kaleratzea Haxe 4.1, izen bereko paradigma anitzeko goi-mailako programazio-lengoaia idazketa sendoarekin, konpilatzaile gurutzatua eta funtzioen liburutegi estandarra biltzen dituena. Proiektuak C++, HashLink/C, JavaScript, C#, Java, PHP, Python eta Luarako itzulpena onartzen du, baita JVM, HashLink/JIT, Flash eta Neko bytecoderako konpilazioa ere, xede-plataforma bakoitzaren jatorrizko gaitasunetarako sarbidearekin. Konpiladorearen kodea arabera banatuta GPLv2 lizentziapean, eta Haxerentzat garatutako liburutegi estandarra eta makina birtualak HashLink ΠΈ Neko MIT lizentziapean.

Hizkuntza da adierazpenera zuzendua idazketa sendoarekin. Objektuetara zuzendutako programazio-teknikak, generikoak eta funtzionalak onartzen dira. Haxe sintaxia ECMAScript-etik hurbil dago eta zabaltzen da bere ezaugarriak, hala nola, idazketa estatikoa, autotipo inferentzia, ereduen parekatzea, generikoak, begiztak egiteko iteratzailean oinarritutako, AST makroak, GADT (Datu Aljebraiko Orokorren Mota), mota abstraktuak, egitura anonimoak, array definizio sinplifikatuak, konpilazio baldintzazko adierazpenak, metadatuak eremuei eranstea. , klaseak eta adierazpenak, kateen interpolazioa ("'Nire izena $izena da'"), motako parametroak ("New Main("foo")'), eta askoz gehiago.

klaseko proba {
funtzio estatikoa main() {
azken pertsonak = [
"Elizabeth" => "Programazioa",
"Joel" => "Diseinua"
];

for (izena => lana pertsonengan) {
trace('$izek $lana egiten du bizimodua!');
}
}
}

Ezaugarri berriak 4.1 bertsioan:

  • Buztan errekurtsioaren optimizazioa gehitu da.
  • API bateratu berri bat gehitu da salbuespenak kudeatzeko.
  • "try {} catch(e) {}" eraikuntza "try {} catch(e: haxe.Exception) {}" laburdura gisa onartzen da.
  • SSL euskarria gehitu zaio eval interpreteari.
  • Helburuko JVM-a jada ez da esperimentaltzat hartzen.
  • Language Server Protocol-erako, "Joan inplementazioa" eta "Bilatu erreferentziak" funtzioetarako laguntza gehitu da.
  • Aldi baterako aldagai lokalen izendapena hobetu da sortutako kodean. "itzulera" erredundantea kendu da; itzulera-baliorik gabeko gezi-funtzioetan.
  • Sarbide-konbinazioak (lortu, lehenetsia) eremuetan onartzen dira (getter bakarrik, esleipenaren portaera lehenetsia).
  • Onartu eremuak handitzeko eta txikitzeko operadoreak mota abstraktuak.
  • Begizta for-en lerrokatzea hobetu da iterador anonimoak erabiliz.
  • js: StringMap inplementazioa hobetu da ES5erako.
  • js: "-D js-es=6" konpiladore aukeran let aldagaien sorrera gehitu da, ES6 klaseen sorrera hobetu da.
  • lua: "StringIterator" optimizatuta, akatsen kudeaketa hobetu da.
  • php: "Std.isOfType" optimizatua oinarrizko motetarako.
  • php: Sortutako matrizeak orain jatorrizko interfazeak inplementatzen ditu "Iterator", "IteratorAggregate", "kontagarria".
  • cs: "@:assemblyMeta" eta "@:assemblyStrict" metadatuak gehitu dira.
  • python: "__contains__" inplementazioa gehitu da objektu anonimoetan
    eta "__getitem__", sortutako kodean hiztegi gisa erabiltzeko aukera ematen duena.

  • jvm: Errendimendua nabarmen hobetu da idatzitako funtzioetara sartzeko eta interfaze osagarriak sortzeko modu berri bati esker, objektuak egitura anonimo gisa erabiltzen diren kasuetan (propietateen bilaketa dinamikoa galarazten da):
    Haxe 4.1 programazio hizkuntzaren kaleratzea

Hobekuntzak liburutegi estandarrean:

  • "Array.contains" funtzioa gehitu da.
  • "Array.keyValueIterator" gehitu da, matrizeetarako gako-balioaren iterazioa ezartzen duena ("for (gako => balioa array-n)").
  • "haxe.Constraints.NotVoid" murrizketa mota gehitu da.
  • β€œfindIndex” eta β€œfoldi” funtzioak β€œLambda” klasera gehitu dira.
  • "Matrizearen sarbidea" inplementatu da (sarbidea "arr[i]") eta "haxe.ds.HashMap" gako-balioaren iterazioa.
  • jvm: "StringMap", "sys.thread.Lock", "sys.thread.Thread"-ren JVM-ren berariazko bertsioak inplementatu dira.
  • java/jvm: "MD5", "SHA-1" eta "SHA-256" inplementazio natiboak erabili ditu "haxe.crypto" moduluetarako.
  • makroa: "haxe.macro.Context.containsDisplayPosition(pos)" gehitu da.
  • nullsafety: "Zorrotza" modua hari bakarreko gisa tratatzen da; "StrictThreaded" modua gehitu du.
  • "Std.is" zaharkituta geratu da "Std.isOfType"-ren alde.
  • Abisu bat gehitu da itxieretan baliorik gabeko aldagai lokalak erabiltzean.
  • js: "idatzi gabeko __js__(kodea, args)" zaharkituta dago, "js.Syntax.code (kodea, args)"-rekin ordezkatuta.
  • php/neko: "neko.Web" eta "php.Web" zaharkituta daude eta "hx4compat" liburutegira eramango dira geroago.

Hurrengo argitalpenean aurreikusita daude:

  • Pakete-kudeatzailearen hobekuntzak haxelib.
  • Sistema asinkronoan oinarritutako APIan libuv.
  • Koroutinak.
  • Funtzio estatiko modularrak eta aldagaiak deklaratzea klaseak sortu gabe (dagoeneko eskuragarri dago gaueko build-etan).

Iturria: opennet.ru

Gehitu iruzkin berria