Ukukhishwa kolimi lokuhlela Haxe 4.1

Iyatholakala ukukhululwa kwekhithi yamathuluzi I-Haxe 4.1, okufaka ulimi lohlelo lwezinga eliphezulu lezinga eliphezulu le-multi-paradigm elinokuthayipha okuqinile, i-cross-compiler kanye nomtapo wezincwadi ojwayelekile wemisebenzi. Le phrojekthi isekela ukuhunyushelwa ku-C++, HashLink/C, JavaScript, C#, Java, PHP, Python kanye ne-Lua, kanye nokuhlanganiswa ku-JVM, HashLink/JIT, Flash kanye ne-Neko bytecode, ngokufinyelela kumakhono omdabu epulatifomu ngayinye eqondiwe. Ikhodi ye-Compiler isatshalaliswa ngu ngaphansi kwelayisensi ye-GPLv2, kanye nomtapo wolwazi ojwayelekile kanye nemishini ebonakalayo eyenzelwe i-Haxe I-HashLink и UNeko ngaphansi kwelayisensi ye-MIT.

Ulimi okuqondiswe ekuboniseni ngokuthayipha okuqinile. Amasu okuhlela agxile entweni, ajwayelekile futhi asebenzayo ayasekelwa. I-syntax ye-Haxe iseduze ne-ECMAScript futhi liyanwebeka izici zayo ezifana nokuthayipha okumile, ukuchazwa kwe-autotype, ukufaniswa kwephethini, amajenerikhi, i-iterator-based for looops, AST macros, GADT (Izinhlobo Zedatha Ye-Algebraic Ejwayelekile), izinhlobo ezingabonakali, izakhiwo ezingaziwa, izincazelo zamalungu afanayo lula, izinkulumo zokuhlanganiswa ezinemibandela, ukunamathisela imethadatha ezinkambuni. , amakilasi nezinkulumo, ukutolika kweyunithi yezinhlamvu (“'Igama lami ngingu-$name'”), thayipha amapharamitha ('okukhulu okusha ("foo")') kanye okuningi kakhulu.

Ukuhlolwa kwekilasi {
umsebenzi omile main() {
abantu bokugcina = [
"Elizabeth" => "Ukuhlela",
"Joel" => "Idizayini"
];

for (igama => umsebenzi kubantu) {
trace('igama le-$ lenza umsebenzi wokuziphilisa!');
}
}
}

Izici ezintsha kunguqulo 4.1:

  • Kungezwe ukwenziwa ngcono komsila.
  • Kwengezwe i-API entsha ehlanganisiwe yokusingatha okuhlukile.
  • Isakhiwo esithi "try {} catch(e) {}" sivunyelwe njengesifinyezo sokuthi "zama {} catch(e: haxe.Exception) {}".
  • Kwengezwe usekelo lwe-SSL kumhumushi we-eval.
  • I-JVM ehlosiwe ayisabhekwa njengokuhlola.
  • Kuphrothokholi Yeseva Yolimi, usekelo lwemisebenzi ethi "Goto Implementation" kanye "Thola izithenjwa" yengeziwe.
  • Ukuqamba okuthuthukisiwe kokuguquguquka kwendawo kwesikhashana kukhodi ekhiqiziwe. Kususwe "ukubuya" okungafuneki; emisebenzini yomcibisholo ngaphandle kwenani lokubuyisela.
  • Izinhlanganisela zokufinyelela (thola, okuzenzakalelayo) zivunyelwe ezinkambuni (i-getter kuphela, impatho eyabelwe ezenzakalelayo).
  • Vumela ama-opharetha akhuphukayo kanye nokwehlisa izinkambu izinhlobo abstract.
  • Ukufakwa ngaphakathi kwemigqa okuthuthukisiwe kwamalophu kusetshenziswa iziphindi ezingaziwa.
  • js: Ukuqaliswa kwe-StringMap okuthuthukisiwe kwe-ES5.
  • js: Isizukulwane se-let variables sengezwe kunketho yomhlanganisi “-D js-es=6”, ukukhiqizwa kwamakilasi e-ES6 kuthuthukisiwe.
  • lua: "I-StringIterator" yenziwe kahle, ukuphathwa kwephutha kuthuthukisiwe.
  • php: Kulungiselelwe "Std.isOfType" ngezinhlobo eziyisisekelo.
  • php: Amalungu afanayo akhiqiziwe manje asebenzisa ukuxhumana komdabu “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Imethadatha engeziwe "@:assemblyMeta" kanye "@:assemblyStrict".
  • I-python: ukuqaliswa okungeziwe kwe-"__contains__" ezintweni ezingaziwa
    kanye ne-"__getitem__", ezivumela ukuthi zisetshenziswe njengezichazamazwi kukhodi ekhiqiziwe.

  • I-jvm: Ukusebenza okuthuthuke kakhulu sibonga indlela entsha yokufinyelela imisebenzi ethayiphiwe kanye nokukhiqiza ukuxhumana okungeziwe ezimeni lapho izinto zisetshenziswa njengezakhiwo ezingaziwa (ukubheka impahla eguqukayo kuvinjelwe):
    Ukukhishwa kolimi lokuhlela Haxe 4.1

Ukuthuthukiswa kulabhulali ejwayelekile:

  • Kwengezwe umsebenzi othi "Array.contains".
  • Kwengezwe okuthi "Array.keyValueIterator", esebenzisa ukuphindaphinda kwenani lokhiye kumalungu afanayo ("for (ukhiye => inani kuhlelo)").
  • Kungezwe uhlobo lokukhawulela "haxe.Constraints.NotVoid".
  • Imisebenzi ye-“findIndex” kanye ne-“foldi” yengezwe esigabeni se-“Lambda”.
  • Kusetshenziswe "ukufinyelela kwamalungu afanayo" (ukufinyelela nge-"arr[i]") kanye nokuphindaphinda inani elingukhiye le-"haxe.ds.HashMap".
  • jvm: Kusetshenziswe izinguqulo eziqondene ne-JVM ze-"StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • i-java/jvm: Kusetshenziswe ukusetshenziswa komdabu kwe-"MD5", "SHA-1" kanye ne-"SHA-256" kumamojula we-"haxe.crypto".
  • macro: Kwengezwe "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: Imodi "Eqinile" manje isithathwa njengentambo eyodwa; wengeze imodi ethi "StrictThreaded".
  • I-"Std.is" yehlisiwe ukuze ivune i-"Std.isOfType".
  • Kwengezwe isexwayiso lapho usebenzisa okuguquguqukayo kwasendaweni ngaphandle kwamanani ekuvaleni.
  • js: "okungabhalwanga __js__(ikhodi, args)" yehlisiwe, esikhundleni salokho "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" kanye ne-"php.Web" kwehlisiwe futhi izothuthelwa kumtapo wezincwadi we-"hx4compat" kamuva.

Ekukhululweni okulandelayo zihleliwe:

  • Ukuthuthukiswa komphathi wephakheji haxelib.
  • I-Asynchronous system API esekelwe libuv.
  • Ama-Coroutines.
  • Ukumemezela imisebenzi ye-modular static kanye nokuguquguqukayo ngaphandle kokudala amakilasi (avele atholakala ngokwakhiwa kwasebusuku).

Source: opennet.ru

Engeza amazwana