Kutolewa kwa lugha ya programu Haxe 4.1

Inapatikana kutolewa kwa zana Haksi 4.1, ambayo inajumuisha lugha ya programu ya kiwango cha juu ya dhana nyingi ya jina moja na kuandika kwa nguvu, kikusanya mchanganyiko na maktaba ya kawaida ya utendaji. Mradi huu unaauni utafsiri kwa C++, HashLink/C, JavaScript, C#, Java, PHP, Python na Lua, pamoja na mkusanyiko wa JVM, HashLink/JIT, Flash na Neko bytecode, na ufikiaji wa uwezo asili wa kila jukwaa lengwa. Msimbo wa mkusanyaji kusambazwa na chini ya leseni ya GPLv2, na maktaba ya kawaida na mashine pepe zilizotengenezwa kwa ajili ya Haxe HashLink ΠΈ Neko chini ya leseni ya MIT.

Lugha ni yenye mwelekeo wa kujieleza kwa kuandika kwa nguvu. Mbinu zinazolengwa na kitu, za kawaida na za utendakazi zinatumika. Syntax ya Haxe iko karibu na ECMAScript na hupanuka vipengele vyake kama vile uchapaji tuli, uelekezaji wa aina otomatiki, ulinganishaji wa muundo, jeneriki, msingi wa kirudia kwa vitanzi, makro ya AST, GADT (Aina za Data za Aljebra za Jumla), aina za muhtasari, miundo isiyojulikana, ufafanuzi wa safu uliorahisishwa, usemi wa ujumuishaji wa masharti, kuambatisha metadata kwenye sehemu. , madarasa na misemo, tafsiri ya kamba (β€œ'Jina langu ni $name'”), aina ya vigezo ('new Main("foo")'), na mengi zaidi.

mtihani wa darasa {
kazi tuli kuu() {
watu wa mwisho = [
"Elizabeth" => "Kupanga programu",
"Joel" => "Design"
];

kwa (jina => kazi kwa watu) {
trace(β€˜Jina la $inafanya kazi ya $kujipatia riziki!’);
}
}
}

Vipengele vipya katika toleo la 4.1:

  • Uboreshaji wa urejeshaji mkia ulioongezwa.
  • Imeongeza API mpya iliyounganishwa kwa ushughulikiaji wa kipekee.
  • Muundo "jaribu {} catch(e) {}" unaruhusiwa kama mkato wa "jaribu {} catch(e: haxe.Exception) {}".
  • Imeongeza usaidizi wa SSL kwa mkalimani wa eval.
  • JVM inayolengwa haizingatiwi tena kuwa ya majaribio.
  • Kwa Itifaki ya Seva ya Lugha, usaidizi wa vipengele vya "Utekelezaji wa Goto" na "Tafuta marejeleo" umeongezwa.
  • Upeanaji wa majina ulioboreshwa wa vibadala vya ndani vya muda katika msimbo uliozalishwa. Kuondolewa redundant "kurudi;" katika vitendaji vya mshale bila thamani ya kurejesha.
  • Michanganyiko ya ufikiaji (pata, chaguo-msingi) inaruhusiwa kwenye sehemu (mpataji pekee, tabia chaguomsingi ya mgawo).
  • Ruhusu waendeshaji wa kuongeza na kupunguza kwa uga aina za muhtasari.
  • Uingizaji ndani ulioboreshwa wa kwa vitanzi kwa kutumia viambishi visivyojulikana.
  • js: Utekelezaji ulioboreshwa wa StringMap kwa ES5.
  • js: Uzalishaji wa vigeu vya let umeongezwa kwa chaguo la mkusanyaji "-D js-es=6", uzalishaji wa madarasa ya ES6 umeboreshwa.
  • lua: "StringIterator" imeboreshwa, utunzaji wa makosa umeboreshwa.
  • php: Imeboreshwa "Std.isOfType" kwa aina za msingi.
  • php: Safu zinazozalishwa sasa zinatekeleza violesura asili "Iterator", "IteratorAggregate", "Inaweza kuhesabika".
  • cs: Metadata iliyoongezwa "@:assemblyMeta" na "@:assemblyStrict".
  • python: utekelezaji ulioongezwa wa "__contains__" kwa vitu visivyojulikana
    na "__getitem__", ambayo huziruhusu kutumika kama kamusi katika msimbo uliotolewa.

  • jvm: Shukrani za utendaji zilizoboreshwa sana kwa njia mpya ya kufikia vitendaji vilivyochapwa na kutoa miingiliano ya ziada katika hali ambapo vitu vinatumika kama miundo isiyojulikana (utafutaji wa mali unaobadilika umezuiwa):
    Kutolewa kwa lugha ya programu Haxe 4.1

Maboresho katika maktaba ya kawaida:

  • Kitendaji cha "Array.contains" kimeongezwa.
  • Imeongezwa "Array.keyValueIterator", ambayo hutekeleza urudiaji wa thamani ya ufunguo kwa safu ("kwa (ufunguo => thamani katika safu)").
  • Aina ya kizuizi kilichoongezwa "haxe.Constraints.NotVoid".
  • Kazi za "findIndex" na "foldi" zimeongezwa kwenye darasa la "Lambda".
  • "Ufikiaji wa safu" umetekelezwa (ufikiaji kupitia "arr[i]") na urudiaji wa thamani ya "haxe.ds.HashMap".
  • jvm: Matoleo mahususi ya JVM yaliyotekelezwa ya "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Utekelezaji asilia uliotumika wa "MD5", "SHA-1" na "SHA-256" kwa moduli za "haxe.crypto".
  • jumla: Imeongezwa "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: "Kali" mode sasa inachukuliwa kama thread moja; aliongeza "StrictThreaded" mode.
  • "Std.is" imeacha kutumika kwa ajili ya "Std.isOfType".
  • Imeongeza onyo wakati wa kutumia vigeu vya ndani bila maadili katika kufungwa.
  • js: "untyped __js__(code, args)" imeacha kutumika, nafasi yake kuchukuliwa na "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" na "php.Web" zimeacha kutumika na zitahamishiwa kwenye maktaba ya "hx4compat" baadaye.

Katika toleo linalofuata zimepangwa:

  • Maboresho ya msimamizi wa kifurushi haxellib.
  • API ya mfumo wa Asynchronous libuv.
  • Coroutines.
  • Kutangaza vitendaji tuli vya msimu na vigeuzo bila kuunda madarasa (tayari yanapatikana katika miundo ya usiku).

Chanzo: opennet.ru

Kuongeza maoni