Luau koodi avamine, tĂŒĂŒbituvastusega Lua keele variant

On teatatud lĂ€htekoodide avamisest ja esimese eraldi vĂ€ljaande vĂ€ljaandmisest Luau programmeerimiskeelest, mis arendab edasi Lua keelt ja on tagurpidi ĂŒhilduv Lua 5.1-ga. Luau keel on peamiselt mĂ”eldud skriptitöötluse sisestamiseks rakendustesse ning on suunatud kĂ”rgele jĂ”udlusele ja madalale ressursikasutusele. Projekti kood on kirjutatud C++ keeles ja avatud MIT litsentsi all.

Luau laiendab Lua-d tĂŒbituvastuse vĂ”imalustega ja mĂ”ne uue sĂŒntaktilise konstruktsiooniga, nĂ€iteks stringi literaalidega. Keel on tagurpidi ĂŒhilduv Lua 5.1-ga ja osaliselt uuemate versioonidega. Toetatakse Lua Runtime API-d, mis vĂ”imaldab Luau-d kasutada olemasoleva koodi ja sidumistega. Keelte runtime pĂ”hineb tugevalt ĂŒmber töötatud Lua runtime 5.1 koodil, kuid tĂ”lgendaja on tĂ€ielikult ĂŒmber kirjutatud. Arenduses on kasutatud mĂ”ningaid uusi optimeerimistehnikaid, mis on vĂ”imaldanud saavutada kĂ”rgemat jĂ”udlust vĂ”rreldes Lua-ga.

Projekt on vÀlja töötatud Roblox'i poolt ning seda kasutatakse mÀnguplatvormi, mÀngude ja kasutajarakenduste koodis, sealhulgas Roblox Studio redigeerijas. Alguses arendati Luau-d suletud uste taga, kuid lÔpuks otsustati viia see avatud projektide hulka, et vÔimaldada edasist koostööd kogukonna osalusel.

PÔhiomadused:

  • JĂ€rkjĂ€rgne tĂŒĂŒpide sĂŒsteem (Gradual typing), mis asub dĂŒnaamilise ja staatilise tĂŒpiseerimise vahel. Luau vĂ”imaldab kasutada staatilist tĂŒpiseerimist vastavalt vajadusele, osutades tĂŒĂŒpide teavet spetsiaalsete annotatsioonide kaudu. Pakutakse sisseehitatud tĂŒĂŒpe 'any', 'nil', 'boolean', 'number', 'string' ja 'thread'. Samuti on sĂ€ilinud vĂ”imalus kasutada dĂŒnaamilist tĂŒpiseerimist ilma muutujate ja funktsioonide tĂŒĂŒpide selge mÀÀratlemiseta. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == "a" end
  • Stringi literaalide tugi (nagu Lua 5.3-s), nĂ€iteks "\0x**" (kuusnurkne number), "\u{**}" (Unicode mĂ€rk) ja "\z" (rea lĂ”pp), samuti numbrite visuaalne vormindamine (vĂ”ib kirjutada 1_000_000 asemel 1000000), literaalid kuusnurksete (0x
) ja binaarne numbrite jaoks (0b

.).
  • Toetame vĂ€ljendi „continue”, mis tĂ€iendab olemasolevat vĂ”tmesĂ”na „break”, uue tsĂŒkli iteratsiooni lĂ€biviimiseks.
  • Toetame komposiitmÀÀramisoperaatoreid (+=, -=, *=, /=, %=, ^=, ..=).
  • Toetame tingimusblokke „if-then-else” vĂ€ljendite kujul, mis tagastavad vÀÀrtuse, mis arvutatakse ploki tĂ€itmise kĂ€igus. Lubatakse mÀÀrata suvaline arv „elseif” vĂ€ljendeid plokis. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • IsolatsioonireĆŸiimi (sandbox) olemasolu, mis vĂ”imaldab kĂ€itada usaldamatut koodi. Antud vĂ”imalust vĂ”ib kasutada, et kĂ€itada kĂ”rvuti oma koodi ja kolmandate osapoolte arendajate kirjutatud koodi, nĂ€iteks raamatukogusid, mille turvalisuse osas ei saa kindel olla.
  • Standardraamatukogu piiramine, kust on eemaldatud funktsioonid, mis vĂ”ivad potentsiaalselt tekitada turvaprobleeme. NĂ€iteks on standardkomplektist vĂ€lja jĂ€etud teek „io” (failidele juurdepÀÀs ja protsesside kĂ€ivitamine), „package” (failidele juurdepÀÀs ja moodulite laadimine), „os” (on eemaldatud failidele juurdepÀÀsu ja keskkonnamuutujate muutmise funktsioonid), „debug” (ebaturvaline mĂ€lu kasutamine), „dofile” ja „loadfile” (juurdepÀÀs FS-ile).
  • Pakutakse tööriistu staatiliseks koodi analĂŒĂŒsiks, vigade leidmiseks (linter) ja tĂŒĂŒpide Ă”ige kasutuse kontrollimiseks.
  • Oma kĂ”rge jĂ”udlusega parser, baytkoodi tĂ”lkija ja kompilaator. Luau ei toeta veel JIT-kompileerimist, kuid vĂ€idetakse, et Luau tĂ”lkija on mĂ”nes olukorras jĂ”udluse osas vĂ”rreldav LuaJIT-iga.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster