Ħruġ tal-lingwa ta' programmar Haxe 4.1

Disponibbli rilaxx ta' toolkit Haxe 4.1, li tinkludi l-lingwa ta 'programmar ta' livell għoli multi-paradigma ta 'l-istess isem b'ittajpjar qawwi, cross-compiler u librerija standard ta' funzjonijiet. Il-proġett jappoġġja t-traduzzjoni għal C++, HashLink/C, JavaScript, C#, Java, PHP, Python u Lua, kif ukoll il-kumpilazzjoni għal JVM, HashLink/JIT, Flash u Neko bytecode, b'aċċess għall-kapaċitajiet indiġeni ta 'kull pjattaforma fil-mira. Kodiċi tal-kompilatur imqassma minn taħt il-liċenzja GPLv2, u l-librerija standard u l-magni virtwali żviluppati għal Haxe HashLink и neko taħt il-liċenzja MIT.

Il-lingwa hija orjentat lejn l-espressjoni b'ittajpjar qawwi. Tekniki ta' programmazzjoni orjentati lejn l-oġġetti, ġeneriċi u funzjonali huma appoġġjati. Is-sintassi Haxe hija qrib ECMAScript u tespandi il-karatteristiċi tiegħu bħal tajpjar statiku, inferenza awtotip, tqabbil tal-mudelli, ġeneriċi, għal loops ibbażati fuq iteratur, makro AST, GADT (Tipi ta' Dejta Alġebrin Ġeneralizzat), tipi astratti, strutturi anonimi, definizzjonijiet ta' array simplifikati, espressjonijiet ta' kumpilazzjoni kondizzjonali, twaħħil ta' metadata ma' oqsma , klassijiet u espressjonijiet, interpolazzjoni ta' string ("'Ismi $name'"), parametri tat-tip ("New Main("foo")'), u hafna aktar.

test tal-klassi {
funzjoni statika main() {
nies finali = [
"Elizabeth" => "Ipprogrammar",
"Joel" => "Disinn"
];

għal (isem => xogħol fin-nies) {
trace('$isem jagħmel $job għal għajxien!');
}
}
}

Karatteristiċi ġodda fil-verżjoni 4.1:

  • Miżjud ottimizzazzjoni tar-rikorsi tad-denb.
  • Żieda API unifikata ġdida għall-immaniġġjar tal-eċċezzjonijiet.
  • Il-kostruzzjoni "pprova {} catch(e) {}" hija permessa bħala shorthand għal "pprova {} catch(e: haxe.Exception) {}".
  • Miżjud appoġġ SSL għall-interpretu eval.
  • Il-JVM fil-mira m'għadhiex meqjusa bħala sperimentali.
  • Għal Language Server Protocol, ġie miżjud appoġġ għall-funzjonijiet "Implimentazzjoni Goto" u "Sib referenzi".
  • Ismijiet imtejba tal-varjabbli lokali temporanji fil-kodiċi ġġenerat. Tneħħiet "ritorn;" żejda; fil-funzjonijiet vleġġa mingħajr valur ta 'ritorn.
  • Kombinazzjonijiet ta' aċċess (get, default) huma permessi fuq il-fields (getter biss, imġieba ta' assenjazzjoni default).
  • Ħalli operaturi inkrement u tnaqqis għall-oqsma tipi astratti.
  • Inlining imtejjeb ta' for loops bl-użu ta' iteraturi anonimi.
  • js: Implimentazzjoni StringMap imtejba għal ES5.
  • js: Ġenerazzjoni ta 'varjabbli let ġiet miżjuda mal-għażla tal-kompilatur "-D js-es=6", il-ġenerazzjoni tal-klassijiet ES6 ġiet imtejba.
  • lua: "StringIterator" ottimizzat, immaniġġjar tal-iżbalji mtejba.
  • php: Ottimizzat "Std.isOfType" għal tipi bażi.
  • php: Arrays iġġenerati issa jimplimentaw l-interfaces nattivi "Iterator", "IteratorAggregate", "Countable".
  • cs: Metadata miżjuda "@:assemblyMeta" u "@:assemblyStrict".
  • python: implimentazzjoni miżjuda ta' "__contains__" għal oġġetti anonimi
    u "__getitem__", li jippermettilhom li jintużaw bħala dizzjunarji fil-kodiċi ġġenerat.

  • jvm: Prestazzjoni mtejba b'mod sinifikanti bis-saħħa ta' mod ġdid ta' aċċess għall-funzjonijiet ittajpjati u ta' ġenerazzjoni ta' interfaces addizzjonali f'każijiet fejn l-oġġetti jintużaw bħala strutturi anonimi (il-tfittxija ta' proprjetà dinamika hija evitata):
    Ħruġ tal-lingwa ta' programmar Haxe 4.1

Titjib fil-librerija standard:

  • Miżjud "Array.contains" funzjoni.
  • Miżjud "Array.keyValueIterator", li jimplimenta iterazzjoni tal-valur ewlieni għall-arrays ("għal (ċavetta => valur fl-array)").
  • Tip ta' restrizzjoni miżjuda "haxe.Constraints.NotVoid".
  • Il-funzjonijiet “findIndex” u “foldi” ġew miżjuda mal-klassi “Lambda”.
  • "Aċċess għall-array" implimentati (aċċess permezz "arr[i]") u iterazzjoni tal-valur ewlieni għal "haxe.ds.HashMap".
  • jvm: Verżjonijiet speċifiċi għall-JVM implimentati ta' "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Użati implimentazzjonijiet indiġeni ta' "MD5", "SHA-1" u "SHA-256" għall-moduli "haxe.crypto".
  • makro: Miżjud "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: Il-modalità "Strett" issa hija ttrattata bħala b'kamin wieħed; miżjud "StrictThreaded" modalità.
  • "Std.is" ġie deprecated favur "Std.isOfType".
  • Żid twissija meta tuża varjabbli lokali mingħajr valuri fl-għeluq.
  • js: "untyped __js__(code, args)" hija deprecata, mibdula bi "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" u "php.Web" ġew deprecati u se jiġu mċaqalqa għal-librerija "hx4compat" aktar tard.

Fir-rilaxx li jmiss huma ppjanati:

  • Titjib fil-maniġer tal-pakketti haxelib.
  • Sistema asinkronika bbażata fuq API libuv.
  • Coroutines.
  • Tiddikjara funzjonijiet statiċi modulari u varjabbli mingħajr ma toħloq klassijiet (diġà disponibbli fil-bini ta 'filgħaxija).

Sors: opennet.ru

Żid kumment