Luau ప్రోగ్రామింగ్ లాంగ్వేజ్ యొక్క మొదటి స్వతంత్ర విడుదల యొక్క ఓపెన్ సోర్స్ మరియు ప్రచురణను ప్రకటించింది, Lua భాష యొక్క అభివృద్ధిని కొనసాగిస్తూ మరియు Lua 5.1తో వెనుకబడిన అనుకూలతను కలిగి ఉంది. Luau ప్రాథమికంగా స్క్రిప్టింగ్ ఇంజిన్లను అప్లికేషన్లలో పొందుపరచడానికి రూపొందించబడింది మరియు అధిక పనితీరు మరియు తక్కువ వనరుల వినియోగాన్ని సాధించడం లక్ష్యంగా పెట్టుకుంది. ప్రాజెక్ట్ కోడ్ C++లో వ్రాయబడింది మరియు MIT లైసెన్స్ క్రింద తెరవబడుతుంది.
లువా టైప్ చెకింగ్ సామర్థ్యాలు మరియు స్ట్రింగ్ లిటరల్స్ వంటి కొన్ని కొత్త వాక్యనిర్మాణ నిర్మాణాలతో లువాను విస్తరించింది. భాష Lua 5.1 మరియు పాక్షికంగా కొత్త వెర్షన్లతో వెనుకకు అనుకూలంగా ఉంది. Lua Runtime APIకి మద్దతు ఉంది, ఇది ఇప్పటికే ఉన్న కోడ్ మరియు బైండింగ్లతో Luauని ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. లాంగ్వేజ్ రన్టైమ్ భారీగా రీవర్క్ చేయబడిన లువా రన్టైమ్ 5.1 కోడ్పై ఆధారపడి ఉంటుంది, అయితే ఇంటర్ప్రెటర్ పూర్తిగా తిరిగి వ్రాయబడింది. అభివృద్ధి సమయంలో, లువాతో పోలిస్తే అధిక పనితీరును సాధించడానికి కొన్ని కొత్త ఆప్టిమైజేషన్ పద్ధతులు ఉపయోగించబడ్డాయి.
ప్రాజెక్ట్ Roblox చే అభివృద్ధి చేయబడింది మరియు Roblox Studio ఎడిటర్తో సహా ఈ కంపెనీ యొక్క గేమింగ్ ప్లాట్ఫారమ్, గేమ్లు మరియు యూజర్ అప్లికేషన్ల కోడ్లో ఉపయోగించబడుతుంది. ప్రారంభంలో, లువా మూసివేసిన తలుపుల వెనుక అభివృద్ధి చేయబడింది, కానీ చివరికి సంఘం భాగస్వామ్యంతో మరింత ఉమ్మడి అభివృద్ధి కోసం బహిరంగ ప్రాజెక్టుల వర్గానికి బదిలీ చేయాలని నిర్ణయించారు.
ప్రధాన లక్షణాలు
- క్రమమైన టైపింగ్, డైనమిక్ మరియు స్టాటిక్ టైపింగ్ మధ్య ఇంటర్మీడియట్ స్థానాన్ని ఆక్రమించడం. ప్రత్యేక ఉల్లేఖనాల ద్వారా టైప్ సమాచారాన్ని పేర్కొనడం ద్వారా అవసరమైన విధంగా స్టాటిక్ టైపింగ్ని ఉపయోగించడానికి Luau మిమ్మల్ని అనుమతిస్తుంది. అంతర్నిర్మిత రకాలు "ఏదైనా", "నిల్", "బూలియన్", "సంఖ్య", "స్ట్రింగ్" మరియు "థ్రెడ్" అందించబడ్డాయి. అదే సమయంలో, వేరియబుల్స్ మరియు ఫంక్షన్ల రకాన్ని స్పష్టంగా నిర్వచించకుండా డైనమిక్ టైపింగ్ని ఉపయోగించే అవకాశం భద్రపరచబడుతుంది. ఫంక్షన్ foo(x: సంఖ్య, y: స్ట్రింగ్): బూలియన్ లోకల్ k: స్ట్రింగ్ = y:rep(x) రిటర్న్ k == “a” ముగింపు
- "\5.3x**" (హెక్సాడెసిమల్ సంఖ్య), "\u{**}" (యూనికోడ్ అక్షరం) మరియు "\z" (పంక్తి ముగింపు) వంటి స్ట్రింగ్ లిటరల్స్ (లువా 0లో వలె) అలాగే సంఖ్య ఫార్మాటింగ్ని దృశ్యమానం చేయగల సామర్థ్యం (మీరు 1కి బదులుగా 000_000_1000000ని వ్రాయవచ్చు), హెక్సాడెసిమల్ (0x...) మరియు బైనరీ సంఖ్యలు (0b......).
- కొత్త లూప్ పునరుక్తికి వెళ్లడానికి, ఇప్పటికే ఉన్న "బ్రేక్" కీవర్డ్ను పూర్తి చేస్తూ "కొనసాగించు" వ్యక్తీకరణకు మద్దతు.
- కాంపౌండ్ అసైన్మెంట్ ఆపరేటర్లకు మద్దతు (+=, -=, *=, /=, %=, ^=, ..=).
- బ్లాక్ అమలు సమయంలో లెక్కించిన విలువను తిరిగి ఇచ్చే వ్యక్తీకరణల రూపంలో షరతులతో కూడిన "if-then-else" బ్లాక్ల వినియోగానికి మద్దతు. మీరు బ్లాక్లో వేరే ఇతర వ్యక్తీకరణల యొక్క ఏకపక్ష సంఖ్యను పేర్కొనవచ్చు. స్థానిక గరిష్ట విలువ = a > b అయితే వేరే b స్థానిక గుర్తు = x 0 ఆపై 1 else 0
- ఐసోలేషన్ మోడ్ (శాండ్బాక్స్) ఉనికి, ఇది నమ్మదగని కోడ్ని అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మరొక డెవలపర్ వ్రాసిన మీ స్వంత కోడ్ మరియు కోడ్తో లాంచ్ను పక్కపక్కనే నిర్వహించడానికి ఈ ఫీచర్ ఉపయోగించబడుతుంది, ఉదాహరణకు, భద్రత కోసం మూడవ పక్షం లైబ్రరీలు హామీ ఇవ్వబడవు.
- భద్రతా సమస్యలను సృష్టించగల విధులు తీసివేయబడిన ప్రామాణిక లైబ్రరీ యొక్క పరిమితి. ఉదాహరణకు, లైబ్రరీలు “io” (ఫైల్లను యాక్సెస్ చేయడం మరియు ప్రాసెస్లను ప్రారంభించడం), “ప్యాకేజీ” (ఫైళ్లను యాక్సెస్ చేయడం మరియు మాడ్యూళ్లను లోడ్ చేయడం), “os” (ఫైళ్లను యాక్సెస్ చేయడం మరియు ఎన్విరాన్మెంట్ వేరియబుల్స్ని మార్చడం కోసం విధులు), “డీబగ్” (మెమొరీతో అసురక్షిత ఆపరేషన్) , “dofile” మరియు “loadfile” (FS యాక్సెస్).
- స్టాటిక్ కోడ్ విశ్లేషణ కోసం సాధనాలను అందించడం, లోపాలను గుర్తించడం (లింటర్) మరియు రకాల సరైన వినియోగాన్ని తనిఖీ చేయడం.
- స్వంత అధిక-పనితీరు గల పార్సర్, బైట్కోడ్ ఇంటర్ప్రెటర్ మరియు కంపైలర్. Luau ఇంకా JIT సంకలనానికి మద్దతు ఇవ్వలేదు, అయితే Luau ఇంటర్ప్రెటర్ పనితీరులో కొన్ని పరిస్థితులలో LuaJITతో పోల్చదగినదని పేర్కొన్నారు.
మూలం: opennet.ru