Lëshimi i gjuhës së programimit Haxe 4.1

I verfüshëm lirimi i veglës Haxe 4.1, duke përfshin një gjuhë programimi multikompare të nivelit të lartë me tipizim të fortë, kompileri ndërplatformë dhe bibliotekën standarde të funksioneve. Projekti mbështet përkthimin në C++, HashLink/C, JavaScript, C#, Java, PHP, Python dhe Lua, si dhe kompilimin në bytecode JVM, HashLink/JIT, Flash dhe Neko, me qasje në mundësitë native të çdo platforme të synuar. Kodi i kompajlerit distribuohet nën licencën GPLv2, ndërsa biblioteka standarde dhe makinat virtuale në zhvillim për Haxe HashLink dhe Neko në përputhje me licencën MIT.

Gjuha është orientuar në shprehje me tipizim të fortë. Mbështeten praktikat e programimit objekt-orientuar, të përgjithsuar dhe funksional. Sintaksa e Haxe është e ngjashme me ECMAScript dhe shkallëzon atë me mundësi si tipizimi statik, deduksionin automatik të tipit, përputhjen e modeleve, gjenerikët, ciklin 'for' të bazuar në iterues, makrotë AST, GADT (Tipet e Të Dhënave të Përgjithësuara), llojet abstrakte, struktura anonime, përkufizime të thjeshta të array-ve, shprehje për përpilimin e kushti, ngjitur metadata në fusha, klasa dhe shprehje, interpolimi i vargjeve (‘My name is $name’), parametrat e tipeve (‘new Main<String>(“foo”)’) dhe shumë më tepër.

class Test {
funkcioni statik kryesor() {
njerëzit përfundimtarë = [
«Elizabeth» => «Programim»,
«Joel» => «Dizajn»
];

për (emri => puna në njerëzit) {
trace(‘$emri bën $punë për një jetë!’);
}
}
}

Novitetet e versionit 4.1:

  • Shtuar optimizimi i rekursioneve tail.
  • Shtuar një API të ri të unifikuar për trajtimin e përjashtimeve.
  • Lejohet konstrukti «try {} catch(e) {}» si një shkurtim për «try {} catch(e: haxe.Exception) {}».
  • mbështetje për SSL e shtuar në interpretuesin eval.
  • Platforma e synuar JVM nuk konsiderohet më eksperimentale.
  • Për Protokollin e Serverit të Gjuhëve shtuar mbështetje për funksionet «Shko te Zbatimi» dhe «Gjej referencat».
  • Përmirësuar emërimin e variablave të përkohshëm në kodin e gjeneruar. Eliminuar «return;» të tepërta në funksionet e harkut pa vlerë kthimi.
  • Për fushat lejohet kombinimi i aksesit (merr, parazgjedhje) (vetëm geter, sjellja për caktimin në parazgjedhje).
  • Lejohet operatorët e rritjes dhe uljes për fushat tipet abstrakte.
  • Përmirësuar vendosja (inlining) e cikleve for duke përdorur iterues anonim.
  • js: Përmirësuar realizimi i StringMap për ES5.
  • js: Në opsionin e kompilatorit «-D js-es=6» shtuar gjenerimi i variablave let, përmirësuar gjenerimin e klasave ES6.
  • lua: optimizuar «StringIterator», përmirësuar trajtimi i gabimeve.
  • php: Optimizuar «Std.isOfType» për llojet bazë.
  • php: Të gjeneruarat tani implementojnë ndërfaqet native «Iterator», «IteratorAggregate», «Countable».
  • cs: Metadatet «@:assemblyMeta» dhe «@:assemblyStrict» janë shtuar.
  • python: Në objektet anonime është shtuar implementimi «__contains__».
    dhe «__getitem__», duke lejuar përdorimin e tyre si fjalorë në kodin e gjeneruar.
  • jvm: Përdorimi i një metode të re për të quajtur funksionet e tipizuar dhe gjenerimin e ndërfaqeve shtesë në rastet kur objektet përdoren si struktura anonime (parandalimi i kërkimit dinamik të pronave):
    Lëshimi i gjuhës së programimit Haxe 4.1

Përmirësime në bibliotekën standarde:

  • Shtuar funksionin «Array.contains».
  • Shtuar «Array.keyValueIterator», që implementon iterimin key-value për arrays («for (key => value in array)»).
  • Shtuar kufizimin e tipit «haxe.Constraints.NotVoid».
  • Në klasën «Lambda» janë shtuar funksionet «findIndex» dhe «foldi».
  • Implementuar «array access» (qasje përmes «arr[i]») dhe iterimi key-value për «haxe.ds.HashMap».
  • jvm: Janë implementuar versionet specifike për JVM të «StringMap», «sys.thread.Lock», «sys.thread.Thread».
  • java/jvm: Janë përdorur implementimet native të «MD5», «SHA-1» dhe «SHA-256» për modulët «haxe.crypto».
  • macro: Shtuar «haxe.macro.Context.containsDisplayPosition(pos)».
  • nullsafety: moda «Strict» tani shqyrtohet si një njësi e vetme; është shtuar moda «StrictThreaded».
  • «Std.is» është shpallur i vjetruar në favor të «Std.isOfType».
  • Është shtuar një paralajmërim kur përdoren variablat lokale pa vlera në mbyllje.
  • js: «untyped __js__(code, args)» është shpallur i vjetruar, në vend të tij ofrohet «js.Syntax.code(code, args)».
  • php/neko: «neko.Web» dhe «php.Web» janë shpallur të vjetëruar dhe do të zhvendosen më vonë në bibliotekën «hx4compat».

Në versionin e ardhshëm janë planifikuar:

  • Përmirësimi i menaxherit të paketave haxelib.
  • API sistemik asinkron në bazë të libuv.
  • Korrutinat (coroutines).
  • Deklarimi i funksioneve statike modulare dhe variablave pa krijuar klasa (më në fund i disponueshëm në ndërtimet e natës).

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster