Pred kratkim napovedana je bila izdaja prve različice neodvisno od programskega jezika luau, ki se nadaljuje z razvojem Lue in je združljiv tudi s prejšnjimi različicami Lua 5.1.
Jezik Luau je zasnovan predvsem za vdelavo skriptnih motorjev v aplikacijah in želi doseči visoko zmogljivost in nizko porabo virov. Koda projekta je napisana v C++ in je odprta pod licenco MIT.
Luau razširi Lua z zmožnostmi preverjanja tipov in nekaterimi različicami nova sintaktika, kot so nizovni literali. Jezik je združljiv s prejšnjimi različicami Lua 5.1 in delno z novejšimi različicami. Lua Runtime API je podprt, ki omogoča uporabo Luauja z že obstoječimi kodami in povezavami.
Od danes Luau ni več neločljiv del platforme Roblox; je neodvisen odprtokodni jezik.
Jezikovni izvajalni čas temelji na močno spremenjeni kodi izvajalnega časa Lua 5.1, vendar je bil tolmač popolnoma prepisan. Razvoj je vključeval nekaj novih tehnik optimizacije, ki so omogočile doseganje višje zmogljivosti v primerjavi z Lua.
Ko je bil Roblox ustvarjen pred 15 leti, smo za programski jezik izbrali Lua. Lua je bila majhna, hitra, enostavna za integracijo in učenje, našim razvijalcem pa je odprla ogromne možnosti.
Velik del Robloxa je bil zgrajen na Lua, vključno z več sto tisoč vrsticami interno razvite kode, ki poganja aplikacijo Roblox in Roblox Studio do danes, ter milijoni izkušenj, ki so jih ustvarili razvijalci. Za mnoge od njih je bil to prvi programski jezik, ki so se ga naučili.
Projekt je razvil Roblox in se uporablja v kodi platforme za igre in aplikacijah po meri iz tega podjetja, vključno z založnikom Roblox Studio. Sprva je bil Luau razvit za zaprtimi vrati, na koncu pa je bilo odločeno, da ga prenesejo v kategorijo odprtih projektov za nadaljnji skupni razvoj s sodelovanjem skupnosti.
Glavne lastnosti:
- Sistem zaporednega tipa, ki zavzema vmesni položaj med dinamičnim in statičnim pisanjem. Luau omogoča statično pisanje po potrebi z navedbo informacij o tipu s posebnimi opombami.
- The vgrajene vrste "Kar koli", "nič", "boolean", "število", "niz" in "nit". Hkrati je ohranjena tudi možnost uporabe dinamičnega tipkanja brez eksplicitne opredelitve vrste spremenljivk in funkcij.
- Podpora za dobesedne nize (kot v Lua 5.3)
- Podpora za izraz "nadaljuj", poleg obstoječe ključne besede "break", za skok na novo ponovitev zanke.
- Podpora za sestavljene operatorje dodelitve
- Podpora za uporabo pogojni bloki "Če-potem-drugo" v obliki izrazov, ki vrnejo vrednost, izračunano med izvajanjem bloka. V bloku lahko podate poljubno število stavkov elseif.
- Prisotnost načina peskovnika ki vam omogoča izvajanje nezaupanja vredne kode. To funkcijo lahko uporabite za organiziranje lastne kode in kode, ki jo je napisal drug razvijalec, na primer knjižnice tretjih oseb, za katere ni mogoče zagotoviti, da se izvajajo vzporedno.
- Omejitev standardne knjižnice, iz katere so bile odstranjene funkcije, ki bi lahko povzročile varnostne težave. Na primer, knjižnice "io" (dostop do datotek in zagonskih procesov), "package" (dostop do datotek in nalaganje modulov), "os" (funkcije za dostop do datotek in spreminjanje spremenljivk okolja so bile odstranjene), "Debug" (nevaren ravnanje s pomnilnikom), "dofile" in "loadfile" (dostop do datotečnega sistema).
- Zagotovite orodja za analizo statične kode, odkrivanje napak (Linter) in preverjanje uporabe tipov.
- analizator, tolmač bajtnih kod in visoko zmogljiv lastniški prevajalnik.
- Luau še ne podpira prevajanja JIT, vendar se trdi, da je tolmač Luau v nekaterih situacijah po zmogljivosti precej primerljiv z LuaJIT.
Končno če vas zanima več o tem, lahko preverite podrobnosti V naslednji povezavi.