Hvad er LUA-filformatet?
En .lua-fil indeholder kildekode til et program eller en applikationsudvidelse, typisk til et spil eller en indlejret applikation, skrevet i scriptsproget Lua. Kildekode er en samling af kommandoer, instruktioner og variabeldefinitioner skrevet ved hjælp af en defineret syntaks. .lua er en almindelig tekstfil, der kan åbnes og redigeres med enhver teksteditor; det anbefales dog, at sådanne filer åbnes i redigeringsværktøjer, der understøtter syntaksfremhævning. En .lua-fil kan indeholde en række korte kommandoer såvel som en komplet program- eller modulkode.
Lua-syntaks henter inspiration fra Pascal, og sproget bruger associative arrays (kaldet *tabeller*) og udvidelig semantik via metatabeller. Lua beskrives af sine udviklere som:
- Robust og testet - brugt af mange anerkendte udviklere og projekter, herunder Adobe Lightroom-plugins, Wikipedias Scribunto-skabelonsystem, CCTV og indlejret firmware samt spil som World of Warcraft (UI-addons) og det originale Angry Birds.
- Hurtig - bredt anset som det hurtigste fortolkede scriptsprog; LuaJIT, dens just-in-time-kompilerede variant, øger ydeevnen endnu mere.
- Platformsuafhængig - Lua distribueres som platformsneutral ANSI C-kildekode, der kører på Linux, Windows, macOS, Android, iOS, indlejrede systemer og mainframe-computere.
- Indlejringsvenlig - veldokumenteret og nem at integrere via sit C-API med kode skrevet i andre sprog, både kompilerede og scriptsprog.
- Enkel og kraftfuld - tilbyder understøttelse af meta-funktioner (metatabeller og metametoder), der kan udvides efter behov.
- Letvægt og gratis - fortolkeren fylder kun omkring 300 KB i en applikation, og sproget er udgivet under MIT-licensen.
Lua blev skabt i 1993 af computer-ingeniørerne Roberto Ierusalimschy, Waldemar Celes og Luiz Henrique de Figueiredo ved det pavelige katolske universitet i Rio de Janeiro (PUC-Rio). Det vedligeholdes af forskningslaboratoriet LabLua under universitetets afdeling for datalogi. «Lua» betyder «måne» på portugisisk. Flere versioner af sproget er blevet udviklet siden dets skabelse; den nuværende stabile udgivelse er Lua 5.4, introduceret i 2020, som bragte en ny generationel garbage collector og en særskilt heltal-subtype. Præ-kompileret Lua-bytecode gemmes i .LUAC-filer og bærer en binær \x1BLua magic header i stedet for læsbar tekst.
Sikkerhed og tryghed
RISIKO: MEDIUMEn .lua-fil er kildeKODE, så det er sikkert at læse den, men det er ikke sikkert at KØRE en upålidelig fil: Lua-scripts kan kalde os.execute, io.open, os.remove og indlæse native biblioteker, så et ondsindet script kan slette filer, lække data eller køre systemkommandoer - præcis som visse spil-snydekoder og «gratis script» .lua-filer angriber brugere. Læs altid et downloadet .lua-script igennem før kørsel, hent kun spil-addons/mods fra anerkendte kilder, og vær påpasselig med slørede (obfuscated) eller bytecode-scripts (.luac), som du ikke kan inspicere. Inden for en sandkasse-vært (f.eks. Roblox) er risikoen lavere, men social-engineering «scripts» er stadig en almindelig svindelmetode.
Formatdetaljer
kort fortaltProgrammer der åbner LUA-filer
Tekniske detaljer
dyb specifikation| Filtype | Almindelig tekstkildekode (UTF-8 eller ASCII) |
| MIME-type | text/x-lua |
| Filsignatur (magic bytes) | Ingen for kildekodefiler - almindelig tekst uden binær header. Præ-kompileret bytecode bruger 1B 4C 75 61 (ESC + «Lua») |
| Syntaksparadigme | Multi-paradigme: procedureorienteret, objektorienteret via metatabeller og funktionelt |
| Kernedatastruktur | Table (associativt array) - den eneste sammensatte type, der fungerer som arrays, ordbøger og objekter |
| Kommentarsyntaks | -- for enkeltlinje; --[[ ... --]] for blokkommentarer |
| Shebang-understøttelse | Kildekodefilen kan begynde med #!/usr/bin/env lua for direkte udførelse på Unix-lignende systemer |
| Standard runtime | lua (fortolker), luac (bytecode-kompiler), luajit (JIT-kompiler) |
| Værts-indlejrings-API | Kompakt C API (lua_State, luaL_newstate, lua_call); bindings tilgængelige for C++, Python, Java og andre |
| Standardbibliotek | io, os, string, table, math, coroutine, package, utf8, debug - minimalt fodaftryk efter design |
| Coroutine-understøttelse | First-class asymmetriske coroutiner via coroutine.create / coroutine.resume / coroutine.yield |
| Garbage collector | Inkrementel tri-color mark-and-sweep; valgfri generationel tilstand introduceret i Lua 5.4 |
| Numeriske typer | Særskilte heltal (64-bit som standard) og float (dobbelt præcision) subtyper siden Lua 5.3 |
| Modulsystem | require() indlæser .lua-kildekode og binære C-udvidelser (.so / .dll) via package.path / package.cpath |
| Licens | MIT-licens (open source, gratis til enhver brug inklusiv kommerciel) |
| Udgivet | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Åben standard | Ja · royaltyfri |
| Specifikation | www.lua.org |
LUA-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om LUA-filer.