Luau, lahaja iliyoangaliwa kwa aina ya lugha ya Kilua, ni chanzo huria

Ilitangaza chanzo huria na uchapishaji wa toleo la kwanza la pekee la lugha ya programu ya Kiluau, kuendeleza ukuzaji wa lugha ya Kilua na kurudi nyuma sambamba na Lua 5.1. Luau imeundwa kwa ajili ya kupachika injini za uandishi katika programu na inalenga kufikia utendakazi wa juu na matumizi ya chini ya rasilimali. Nambari ya mradi imeandikwa kwa C++ na imefunguliwa chini ya leseni ya MIT.

Luau inapanua Lua kwa uwezo wa kukagua aina na miundo mipya ya kisintaksia kama vile maandishi ya mfuatano. Lugha inatumika nyuma na inaoana na Lua 5.1 na kwa sehemu na matoleo mapya. API ya Lua Runtime inatumika, hukuruhusu kutumia Luau na msimbo uliopo na vifungo. Muda wa matumizi ya lugha unatokana na msimbo wa 5.1 wa muda wa utekelezaji wa Lua uliofanyiwa kazi upya, lakini mkalimani ameandikwa upya kabisa. Wakati wa usanidi, baadhi ya mbinu mpya za uboreshaji zilitumika kufikia utendakazi wa juu ikilinganishwa na Lua.

Mradi huu ulitengenezwa na Roblox na unatumika katika msimbo wa jukwaa la michezo ya kubahatisha, michezo, na matumizi ya watumiaji wa kampuni hii, ikiwa ni pamoja na mhariri wa Roblox Studio. Hapo awali, Luau ilitengenezwa nyuma ya milango iliyofungwa, lakini mwishowe iliamuliwa kuihamisha kwa jamii ya miradi wazi kwa maendeleo zaidi ya pamoja na ushiriki wa jamii.

Makala kuu:

  • Kuandika polepole, kuchukua nafasi ya kati kati ya kuandika kwa nguvu na tuli. Luau hukuruhusu kutumia uchapaji tuli inavyohitajika kwa kubainisha maelezo ya aina kupitia vidokezo maalum. Aina zilizojengwa ndani "yoyote", "nil", "boolean", "nambari", "string" na "thread" hutolewa. Wakati huo huo, uwezekano wa kutumia kuandika kwa nguvu bila kufafanua kwa uwazi aina ya vigezo na kazi huhifadhiwa. kazi foo(x: nambari, y: kamba): boolean local k: kamba = y:rep(x) return k == "a" mwisho
  • Usaidizi wa maandishi ya maandishi (kama katika Lua 5.3) kama vile "\0x**" (nambari ya heksadesimali), "\u{**}" (herufi za Unicode) na "\z" (mwisho wa mstari), na vile vile uwezo wa kuibua umbizo la nambari (unaweza kuandika 1_000_000 badala ya 1000000), herufi za hexadecimal (0x...) na nambari za binary (0b......).
  • Usaidizi wa usemi wa "endelea", unaosaidia neno kuu la "kuvunja" lililopo, ili kuruka kwa kurudia kitanzi kipya.
  • Usaidizi kwa waendeshaji wa kazi kiwanja (+=, -=, *=, /=, %=, ^=, ..=).
  • Usaidizi wa matumizi ya vizuizi vya masharti "ikiwa-basi-vingine" kwa namna ya misemo ambayo inarudisha thamani iliyohesabiwa wakati wa utekelezaji wa kizuizi. Unaweza kubainisha nambari kiholela ya misemo ingineif kwenye kizuizi. local maxValue = ikiwa a > b basi ishara nyingine b ya ndani = ikiwa x < 0 basi -1 elseif x > 0 kisha 1 mwingine 0
  • Uwepo wa hali ya kujitenga (sandbox), ambayo inakuwezesha kuendesha msimbo usioaminika. Kipengele hiki kinaweza kutumika kupanga uzinduzi kando ya msimbo na msimbo wako ulioandikwa na msanidi mwingine, kwa mfano, maktaba za wahusika wengine kwa usalama ambao hauwezi kuhakikishwa.
  • Kizuizi cha maktaba ya kawaida ambayo utendakazi ambazo zinaweza kuleta matatizo ya usalama zimeondolewa. Kwa mfano, maktaba "io" (kufikia faili na michakato ya uzinduzi), "kifurushi" (kufikia faili na moduli za upakiaji), "os" (kazi za kupata faili na kubadilisha anuwai ya mazingira), "rekebisha" ( operesheni isiyo salama na kumbukumbu) , "dofile" na "loadfile" (ufikiaji wa FS).
  • Kutoa zana za uchanganuzi wa nambari tuli, kutambua makosa (linter) na kuangalia matumizi sahihi ya aina.
  • Mwenyewe kichanganuzi chenye utendakazi wa hali ya juu, mkalimani wa bytecode na mkusanyaji. Luau bado haiungi mkono utungaji wa JIT, lakini inadaiwa kuwa mkalimani wa Kiluau anaweza kulinganishwa katika utendaji na LuaJIT katika hali fulani.

Chanzo: opennet.ru

Kuongeza maoni