Kuburitswa kwemutauro wechirongwa Haxe 4.1

Inowanikwa toolkit release Haxe 4.1, iyo inosanganisira yakawanda-paradigm yepamusoro-level programming mutauro wezita rimwe chete nekunyora kwakasimba, muchinjika-musanganiswa uye raibhurari yakajairika yemabasa. Iyo purojekiti inotsigira kududzira kuC ++, HashLink/C, JavaScript, C#, Java, PHP, Python uye Lua, pamwe nekubatanidza kuJVM, HashLink/JIT, Flash uye Neko bytecode, nekuwana kugona kwekugona kwepuratifomu yega yega. Compiler kodhi inoparadzirwa ne pasi peGPLv2 rezinesi, uye raibhurari yakajairwa nemichina chaiyo yakagadzirirwa Haxe HashLink ΠΈ neko pasi peMIT rezinesi.

Mutauro ndiwo kutaura-kunakirwa netaipa yakasimba. Zvinangwa-zvakanangana nechinhu, generic uye zvinoshanda zvirongwa zvekuronga zvinotsigirwa. Haxe syntax iri padyo neECMAScript uye inowedzera maficha ayo akadai se static typing, autotype inference, pattern matching, generics, iterator-based for looops, AST macros, GADT (Generalized Algebraic Data Types), abstract types, zvimiro zvisingazivikanwe, tsananguro dzakareruka dzakareruka, mataurirwo ekubatanidza, kubatanidza metadata kuminda. , makirasi uye mataurirwo, tambo kududzira (β€œ'Zita rangu ndi $zita'”), mhando paramita ('itsva Main ("foo")') uye zvakawanda.

kirasi Muedzo {
static basa guru () {
vanhu vekupedzisira = [
"Elizabeth" => "Kuronga",
"Joel" => "Gadzira"
];

ye (zita => basa muvanhu) {
trace('$zita rinoita $basa kuti urarame!');
}
}
}

Zvinyowani mushanduro 4.1:

  • Yakawedzerwa muswe recursion optimization.
  • Yakawedzera API itsva yakabatana yekubata zvisirizvo.
  • Kuvaka "try {} catch(e) {}" inotenderwa seshorthand yekuti "try {} catch(e: haxe.Exception) {}".
  • Yakawedzera SSL rutsigiro kune eval muturikiri.
  • Chinangwa cheJVM hachichaonekwi sekuyedza.
  • Kune Mutauro Server Protocol, rutsigiro rwe "Goto Implementation" uye "Tsvaga mareferensi" mabasa akawedzerwa.
  • Mazita akakwenenzverwa enguva pfupi mavhezheni mumakodhi akagadzirwa. Yakabviswa zvisina basa "kudzoka;" mumiseve inoshanda isina mutengo wekudzoka.
  • Kupinda musanganiswa (tora, default) inotenderwa paminda (getter chete, default assignment maitiro).
  • Bvumira kuwedzera uye kuderedza vashandi veminda abstract types.
  • Yakavandudzwa inlining yezvishwe uchishandisa asingazivikanwe iterators.
  • js: Yakavandudzwa StringMap kushandiswa kweES5.
  • js: Chizvarwa chekusiya zvinosiyana chakawedzerwa kune iyo compiler sarudzo "-D js-es = 6", chizvarwa cheES6 makirasi akagadziridzwa.
  • lua: "StringIterator" yakagadziridzwa, kukanganisa kubata kwakagadziridzwa.
  • php: Yakagadziridzwa "Std.isOfType" yemhando dzepasi.
  • php: Yakagadzirwa arrays ikozvino shandisa iyo yemuno interfaces "Iterator", "IteratorAggregate", "Inoverengeka".
  • cs: Yakawedzera metadata "@:assemblyMeta" uye "@:assemblyStrict".
  • python: yakawedzera kushandiswa kwe "__contains__" kune zvisingazivikanwe zvinhu
    uye "__getitem__", izvo zvinovatendera kuti vashandiswe semaduramazwi mukodhi yakagadzirwa.

  • jvm: Yakanyanya kunatsiridza mashandiro nekuda kwenzira nyowani yekuwana mabasa akataipa uye kugadzira mamwe mainterface mumamiriro ezvinhu apo zvinhu zvinoshandiswa sezvimiro zvisingazivikanwe (dynamic property lookup inodziviswa):
    Kuburitswa kwemutauro wechirongwa Haxe 4.1

Kunatsiridzwa muraibhurari yakajairwa:

  • Yakawedzera "Array.contains" basa.
  • Yakawedzerwa "Array.keyValueIterator", iyo inoshandisa key-value iteration kune arrays ("ye (kiyi => kukosha mune array)").
  • Yakawedzera kumanikidza mhando "haxe.Constraints.NotVoid".
  • Iyo "findIndex" uye "foldi" mabasa akawedzerwa kukirasi ye "Lambda".
  • Yakaitwa "array access" (kusvika kuburikidza ne"arr[i]") uye kiyi-value iteration ye "haxe.ds.HashMap".
  • jvm: Implemented JVM-specific versions of "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Kushandiswa kwekuzvarwa kwe "MD5", "SHA-1" uye "SHA-256" ye "haxe.crypto" modules.
  • macro: Yakawedzerwa "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Yakasimba" modhi yave kubatwa seyakarukwa imwechete; yakawedzera "StrictThreaded" mode.
  • "Std.is" yakarambwa nekuda kwe "Std.isOfType".
  • Yakawedzera yambiro kana uchishandisa zvimiro zvemuno zvisina kukosha mukuvharwa.
  • js: "isina kunyorwa __js__(code, args)" yakaraswa, yotsiviwa ne"js.Syntax.code(code, args)".
  • php/neko: "neko.Web" uye "php.Web" zvakaraswa uye zvichaendeswa kuraibhurari ye "hx4compat" gare gare.

Mukuburitswa kunotevera zvakarongwa:

  • Package manager kunatsurudza haxelib.
  • Asynchronous system API yakavakirwa libuv.
  • Coroutines.
  • Kuzivisa modular static mabasa uye akasiyana pasina kugadzira makirasi (atove aripo muhusiku kuvaka).

Source: opennet.ru

Voeg