Haxe 4.0 programazio hizkuntzaren kaleratzea

Eskuragarri tresna-kitaren kaleratzea Haxe 4.0, 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 estandar bat eta makina birtual bat Neko MIT lizentziapean.

Hizkuntza da adierazpenera zuzendua idazketa sendoarekin. Objektuetara zuzendutako programazio kontzeptuak, 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 iteratzaileetan oinarritutakoak, AST makroak, GADT (Generalized Aljebraic Data Types), mota abstraktuak, egitura anonimoak, array definizio sinplifikatuak, baldintzazko konpilazio adierazpenak , metadatuak eremuei eranstea. , klaseak eta adierazpenak, kateen interpolazioa ("Nire izena $izena da"), motako parametroak ("New Mainβ€ΉStringβ€Ί('foo')"), eta askoz gehiago.

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

for (izena people.keys()) {
var lana = jendea[izena];
trace('$izek $lana egiten du bizimodua!');
}
}
}

Nagusia berrikuntzak 4.0 bertsioa:

  • "(izena:String, adina:Int)->Bool" edo "(String, Int)->Bool" funtzio mota zehazteko sintaxi berria "String->Int->Bool"-ren ordez.
  • Gezi-funtzioaren sintaxia "(a, b) -> a + b" da "function(a, b) return a + b"-ren ordez.
  • Balio Nuluen erabilerarekin lotutako arazoen aurkako babesa (ezaugarri esperimentala, eremu, klase edo pakete jakin batzuetarako gaituta aukeran).
  • "Azken" gako-hitza aldaezinak diren klase-eremu eta aldagai lokaletarako da. "final" funtzioak definitzeko ere erabil daiteke, herentziaz gainidatzi ez daitezen eta heredatu ezin diren klase/interfazeetarako.
  • Lagundu "String" oinarrizko motarako Unicode estandarra konpilazio helburu guztietan Neko izan ezik.
  • Hutsetik berridatzitako interprete integratua, orain izenpean datorrena eval. Interprete berriari esker, scriptak eta makroak askoz azkarrago exekutatzen dira. Arazketa modu interaktiboa onartzen da.
  • Helburu-sistema berria konpilatzeko (helburua) Hashlink - Haxerentzat bereziki diseinatutako errendimendu handiko exekuzio-denbora, JIT edo C-rako bytecoderako konpilazioa onartzen duena, C-rekin integratzeko erraza du, baita maila baxuko zenbaki-mota eta erakusleetarako sarbidea ere.
  • JVM helburu berria - jvm bytecode sortzeko aukera ematen du Java kodea konpilatzeko urratsa saltatuz, "-D jvm" marka gehituz Javan bideratzen denean.
  • Funtzioak edo eraikitzaileak deitzeko puntuan barne-inplementatzeko gaitasuna, hala deklaratu ez badira ere.
  • Sartzeko aukera luzapen estatikoak mota bat deklaratzean (adibidez, "enum") "@:using(path.ToExtension)" erabiliz.
  • Mota abstraktuak orain "@:op(ab)" operadorearen "set" bertsioa onartzen dute "obj.foo = bar" adierazpenak berriro kargatzeko.
  • "for" begizta sintaxiak orain gako-balioaren iterazioa onartzen du: "for (gako => balioa bilduman) {}".
  • Adierazpenetan xml antzeko markaketa erabiltzeko laguntza: β€œvar a = β€Ήhi/β€Ί;”. Oraingoz, funtzio hau makroekin analizatzeko bakarrik dago erabilgarri eta diseinu fasean dago.
  • Egitura mota anonimoen idazkera β€œosoa”ko aukerako eremuen sintaxia hau da: β€œ{ var ?f:Int; }" ("{ ?f:Int }" laburren alternatiba).
  • Enum-balioak orain funtzio-argumentuen balio lehenetsiak izan daitezke: "funtzioa fooβ€ΉTβ€Ί (aukera: Aukeraβ€ΉTβ€Ί = Bat ere ez)".
  • "Enum abstraktua Name(BasicType) {}" sintaxiak jada ez du "@:" aurrizkia behar "enum".
  • Zenbaketa automatikoa zenbaketa abstraktuetarako:

    enum abstraktua Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstraktua Barra (katea) {
    var A; // "A"
    var B; // "B"
    }

  • "Kanpoko" gako-hitzak jada ez du "@:" aurrizkia erabiltzea eskatzen.
  • Aukera kendu du "lanabesak Dynamic" klase-eremuak kateen bidez sartzeko. Kanpoko klaseetarako edo mota abstraktu baten inplementazio bidez eskuragarri.
  • Motaren elkargunerako "A & B" sintaxia gehitu da, gaur egun egitura anonimoei eta mota-parametroen murrizketei soilik aplikatzen zaiena. Murrizketa sintaxi zaharra kendu da.
  • "Mapa" instantzia hutsak sortzea "var map:Mapβ€ΉInt, Stringβ€Ί = [];" sintaxiaren bidez dago eskuragarri. array baten antzekoa.
  • "haxe.ds.ReadOnlyArray" datu-egitura gehitu da.
  • Metadatuek orain izen-espazioak izan ditzakete ("@:prefix.name function() {…}"). Antzera definizioekin: β€œ#bada (batzuk.bandera ... #amaiera”.
  • Zerbitzu-protokolo berria erabilitako IDEetarako VSCoderako plugina.
  • Web APIetarako kanpoko definizioak (kanpokoak) eguneratuak eta falta direnak gehitu dira.

Iturria: opennet.ru

Gehitu iruzkin berria