Vad är filformatet LUA?
En .lua-fil innehåller källkod för ett program eller en applikationsutökning, vanligtvis för ett spel eller en inbäddad applikation, skriven i skriptspråket Lua. Källkod är en samling kommandon, instruktioner och variabeldefinitioner skrivna med en definierad syntax. .lua är en vanlig textfil som kan öppnas och redigeras med valfri textredigerare; det rekommenderas dock att sådana filer öppnas i redigeringsverktyg som stöder syntaxmarkering. En .lua-fil kan innehålla ett antal korta kommandon, såväl som en komplett program- eller modulskod.
Lua-syntaxen hämtar inspiration från Pascal, och språket använder associativa arrayer (kallade *tabeller*) och utökningsbar semantik via metatabeller. Lua beskrivs av sina utvecklare som:
- Robust och testat - används av många hyllade utvecklare och projekt, inklusive Adobe Lightroom-insticksprogram, Wikipedias Scribunto-mallsystem, CCTV och inbäddad firmware, samt spel som World of Warcraft (UI-tillägg) och det ursprungliga Angry Birds.
- Snabbt - allmänt ansett som det snabbaste tolkade skriptspråket; LuaJIT, dess just-in-time-kompilerade variant, ökar prestandan ytterligare.
- Plattformsoberoende - Lua distribueras som plattformsoberoende ANSI C-källkod och körs på Linux, Windows, macOS, Android, iOS, inbäddade system och stordatorer.
- Inbäddningsbart - väldokumenterat och enkelt att integrera via sitt C-API med kod skriven i andra språk, både kompilerade och skriptspråk.
- Enkelt och kraftfullt - erbjuder stöd för metafunktioner (metatabeller och metametoder) som kan utökas efter behov.
- Lättviktigt och gratis - tolken lägger till ungefär 300 KB till en applikation, och språket släpps under MIT-licensen.
Lua skapades 1993 av dataringenjörerna Roberto Ierusalimschy, Waldemar Celes och Luiz Henrique de Figueiredo vid Pontifical Catholic University of Rio de Janeiro (PUC-Rio). Det underhålls av forskningslaboratoriet LabLua inom universitetets datavetenskapliga institution. «Lua» betyder «måne» på portugisiska. Flera versioner av språket har utvecklats sedan dess skapande; den nuvarande stabila utgåvan är Lua 5.4, introducerad 2020, som förde med sig en ny generationens skräpsamlare och en distinkt heltalssubtyp. Förkompilerad Lua-bytecode lagras i .LUAC-filer och bär ett binärt \x1BLua magic-huvud snarare än läsbar text.
Säkerhet & trygghet
RISK: MEDIUMEn .lua-fil är KÄLLKOD, så att läsa den är säkert men att KÖRA en okänd fil är det inte: Lua-skript kan anropa os.execute, io.open, os.remove och ladda inbyggda bibliotek, så ett skadligt skript kan radera filer, stjäla data eller köra systemkommandon - precis så som vissa spel-fusk och «gratis skript» i .lua-format attackerar användare. Läs alltid en nedladdad .lua-fil innan du kör den, hämta endast speltillägg/moddar från välrenommerade källor, och var vaksam på obfuskerade skript eller bytecode-skript (.luac) som du inte kan inspektera. Inuti en sandlådemiljö (t.ex. Roblox) är risken lägre, men «skript» för social manipulation är fortfarande en vanlig bedrägerimetod.
Formatdetaljer
i ett nötskalProgram som öppnar LUA-filer
Tekniska detaljer
djup specifikation| Filtyp | Källkod i klartext (UTF-8 eller ASCII) |
| MIME-typ | text/x-lua |
| Filsignatur (magic bytes) | Ingen för källkodsfiler - vanlig text utan binärt huvud. Förkompilerad bytecode använder 1B 4C 75 61 (ESC + «Lua») |
| Syntaxparadigm | Multiparadigm: procedurellt, objektorienterat via metatabeller, och funktionellt |
| Kärndatastruktur | Tabell (associativ array) - den enda sammansatta typen, fungerar som arrayer, lexikon och objekt |
| Commentsyntax | -- för enstaka rader; --[[ ... --]] för blockkommentarer |
| Shebang-stöd | Källkodsfiler kan börja med #!/usr/bin/env lua för direkt exekvering på Unix-liknande system |
| Standardruntime | lua (tolk), luac (bytecode-kompilator), luajit (JIT-kompilator) |
| API för värdinbäddning | Kompakt C-API (lua_State, luaL_newstate, lua_call); bindningar finns för C++, Python, Java med flera |
| Standardbibliotek | io, os, string, table, math, coroutine, package, utf8, debug - minimalt fotavtryck genom design |
| Stöd för coroutiner | Förstklassiga asymmetriska coroutiner via coroutine.create / coroutine.resume / coroutine.yield |
| Skräpsamlare | Inkrementell trefärgs mark-and-sweep; valfritt generationsläge introducerat i Lua 5.4 |
| Numeriska typer | Distinkta subtyper för heltal (64-bitars som standard) och flyttal (dubbel precision) sedan Lua 5.3 |
| Modulsystem | require() löser .lua-källkod och binära C-utökningar (.so / .dll) via package.path / package.cpath |
| Licens | MIT-licens (öppen källkod, gratis för all användning inklusive kommersiell) |
| Släppt | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Öppen standard | Ja · royaltyfri |
| Specifikation | www.lua.org |
LUA-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om LUA-filer.