Ukukhutshwa kolwimi lwenkqubo Haxe 4.1

Iyafumaneka ukukhutshwa kwezixhobo zokusebenza Haxe 4.1, equka i-multi-paradigm yolwimi lweprogram yezinga eliphezulu legama elifanayo kunye nokuchwetheza okunamandla, umqambi onqamlekileyo kunye nelayibrari eqhelekileyo yemisebenzi. Iprojekthi isekela ukuguqulelwa kwi-C ++, i-HashLink / C, i-JavaScript, i-C #, i-Java, i-PHP, i-Python kunye ne-Lua, kunye nokuhlanganiswa kwe-JVM, i-HashLink / i-JIT, i-Flash kunye ne-Neko bytecode, kunye nokufikelela kwizakhono zomthonyama zeplatifomu nganye ekujoliswe kuyo. Ikhowudi yomqokeleli isasazwa ngu phantsi kwelayisensi ye-GPLv2, kunye nethala leencwadi elisemgangathweni kunye noomatshini ababonakalayo abaphuhliselwe i-Haxe HashLink ΠΈ neko phantsi kwelayisenisi ye-MIT.

Ulwimi lu ijolise kwintetho ngokuchwetheza olomeleleyo. Iinkqubo ezijolise kwinjongo, igeneric kunye neendlela ezisebenzayo zokucwangcisa ziyaxhaswa. I-syntax ye-Haxe ikufutshane ne-ECMAScript kwaye yandisa iimpawu zayo ezifana nokuchwetheza okumileyo, ukuchaneka kwe-autotype, uthelekiso lwepateni, iigenerics, iterator-based for loops, AST macros, GADT (Generalized Algebraic Data Types), iintlobo ze-abstract, izakhiwo ezingachazwanga, iinkcazelo zoluhlu olulula, intetho yoqulunqo olunemiqathango, incamathela imetadata kwimimandla. , iiklasi kunye namazwi, uguqulelo lomtya (β€œ'Igama lam ndingu-$name'”), uhlobo lweeparamitha ('entsha Engundoqo("foo")'), kunye Okuninzi.

Uvavanyo lweklasi {
umsebenzi ongatshintshiyo () {
abantu bokugqibela = [
"Elizabeth" => "Ukucwangcisa",
"Joweli" => "Yila"
];

kuba (igama => umsebenzi ebantwini) {
trace(β€˜igama le-$ lenza umsebenzi we-$ ukuze uziphilise!’);
}
}
}

Iimpawu ezitsha kwinguqulo 4.1:

  • Ukongezwa komsila we-recursion.
  • Kongezwe i-API entsha edibeneyo yokuphatha ngaphandle.
  • Ulwakhiwo "try {} catch(e) {}" luvumelekile njenge shorthand for "try {} catch(e: haxe.Exception) {}".
  • Inkxaso eyongeziweyo ye-SSL kwitoliki yokulinganisa.
  • I-JVM ekujoliswe kuyo ayisathathwa njengovavanyo.
  • KwiProtokholi yeSeva yoLwimi, inkxaso ye "Goto Implementation" kunye "Fumana iireferensi" imisebenzi yongeziwe.
  • Ukunikwa kwamagama okuphuculweyo okuguquguqukayo kwendawo okwethutyana kwikhowudi eyenziweyo. Kususwe okungafunekiyo "ukubuya;" kwimisebenzi yotolo ngaphandle kwexabiso lokubuyisela.
  • Ufikelelo indibaniselwano (fumana, okungagqibekanga) zivumelekile kwimihlaba (fumana kuphela, ukuziphatha isabelo esimiselweyo).
  • Vumela ukongezwa kunye nokunciphisa abasebenzi kwiindawo iintlobo abstract.
  • Uphuculo longaphakathi lwelophu kusetyenziswa iziphindaphindi-magama ezingachazwanga.
  • js: Ukuphunyezwa kweStringMap ephuculweyo ye-ES5.
  • js: Isizukulwana se-let variables kongezwe kukhetho lomqokeleli "-D js-es=6", ukuveliswa kweeklasi ze-ES6 kuphuculwe.
  • lua: "StringIterator" iphuculwe, ukuphathwa kwempazamo kuphuculwe.
  • php: Ilungiselelwe "Std.isOfType" kwiindidi zesiseko.
  • php: Uluhlu oluveziweyo ngoku lusebenzisa ujongano lwendalo "Iterator", "IteratorAggregate", "Inokubalwa".
  • cs: Imetadata eyongeziweyo "@:assemblyMeta" kunye "@:assemblyStrict".
  • python: ukuphunyezwa okongeziweyo kwe "__contains__" kwizinto ezingachazwanga
    kunye "__getitem__", evumela ukuba zisetyenziswe njengezichazi-magama kwikhowudi eyenziweyo.

  • I-jvm: Ukusebenza okuphuculweyo okuphawulekayo kwindlela entsha yokufikelela kwimisebenzi echwetheziweyo kunye nokuvelisa ujongano olongezelelweyo kwiimeko apho izinto zisetyenziswa njengezakhiwo ezingachazwanga (ujongo lwepropathi eguqukayo luthintelwe):
    Ukukhutshwa kolwimi lwenkqubo Haxe 4.1

Uphuculo kwithala leencwadi elisemgangathweni:

  • Kongezwe "Array.contains" umsebenzi.
  • Kongezwe "Array.keyValueIterator", esebenzisa isitshixo-ixabiso lokuphinda kuluhlu ("for (isitshixo => ixabiso kuluhlu)").
  • Uhlobo lwesithintelo esongeziweyo "haxe.Constraints.NotVoid".
  • Imisebenzi ethi "findIndex" kunye ne "foldi" yongezwe kwiklasi ye "Lambda".
  • Kuphunyeziwe "ufikelelo kuluhlu" (ufikelelo nge "arr[i]") kunye nesitshixo-ixabiso lokuphinda "haxe.ds.HashMap".
  • jvm: Iphunyeziwe iinguqulelo ezithile zeJVM ze "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Kusetyenziswe umiliselo lwemveli lwe-"MD5", "SHA-1" kunye ne-"SHA-256" kwiimodyuli ze-"haxe.crypto".
  • macro: Yongezwe "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strict" indlela ngoku iphathwa njengomsonto omnye; yongeza "StrictThreaded" imowudi.
  • "Std.is" iyekisiwe kusenzelwa i-"Std.isOfType".
  • Yongeza isilumkiso xa usebenzisa izinto eziguquguqukayo zasekhaya ngaphandle kwamaxabiso ekuvalweni.
  • js: "engabhalwanga __js__(ikhowudi, args)" iyekisiwe, endaweni yayo ngu "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" kunye ne "php.Web" zilahliwe kwaye ziya kusiwa kwithala leencwadi elithi "hx4compat" kamva.

Kukhupho olulandelayo zicwangcisiwe:

  • Ukuphuculwa komphathi wepakethi haxelib.
  • Asynchronous system API esekwe libuv.
  • IiCoroutines.
  • Ukubhengeza imisebenzi yemodyuli ye-static kunye nokuguquguquka ngaphandle kokudala iiklasi (esele zikhona kwizakhiwo zasebusuku).

umthombo: opennet.ru

Yongeza izimvo