Rilaxx tas-sett ta 'għodda Haxe 4.2 huwa disponibbli, li jinkludi l-lingwa ta' programmar ta 'livell għoli multi-paradigma tal-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 kumpilazzjoni għal JVM, HashLink/JIT, Flash u Neko bytecode, b'aċċess għall-kapaċitajiet indiġeni ta 'kull pjattaforma fil-mira. Il-kodiċi tal-kompilatur huwa mqassam taħt il-liċenzja GPLv2, u l-librerija standard u l-magni virtwali HashLink u Neko żviluppati għal Haxe huma liċenzjati taħt il-liċenzja MIT.
Il-lingwa hija orjentata lejn l-espressjoni b'tajpjar qawwi. Tekniki ta' programmazzjoni orjentati lejn l-oġġetti, ġeneriċi u funzjonali huma appoġġjati. Is-sintassi ta' Haxe hija qrib l-ECMAScript u testendiha b'karatteristiċi bħal tajpjar statiku, inferenza tat-tip awtomatiku, tqabbil tal-mudelli, ġeneriċi, for loops ibbażati fuq iteratur, AST macros, GADT (Tipi ta' Dejta Alġebrin Ġeneralizzat), tipi astratti, strutturi anonimi, simplifikati definizzjonijiet arrays, espressjonijiet għal kumpilazzjoni kondizzjonali, twaħħil ta' metadata ma' oqsma, klassijiet u espressjonijiet, interpolazzjoni ta' string ('Ismi $isem'), parametri tat-tip ('New Main (“foo”)’) u ħafna oħrajn. Class Test { static function main() { final people = [ "Elizabeth" => "Programmazzjoni", "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.2:
- Id-dikjarazzjoni ta' varjabbli statiċi u funzjonijiet fil-livell tal-modulu, mingħajr il-ħtieġa li tkebbebhom fi klassi.
- Appoġġ għal klassijiet u funzjonijiet astratti "klassiċi".
- Implimentazzjoni nattiva tal-funzjonijiet variadic għall-pjattaformi kollha fil-mira (haxe.Rest) u żieda tal-operatur ta 'espansjoni tal-argument "f(... array)".
- Implimentazzjoni ta' ċirku ta' avveniment għal ħjut individwali (“sys.thread.Thread.events”).
- Metadejta "@:inheritDoc" għad-dokumentazzjoni tat-tip/qasam li tirret.
- Appoġġ ta 'tagħbija żejda ta' metodi għal metodi esterni fuq il-pjattaformi kollha fil-mira.
- Tgħaddi l-kostruttur sottostanti tat-tip tiegħu lill-astratt bl-użu tal-metadejta “@:forward.new”.
- Miżjud "EIs" kostruttur għal "haxe.macro.Expr".
- Kapaċità li tagħmel varjant tat-tip astratt b'"@:forward.variance".
- Rappreżentazzjoni tat-tip "Kull" bħala "Dinamika" meta tgħaqqad il-varjazzjoni.
- Żieda xi tipi bażiċi ta 'eċċezzjoni mal-pakkett "haxe.exceptions".
- Appoġġ għat-twaħħil tal-metadejta meta jiġu ddikjarati varjabbli.
- Funzjoni "StringTools.unsafeCharAt" użata għall-iterazzjoni ta' string.
- eval (interpretu): Żieda rbit għal "libuv" fil-pakkett "eval.luv".
- eval: rbit ma' implimentazzjonijiet indiġeni ta' "Int64" u "UInt64" permezz tal-pakkett "eval.integers".
- cs: Implimentazzjoni tas-socket UDP.
- cs: "cs.Syntax" modulu għal inserzjonijiet inline ta 'kodiċi C#.
- jvm: Żid il-bandiera "-D jvm.dynamic-level=x" biex tikkontrolla n-numru ta 'ottimizzazzjonijiet iġġenerati għall-kodiċi dinamiku. 0 = xejn, 1 = qasam qari/kitba ottimizzazzjoni, 2 = għeluq metodu fil-ħin tal-kompilazzjoni.
- java, jvm: Appoġġ għall-bandiera "--java-lib <direttorju>".
- python: implimentazzjoni tal-API tal-kamini.
Titjib ġenerali:
- "expr is SomeType" ma teħtieġx tgeżwir fil-parentesi.
- Żieda fil-prijorità għall-estensjonijiet tat-tip "@:using".
- Jippermetti l-użu ta 'estensjonijiet tat-tip statiku permezz ta' "super".
- Kapaċità li tissettja metadejta għal oqsma “@:noDoc”.
- It-tip astratt "Mappa" isir tranżittiv.
- Appoġġ għal "@:native" fuq il-kostrutturi enum.
- Appoġġ għal "@:using" fuq dikjarazzjonijiet tat-tip ("typedefs").
- Żbalji multiline jużaw "..." bħala prefiss għal-linji sussegwenti.
- L-inferenza tat-tip ġiet maħduma mill-ġdid, l-istrutturi anonimi huma kkonvertiti aħjar għal tipi espliċiti u "magħluqa" meta titlesta l-funzjoni.
- Jiġi dedott it-tip ta' funzjonijiet mingħajr argumenti bħala "()->..." minflok "Void->...".
- Il-kelma prinċipali "funzjoni" hija permessa bħala isem tal-pakkett.
- Inlining imtejjeb ta 'oġġetti.
- cs: Appoġġ miżjud għal .NET 5.0.
- cpp: Appoġġ għal kostrutturi indiġeni għal klassijiet esterni.
- php: Miżjud "php.Syntax.customArrayDecl" biex tiddikjara firxa nattiva.
- php: Metodi esterni aġġornati għal diversi funzjonijiet u klassijiet.
- php: Implimentazzjoni ottimizzata ta' strutturi anonimi.
- hl: Aqbeż il-kumpilazzjoni jekk ma jkunx hemm bidliet fil-moduli.
- lua: Uża "hx-lua-simdjson" biex teżamina json.
- jvm: Tnaqqis tat-tagħbija tas-CPU fl-implimentazzjoni "sys.thread.Lock".
- js: Kompatibilità mtejba mal-Google Closure Compiler.
- Sigurtà Null: Ikkunsidra "@:nullSafety(Off)" meta tiddikjara varjabbli: "var @:nullSafety(Off) v".
Ukoll, iż-żieda mal-editur VSCode ġiet aġġornata għall-verżjoni l-ġdida tal-kompilatur, li fiha dehru ħjiel bil-ġenerazzjoni ta 'oqsma neqsin ta' interfaces, klassijiet sempliċi u astratti, kif ukoll metodi ta 'proprjetà.
Sors: opennet.ru
