Kutolewa kwa lugha ya programu Haxe 4.0

Inapatikana kutolewa kwa zana Haksi 4.0, 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 iliyotengenezwa kwa ajili ya Haxe Neko chini ya leseni ya MIT.

Lugha ni yenye mwelekeo wa kujieleza kwa kuandika kwa nguvu. Dhana zinazolengwa na kitu, za kawaida na za utendakazi zinaungwa mkono.
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β€ΉStringβ€Ί('foo')"), na mengi zaidi.

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

kwa (jina katika people.keys()) {
var job = watu[jina];
trace(β€˜Jina la $inafanya kazi ya $kujipatia riziki!’);
}
}
}

kuu ubunifu toleo la 4.0:

  • Sintaksia mpya ya kubainisha aina ya chaguo la kukokotoa "(jina:Kamba, umri:Int)->Bool" au "(Kamba, Int)->Bool" badala ya "String->Int->Bool".
  • Sintaksia ya utendakazi wa mshale ni "(a, b) -> a + b" badala ya "kazi(a, b) rudisha + b".
  • Ulinzi dhidi ya shida zinazohusiana na utumiaji wa nambari za Null (kipengele cha majaribio, kuwezeshwa kwa hiari kwa sehemu fulani, madarasa au vifurushi).
  • Neno kuu la "mwisho" ni la sehemu za darasa na vigeu vya ndani ambavyo havibadiliki. "mwisho" pia inaweza kutumika kufafanua chaguo za kukokotoa ili kuzizuia zisichukuliwe na urithi na kwa madarasa/miingiliano ambayo haiwezi kurithiwa.
  • Support Kiwango cha Unicode cha aina ya msingi "Kamba" kwenye malengo yote ya mkusanyiko isipokuwa Neko.
  • Mkalimani aliyejengewa ndani iliyoandikwa upya kutoka mwanzo, ambayo sasa inakuja chini ya jina Tathmini. Shukrani kwa mkalimani mpya, hati na macros huendesha haraka zaidi. Hali ya utatuzi shirikishi inatumika.
  • Mfumo mpya lengwa wa mkusanyiko (lengo) Hashlink - muda wa utekelezaji wa utendaji wa juu ulioundwa mahususi kwa ajili ya Haxe, inayosaidia ujumuishaji wa bytecode kwa JIT au C, ina muunganisho rahisi na C, pamoja na ufikiaji wa aina na viashiria vya kiwango cha chini.
  • Lengo jipya la JVM - hukuruhusu kutoa jvm bytecode kwa kuruka hatua ya ujumuishaji wa msimbo wa Java kwa kuongeza bendera ya "-D jvm" unapolenga katika Java.
  • Uwezo wa kuweka ndani ya mstari katika hatua ya kupiga simu kazi au waundaji, hata kama hazijatangazwa hivyo.
  • Uwezekano wa kuingizwa upanuzi tuli wakati wa kutangaza aina (kama vile "enum") kwa kutumia "@:using(path.ToExtension)".
  • Aina za mukhtasari sasa zinaauni toleo la "set" la opereta "@:op(ab)" ili kupakia upya usemi wa "obj.foo = bar".
  • Sintaksia ya "kwa" sasa inasaidia urekebishaji wa thamani-msingi: "kwa (ufunguo => thamani katika mkusanyiko) {}".
  • Usaidizi wa kutumia alama zinazofanana na xml katika semi: β€œvar a = β€Ήhi/β€Ί;”. Kwa sasa, kipengele hiki kinapatikana tu kwa uchanganuzi na macros na kiko katika hatua ya kubuni.
  • Sintaksia ya sehemu za hiari katika nukuu "kamili" ya aina zisizojulikana za muundo ni: "{ var ?f:Int; }" (mbadala ya neno fupi "{ ?f:Int }").
  • Thamani za Enum sasa zinaweza kuwa maadili chaguo-msingi kwa hoja za chaguo-msingi: "function fooβ€ΉTβ€Ί(chaguo:Chaguoβ€ΉTβ€Ί = Hakuna)".
  • Sintaksia ya "enum abstract Name(BasicType) {}" haihitaji tena kiambishi awali cha "@:" katika "enum".
  • Kuweka nambari kiotomatiki kwa hesabu za mukhtasari:

    enum abstract Foo(Int) {
    var A; // 0
    var B; // 1
    }
    enum abstract Bar(Kamba) {
    var A; // "A"
    var B; // "B"
    }

  • Neno kuu la "nje" halihitaji tena matumizi ya kiambishi awali cha "@:".
  • Imeondoa chaguo "vifaa Dynamic" ili kufikia sehemu za darasa kupitia mifuatano. Inapatikana kwa madarasa ya nje au kupitia utekelezaji na aina ya dhahania.
  • Sintaksia ya "A & B" imeongezwa kwa makutano ya aina, ambayo kwa sasa inatumika tu kwa miundo isiyojulikana na vizuizi vya vigezo vya aina. Sintaksia ya kikwazo ya zamani imeondolewa.
  • Kuunda hali tupu za "Ramani" kunapatikana kupitia syntax "var map:Mapβ€ΉInt, Stringβ€Ί = [];" sawa na safu.
  • Muundo wa data ulioongezwa "haxe.ds.ReadOnlyArray".
  • Metadata sasa inaweza kuwa na nafasi za majina (β€œ@:prefix.name function() {…}”). Vile vile na ufafanuzi: "#if (some.flag ... #end".
  • Itifaki mpya ya huduma kwa IDE zinazotumika katika programu-jalizi ya VSCode.
  • Ilisasisha ufafanuzi wa nje (wa nje) wa API za Wavuti na kuongeza ambazo hazipo.

Chanzo: opennet.ru

Kuongeza maoni