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

Në dispozicion lëshimi i paketës së veglave Haxe 4.1, i cili përfshin gjuhën e programimit të nivelit të lartë me shumë paradigmë me të njëjtin emër me shtypje të fortë, një ndër-përpilues dhe një bibliotekë standarde funksionesh. Projekti mbështet përkthimin në C++, HashLink/C, JavaScript, C#, Java, PHP, Python dhe Lua, si dhe përpilimin në JVM, HashLink/JIT, Flash dhe Neko bytecode, me akses në aftësitë vendase të çdo platforme të synuar. Kodi i përpiluesit shperndare nga nën licencën GPLv2, dhe bibliotekën standarde dhe makinat virtuale të zhvilluara për Haxe HashLink и neko nën licencën MIT.

Gjuha është të orientuar drejt shprehjes me shtypje të fortë. Mbështeten teknikat e programimit të orientuara drejt objekteve, gjenerike dhe funksionale. Sintaksa Haxe është afër ECMAScript dhe zgjerohet veçoritë e tij si shtypja statike, konkluzionet automatike, përputhja e modeleve, gjenerikët, unazat e bazuara në iterator, makrotë AST, GADT (Llojet e të Dhënave Algjebrike të Përgjithshme), llojet abstrakte, strukturat anonime, përkufizimet e thjeshtuara të grupeve, shprehjet e përpilimit të kushtëzuar, bashkëngjitja e meta të dhënave në fusha , klasat dhe shprehjet, interpolimi i vargjeve ("My name is $name"), parametrat e tipit ('new Main ("foo")') dhe me shume.

testi i klasës {
funksioni statik main() {
njerëzit e fundit = [
"Elizabeth" => "Programim",
"Joel" => "Dizajn"
];

për (emri => punë në njerëz) {
trace('$name bën $punë për të jetuar!');
}
}
}

Karakteristikat e reja në versionin 4.1:

  • Optimizimi i rekursionit të bishtit të shtuar.
  • U shtua një API e re e unifikuar për trajtimin e përjashtimeve.
  • Konstrukti "try {} catch(e) {}" lejohet si një stenografi për "provo {} catch(e: haxe.Exception) {}".
  • U shtua mbështetje SSL për përkthyesin eval.
  • Objektivi JVM nuk konsiderohet më eksperimental.
  • Për Protokollin e Serverit të Gjuhës, është shtuar mbështetje për funksionet "Shko Implementimi" dhe "Gjej referenca".
  • Emërtimi i përmirësuar i ndryshoreve të përkohshme lokale në kodin e krijuar. U hoq "kthimi" i tepërt; në funksionet me shigjetë pa vlerë kthyese.
  • Kombinimet e aksesit (merr, parazgjedhje) lejohen në fusha (vetëm marrës, sjellje e paracaktuar e caktimit).
  • Lejo operatorët e rritjes dhe zvogëlimit për fushat llojet abstrakte.
  • Përmirësimi i rreshtimit të sytheve for duke përdorur përsëritës anonimë.
  • js: Implementimi i përmirësuar i StringMap për ES5.
  • js: Gjenerimi i variablave let është shtuar në opsionin e përpiluesit “-D js-es=6”, gjenerimi i klasave ES6 është përmirësuar.
  • lua: "StringIterator" i optimizuar, trajtimi i gabimeve është përmirësuar.
  • php: Optimizuar "Std.isOfType" për llojet bazë.
  • php: Vargjet e krijuara tani zbatojnë ndërfaqet vendase "Iterator", "IteratorAggregate", "Countable".
  • cs: Metadatat e shtuara "@:assemblyMeta" dhe "@:assemblyStrict".
  • python: shtoi zbatimin e "__contains__" në objekte anonime
    dhe "__getitem__", e cila i lejon ata të përdoren si fjalorë në kodin e krijuar.

  • jvm: Performanca e përmirësuar ndjeshëm falë një mënyre të re për të aksesuar funksionet e shtypura dhe për të gjeneruar ndërfaqe shtesë në rastet kur objektet përdoren si struktura anonime (kërkimi dinamik i pronave parandalohet):
    Lëshimi i gjuhës së programimit Haxe 4.1

Përmirësimet në bibliotekën standarde:

  • U shtua funksioni "Array.contains".
  • U shtua "Array.keyValueIterator", i cili zbaton përsëritjen e vlerave kyçe për vargje ("for (key => vlera në grup)").
  • Lloji i kufizimit të shtuar "haxe.Constraints.NotVoid".
  • Funksionet "findIndex" dhe "foldi" janë shtuar në klasën "Lambda".
  • U zbatua "qasja në grup" (qasja përmes "arr[i]") dhe përsëritja e vlerës së çelësit për "haxe.ds.HashMap".
  • jvm: Versione specifike të implementuara për JVM të "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Implementime të përdorura origjinale të "MD5", "SHA-1" dhe "SHA-256" për modulet "haxe.crypto".
  • makro: U shtua "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: Modaliteti "strikt" tani trajtohet si një filetim i vetëm; shtoi modalitetin "StrictThreaded".
  • "Std.is" është zhvlerësuar në favor të "Std.isOfType".
  • U shtua një paralajmërim kur përdorni variabla lokale pa vlera në mbyllje.
  • js: "i pashtypur __js__(kodi, args)" është i vjetëruar, i zëvendësuar nga "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" dhe "php.Web" janë zhvlerësuar dhe do të zhvendosen në bibliotekën "hx4compat" më vonë.

Në publikimin e radhës janë planifikuar:

  • Përmirësimet e menaxherit të paketave haxelib.
  • Bazuar në API të sistemit asinkron libuv.
  • Korutina.
  • Deklarimi i funksioneve dhe variablave statike modulare pa krijuar klasa (tashmë e disponueshme në ndërtimet e natës).

Burimi: opennet.ru

Shto një koment