ሉዋ፣ በዓይነት የተረጋገጠ የሉአ ቋንቋ ተለዋጭ፣ ክፍት ምንጭ ነው።

የሉዋ ቋንቋ እድገትን በማስቀጠል እና ከሉአ 5.1 ጋር የሚስማማውን የሉአን የመጀመሪያ ደረጃ ለብቻው የተለቀቀውን ክፍት ምንጭ እና ህትመት አስታውቋል። Luau በዋነኝነት የተነደፈው የስክሪፕት ሞተሮችን ወደ አፕሊኬሽኖች ለመክተት ሲሆን ዓላማውም ከፍተኛ አፈጻጸም እና ዝቅተኛ የሀብት ፍጆታን ለማግኘት ነው። የፕሮጀክት ኮድ በC++ የተፃፈ ሲሆን በ MIT ፍቃድ ስር ተከፍቷል።

ሉአውን በአይነት የማጣራት ችሎታዎች እና አንዳንድ አዲስ አገባብ አወቃቀሮችን እንደ ሕብረቁምፊዎች ያራዝመዋል። ቋንቋው ከ Lua 5.1 እና በከፊል ከአዳዲስ ስሪቶች ጋር ወደ ኋላ ተኳሃኝ ነው። የ Lua Runtime ኤፒአይ ይደገፋል፣ ይህም Luauን ከነባር ኮድ እና ማያያዣዎች ጋር ለመጠቀም ያስችላል። የቋንቋው የሩጫ ጊዜ በከፍተኛ ሁኔታ በተሻሻለው የሉአ አሂድ ጊዜ 5.1 ኮድ ላይ የተመሰረተ ነው፣ ነገር ግን አስተርጓሚው ሙሉ በሙሉ እንደገና ተጽፏል። በእድገት ወቅት, ከሉዋ ጋር ሲነፃፀር ከፍተኛ አፈፃፀም ለማግኘት አንዳንድ አዳዲስ የማመቻቸት ዘዴዎች ጥቅም ላይ ውለዋል.

ፕሮጀክቱ የተገነባው በ Roblox ነው እና የ Roblox Studio አርታዒን ጨምሮ በዚህ ኩባንያ የጨዋታ መድረክ, ጨዋታዎች እና የተጠቃሚ መተግበሪያዎች ኮድ ውስጥ ጥቅም ላይ ይውላል. መጀመሪያ ላይ ሉዋ በዝግ በሮች ተዘጋጅቷል, ነገር ግን በመጨረሻ ማህበረሰቡን በማሳተፍ ለቀጣይ የጋራ ልማት ወደ ክፍት ፕሮጀክቶች ምድብ እንዲሸጋገር ተወስኗል.

ቁልፍ ባህሪያት:

  • ቀስ በቀስ መተየብ፣ በተለዋዋጭ እና በማይንቀሳቀስ ትየባ መካከል መካከለኛ ቦታን በመያዝ። Luau የአይነት መረጃን በልዩ ማብራሪያዎች በመግለጽ እንደ አስፈላጊነቱ የማይንቀሳቀስ ትየባ እንድትጠቀም ይፈቅድልሃል። አብሮገነብ ዓይነቶች "ማንኛውም" "ኒል", "ቦሊያን", "ቁጥር", "ሕብረቁምፊ" እና "ክር" ቀርበዋል. በተመሳሳይ ጊዜ የተለዋዋጮችን እና ተግባራትን አይነት በግልፅ ሳይገልጹ ተለዋዋጭ ትየባ የመጠቀም እድሉ ተጠብቆ ይቆያል። ተግባር foo(x: ቁጥር፣ y: string): ቡሊያን አካባቢያዊ k: string = y: rep(x) መመለስ k == “a” መጨረሻ
  • እንደ "\5.3x**" (ሄክሳዴሲማል ቁጥር)፣ "\u{**}" (ዩኒኮድ ቁምፊ) እና "\z" (የመስመር መጨረሻ) ያሉ ለሕብረቁምፊ ቃል በቃል (እንደ ሉአ 0) ድጋፍ፣ እንዲሁም የቁጥር ቅርጸትን የማየት ችሎታ (ከ 1 ይልቅ 000_000_1000000 መፃፍ ይችላሉ) ፣ ቀጥታ ለሄክሳዴሲማል (0x...) እና ሁለትዮሽ ቁጥሮች (0b......)።
  • ለ "ቀጥል" አገላለጽ ድጋፍ, ያለውን "ሰበር" ቁልፍ ቃል በማሟላት, ወደ አዲስ የሉፕ ድግግሞሽ ለመዝለል.
  • ለተደባለቀ ምደባ ኦፕሬተሮች ድጋፍ (+=, -=, *=, /=,%=, ^=, ..=).
  • ሁኔታዊ "ከሆነ-ከሆነ" ብሎኮች ጥቅም ላይ የሚውለው ድጋፍ በእገዳው አፈፃፀም ወቅት የተሰላውን እሴት በሚመልሱ መግለጫዎች መልክ። በብሎክ ውስጥ የዘፈቀደ የሌሎችን አገላለጾች ቁጥር መግለጽ ይችላሉ። local maxValue = a > b ከሆነ ሌላ b የአካባቢ ምልክት = x < 0 ከሆነ -1 elseif x > 0 ከዚያ 1 ሌላ 0
  • የማይታመን ኮድ እንዲያሄዱ የሚያስችልዎ የማግለል ሁነታ (ማጠሪያ) መኖር። ይህ ባህሪ በራስዎ ኮድ እና በሌላ ገንቢ የተፃፈ ኮድ ጎን ለጎን ማስጀመሪያውን ለማደራጀት ሊያገለግል ይችላል ለምሳሌ የሶስተኛ ወገን ቤተ-ፍርግሞች ለደህንነታቸው ዋስትና ሊሰጡ አይችሉም።
  • የደህንነት ችግሮችን ሊፈጥሩ የሚችሉ ተግባራት የተወገዱበት መደበኛ ቤተ-መጽሐፍት ገደብ። ለምሳሌ፣ ቤተ-መጻሕፍቶቹ “io” (ፋይሎችን ማግኘት እና ማስጀመሪያ ሂደቶች)፣ “ጥቅል” (ፋይሎችን ማግኘት እና ሞጁሎችን መጫን)፣ “os” (ፋይሎችን የመድረስ እና የአካባቢ ተለዋዋጮችን ለመለወጥ ተግባራት)፣ “ማረሚያ” (ከማህደረ ትውስታ ጋር ደህንነቱ ያልተጠበቀ ክወና) , "dofile" እና "loadfile" (FS መዳረሻ).
  • ለስታቲክ ኮድ ትንተና መሳሪያዎችን መስጠት, ስህተቶችን መለየት (ሊንተር) እና የዓይነቶችን ትክክለኛ አጠቃቀም ማረጋገጥ.
  • ከፍተኛ አፈጻጸም ያለው ተንታኝ፣ ባይትኮድ አስተርጓሚ እና አዘጋጅ። ሉዋ የጂአይቲ ማጠናቀርን እስካሁን አይደግፍም፣ ነገር ግን የሉአው አስተርጓሚ በአንዳንድ ሁኔታዎች አፈጻጸም ከ LuaJIT ጋር የሚወዳደር ነው ተብሏል።

ምንጭ: opennet.ru

አስተያየት ያክሉ