అందుబాటులో టూల్కిట్ విడుదల హాక్స్ 4.0, ఇది బలమైన టైపింగ్, క్రాస్-కంపైలర్ మరియు ఫంక్షన్ల ప్రామాణిక లైబ్రరీతో అదే పేరుతో బహుళ-పారాడిగ్మ్ హై-లెవల్ ప్రోగ్రామింగ్ లాంగ్వేజ్ను కలిగి ఉంటుంది. ప్రాజెక్ట్ C++, HashLink/C, JavaScript, C#, Java, PHP, Python మరియు Luaకి అనువాదంతో పాటు JVM, HashLink/JIT, Flash మరియు Neko బైట్కోడ్లకు ప్రతి లక్ష్య ప్లాట్ఫారమ్ యొక్క స్థానిక సామర్థ్యాలకు యాక్సెస్తో అనువాదానికి మద్దతు ఇస్తుంది. కంపైలర్ కోడ్ ద్వారా పంపిణీ చేయబడింది GPLv2 లైసెన్స్ క్రింద, మరియు Haxe కోసం ఒక ప్రామాణిక లైబ్రరీ మరియు వర్చువల్ మిషన్ అభివృద్ధి చేయబడింది నెకో MIT లైసెన్స్ కింద.
భాష ఉంది వ్యక్తీకరణ-ఆధారిత బలమైన టైపింగ్తో. ఆబ్జెక్ట్-ఓరియెంటెడ్, జెనెరిక్ మరియు ఫంక్షనల్ ప్రోగ్రామింగ్ కాన్సెప్ట్లకు మద్దతు ఉంది.
Haxe సింటాక్స్ ECMAScriptకు దగ్గరగా ఉంది మరియు విస్తరిస్తుంది స్టాటిక్ టైపింగ్, ఆటోటైప్ ఇన్ఫరెన్స్, ప్యాటర్న్ మ్యాచింగ్, జెనరిక్స్, ఇటరేటర్ ఆధారిత లూప్లు, AST మాక్రోలు, GADT (జనరలైజ్డ్ ఆల్జీబ్రేక్ డేటా రకాలు), నైరూప్య రకాలు, అనామక నిర్మాణాలు, సరళీకృత శ్రేణి నిర్వచనాలు, షరతులతో కూడిన కంపైలేషన్ ఎక్స్ప్రెషన్లు, ఫీల్డ్కి అటాచ్ చేసే మెటాడేటా వంటి దాని లక్షణాలు , తరగతులు మరియు వ్యక్తీకరణలు, స్ట్రింగ్ ఇంటర్పోలేషన్ ('నా పేరు $పేరు'), టైప్ పారామీటర్లు ("కొత్త మెయిన్‹String›('foo')"), మరియు ఇంకా చాలా.
తరగతి పరీక్ష {
స్టాటిక్ ఫంక్షన్ మెయిన్() {
var ప్రజలు = [
"ఎలిజబెత్" => "ప్రోగ్రామింగ్",
"జోయెల్" => "డిజైన్"
];
కోసం (people.keysలో పేరు()) {
var ఉద్యోగం = వ్యక్తులు[పేరు];
ట్రేస్ ('$పేరు జీవించడానికి $ ఉద్యోగం చేస్తుంది!');
}
}
}
"String->Int->Bool"కి బదులుగా "(పేరు:String, వయస్సు:Int)->Bool" లేదా "(String, Int)->Bool" రకాన్ని పేర్కొనడానికి కొత్త సింటాక్స్.
బాణం ఫంక్షన్ సింటాక్స్ "(a, b) -> a + b"కి బదులుగా "function(a, b) return a + b".
శూన్య విలువలు (ప్రయోగాత్మక ఫీచర్, నిర్దిష్ట ఫీల్డ్లు, తరగతులు లేదా ప్యాకేజీల కోసం ఐచ్ఛికంగా ప్రారంభించబడినవి) ఉపయోగించడంతో సంబంధం ఉన్న సమస్యల నుండి రక్షణ.
"ఫైనల్" కీవర్డ్ అనేది క్లాస్ ఫీల్డ్లు మరియు మార్పులేని స్థానిక వేరియబుల్స్ కోసం. "ఫైనల్" అనేది వారసత్వం ద్వారా వాటిని భర్తీ చేయకుండా నిరోధించడానికి మరియు వారసత్వంగా పొందలేని తరగతులు/ఇంటర్ఫేస్ల కోసం ఫంక్షన్లను నిర్వచించడానికి కూడా ఉపయోగించవచ్చు.
Поддержка Neko మినహా అన్ని కంపైలేషన్ లక్ష్యాలపై బేస్ రకం "స్ట్రింగ్" కోసం యూనికోడ్ ప్రమాణం.
అంతర్నిర్మిత వ్యాఖ్యాత మొదటి నుండి తిరిగి వ్రాయబడింది, ఇది ఇప్పుడు పేరుతో వస్తుంది ఈవల్. కొత్త ఇంటర్ప్రెటర్కు ధన్యవాదాలు, స్క్రిప్ట్లు మరియు మాక్రోలు చాలా వేగంగా పని చేస్తాయి. ఇంటరాక్టివ్ డీబగ్గింగ్ మోడ్కు మద్దతు ఉంది.
సంకలనం కోసం కొత్త లక్ష్య వ్యవస్థ (లక్ష్యం) హాష్లింక్ - Haxe కోసం ప్రత్యేకంగా రూపొందించబడిన అధిక-పనితీరు గల రన్టైమ్, JIT లేదా C కోసం బైట్కోడ్కు కంపైలేషన్కు మద్దతు ఇస్తుంది, Cతో సులభంగా ఏకీకరణను కలిగి ఉంటుంది, అలాగే తక్కువ-స్థాయి సంఖ్యా రకాలు మరియు పాయింటర్లకు ప్రాప్యతను కలిగి ఉంటుంది.
కొత్త JVM లక్ష్యం - జావాలో టార్గెట్ చేస్తున్నప్పుడు "-D jvm" ఫ్లాగ్ని జోడించడం ద్వారా జావా కోడ్ కంపైలేషన్ దశను దాటవేయడం ద్వారా jvm బైట్కోడ్ను రూపొందించడానికి మిమ్మల్ని అనుమతిస్తుంది.
ఫంక్షన్లు లేదా కన్స్ట్రక్టర్లను కాల్ చేసే సమయంలో ఇన్లైన్-డిప్లాయ్ చేయగల సామర్థ్యం, అవి అలా ప్రకటించబడకపోయినా.
చేర్చే అవకాశం స్థిర పొడిగింపులు "@:using(path.ToExtension)" ఉపయోగించి రకాన్ని ("enum" వంటివి) ప్రకటించేటప్పుడు.
వియుక్త రకాలు ఇప్పుడు "obj.foo = బార్" ఎక్స్ప్రెషన్లను రీలోడ్ చేయడానికి "@:op(ab)" ఆపరేటర్ యొక్క "సెట్" వెర్షన్కు మద్దతు ఇస్తుంది.
"ఫర్" లూప్ సింటాక్స్ ఇప్పుడు కీ-విలువ పునరావృతానికి మద్దతు ఇస్తుంది: "కోసం (కీ => సేకరణలో విలువ) {}".
వ్యక్తీకరణలలో xml-వంటి మార్కప్ని ఉపయోగించడం కోసం మద్దతు: “var a = ‹hi/›;”. ప్రస్తుతానికి, ఈ ఫీచర్ మాక్రోలతో అన్వయించడానికి మాత్రమే అందుబాటులో ఉంది మరియు డిజైన్ దశలో ఉంది.
అనామక నిర్మాణ రకాలు యొక్క “పూర్తి” సంజ్ఞామానంలో ఐచ్ఛిక ఫీల్డ్ల కోసం సింటాక్స్: “{var ?f:Int; }" (చిన్న "{ ?f:Int }"కి ప్రత్యామ్నాయం).
Enum విలువలు ఇప్పుడు ఫంక్షన్ ఆర్గ్యుమెంట్ల కోసం డిఫాల్ట్ విలువలుగా ఉండవచ్చు: "ఫంక్షన్ foo‹T›(ఎంపిక:Option‹T› = ఏదీ లేదు)".
"enum అబ్స్ట్రాక్ట్ పేరు(బేసిక్ టైప్) {}" సింటాక్స్కి ఇకపై "enum"లో "@:" ప్రిఫిక్స్ అవసరం లేదు.
వియుక్త గణనల కోసం ఆటో-నంబరింగ్:
enum abstract Foo(Int) {
var A; // 0
var B; // 1
}
enum నైరూప్య పట్టీ(స్ట్రింగ్) {
var A; // "ఎ"
var B; // "బి"
}
"ఎక్స్టర్న్" కీవర్డ్కి ఇకపై "@:" ఉపసర్గను ఉపయోగించాల్సిన అవసరం లేదు.
ఎంపిక తీసివేయబడింది "పనిముట్లు స్ట్రింగ్స్ ద్వారా క్లాస్ ఫీల్డ్లను యాక్సెస్ చేయడానికి డైనమిక్". బాహ్య తరగతులకు లేదా నైరూప్య రకం ద్వారా అమలు చేయడం ద్వారా అందుబాటులో ఉంటుంది.
టైప్ ఖండన కోసం "A & B" సింటాక్స్ జోడించబడింది, ఇది ప్రస్తుతం అనామక నిర్మాణాలు మరియు టైప్ పారామీటర్ పరిమితులకు మాత్రమే వర్తిస్తుంది. పాత నిర్బంధ వాక్యనిర్మాణం తీసివేయబడింది.
ఖాళీ "మ్యాప్" ఉదంతాలను సృష్టించడం సింటాక్స్ "var map:Map‹Int, String› = [];" ద్వారా అందుబాటులో ఉంటుంది. శ్రేణిని పోలి ఉంటుంది.
డేటా నిర్మాణం "haxe.ds.ReadOnlyArray" జోడించబడింది.
మెటాడేటా ఇప్పుడు నేమ్స్పేస్లను కలిగి ఉంటుంది (“@:prefix.name ఫంక్షన్() {…}”). అదేవిధంగా నిర్వచనాలతో: "#if (some.flag ... #end".