Kutulutsidwa kwa chilankhulo cha pulogalamu Haxe 4.1

Ipezeka kumasulidwa kwa zida Hax 4.1, yomwe imaphatikizapo chinenero cha mapulogalamu apamwamba a paradigm omwe ali ndi dzina lomwelo ndi kulemba mwamphamvu, cross compiler ndi laibulale yokhazikika ya ntchito. Pulojekitiyi imathandizira kumasulira kwa C ++, HashLink/C, JavaScript, C#, Java, PHP, Python ndi Lua, komanso kuphatikiza ku JVM, HashLink/JIT, Flash ndi Neko bytecode, ndi mwayi wopeza mphamvu zakubadwa za nsanja iliyonse yomwe mukufuna. Compiler kodi wogawidwa ndi pansi pa chiphatso cha GPLv2, ndi laibulale yokhazikika ndi makina enieni opangidwira Haxe HashLink ΠΈ neko pansi pa layisensi ya MIT.

Chilankhulo ndi kufotokoza ndi kulemba mwamphamvu. Njira zopangira zinthu, zokhazikika komanso zogwira ntchito zimathandizidwa. Haxe syntax ili pafupi ndi ECMAScript ndi amakula mawonekedwe ake monga static typing, autotype inference, pattern matching, generics, iterator-based for looops, AST macros, GADT (Generalized Algebraic Data Types), mitundu yosadziwika, mawonekedwe osadziwika, matanthauzo osavuta, mawu ophatikizika, kuyika metadata kumadera. , makalasi ndi mawu, kumasulira kwa zingwe ("'Dzina langa ndi $name'"), lembani magawo ('Main Main ("foo")') ndi zambiri.

Mayeso a kalasi {
static function main () {
anthu omaliza = [
"Elizabeth" => "Mapulogalamu",
"Joel" => "Kupanga"
];

kwa (dzina => ntchito mwa anthu) {
trace('$name imagwira ntchito kuti mupeze ndalama!');
}
}
}

Zatsopano mu mtundu 4.1:

  • Anawonjezera mchira recursion kukhathamiritsa.
  • Onjezani API yatsopano yogwirizana kuti igwire ntchito mwapadera.
  • Kupanga "try {} catch(e) {}" kumaloledwa ngati chidule cha "try {} catch(e: haxe.Exception) {}".
  • Anawonjezera thandizo la SSL kwa womasulira wa eval.
  • Cholinga cha JVM sichikuganiziridwanso ngati kuyesa.
  • Pa Language Server Protocol, chithandizo cha "Goto Implementation" ndi "Pezani zolozera" zawonjezedwa.
  • Kuwongolera kwamatchulidwe azosintha kwakanthawi kochepa m'makhodi opangidwa. Kuchotsa redundant "kubwerera;" mu ntchito za mivi popanda mtengo wobwezera.
  • Kuphatikizika kofikira (pezani, kusakhazikika) kumaloledwa m'magawo (opeza okha, machitidwe osasinthika).
  • Lolani ma increment and decrement oparetors for fields mitundu yosamvetsetseka.
  • Kuyika bwino kwa malupu pogwiritsa ntchito zilembo zosadziwika.
  • js: Kuwongolera kwa StringMap kwa ES5.
  • js: Generation of let variables yawonjezedwa ku njira yophatikizira "-D js-es=6", m'badwo wa makalasi a ES6 wawongoleredwa.
  • lua: "StringIterator" yokongoletsedwa, kukonza zolakwika kwasintha.
  • php: Kukometsedwa "Std.isOfType" pamitundu yoyambira.
  • php: Zopanga zopanga tsopano zimagwiritsa ntchito mawonekedwe awo "Iterator", "IteratorAggregate", "Countable".
  • cs: Metadata yowonjezeredwa "@:assemblyMeta" ndi "@:assemblyStrict".
  • python: kuwonjezera kukhazikitsa kwa "__contains__" kuzinthu zosadziwika
    ndi "__getitem__", zomwe zimawathandiza kuti azigwiritsidwa ntchito ngati dikishonale mu code yopangidwa.

  • jvm: Kuchita bwino kwabwino kwambiri chifukwa cha njira yatsopano yopezera ntchito zotayidwa komanso kupanga zolumikizira zina ngati zinthu zikugwiritsidwa ntchito ngati zinthu zosadziwika (mawonekedwe amphamvu amaletsedwa):
    Kutulutsidwa kwa chilankhulo cha pulogalamu Haxe 4.1

Kusintha kwa laibulale yokhazikika:

  • Anawonjezera "Array.contains" ntchito.
  • Yowonjezedwa "Array.keyValueIterator", yomwe imagwiritsa ntchito kubwereza kwa mtengo wamtengo wapatali pamagulu ("kwa (key => mtengo mumagulu)").
  • Mtundu woletsa wowonjezera "haxe.Constraints.NotVoid".
  • Ntchito za "findIndex" ndi "foldi" zawonjezedwa kugulu la "Lambda".
  • "Kufikira kosiyanasiyana" (kufikira kudzera pa "arr[i]") ndi kubwereza kufunikira kwa "haxe.ds.HashMap".
  • jvm: Matembenuzidwe a JVM-enieni a "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Ntchito zokhazikitsidwa za "MD5", "SHA-1" ndi "SHA-256" pamagawo a "haxe.crypto".
  • zazikulu: Zowonjezeredwa "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Strict" mode tsopano imatengedwa ngati ulusi umodzi; adawonjezera "StrictThreaded" mode.
  • "Std.is" yachotsedwa ntchito mokomera "Std.isOfType".
  • Anawonjezera chenjezo mukamagwiritsa ntchito zosintha zakomweko popanda zikhalidwe zotsekera.
  • js: "osatayidwa __js__(code, args)" wachotsedwa, m'malo mwake "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" ndi "php.Web" zachotsedwa ndipo zidzasamutsidwira ku laibulale ya "hx4compat" pambuyo pake.

Mu kumasulidwa lotsatira zakonzedwa:

  • Kusintha kwa oyang'anira phukusi haxelib.
  • Asynchronous system API yochokera libu.
  • Ma Coroutines.
  • Kulengeza ma modular static ntchito ndi zosinthika popanda kupanga makalasi (omwe amapezeka kale pamapangidwe ausiku).

Source: opennet.ru

Kuwonjezera ndemanga