Wat is het LUA-bestandsformaat?
Een .lua-bestand bevat broncode voor een programma of applicatie-extensie, meestal voor een game of ingebedde applicatie, geschreven in de Lua-scripttaal. Broncode is een verzameling opdrachten, instructies en variabeledefinities geschreven volgens een gedefinieerde syntaxis. .lua is een plat tekstbestand dat kan worden geopend en bewerkt met elke tekstverwerker; het wordt echter geadviseerd om dergelijke bestanden te openen in bewerkingstools die syntaxisaccentuering ondersteunen. Een .lua-bestand kan een aantal korte commando's bevatten, evenals een volledige programma- of modulecode.
De Lua-syntaxis is geïnspireerd op Pascal en de taal maakt gebruik van associatieve arrays (genaamd *tables*) en uitbreidbare semantiek via metatables. Lua wordt door de ontwikkelaars beschreven als:
- Robuust en getest - gebruikt door vele gerenommeerde ontwikkelaars en projecten, waaronder Adobe Lightroom-plug-ins, Wikipedia's Scribunto-sjabloonsysteem, CCTV en embedded firmware, en games zoals World of Warcraft (UI-addons) en de originele Angry Birds.
- Snel - wordt algemeen beschouwd als de snelste geïnterpreteerde scripttaal; LuaJIT, de just-in-time gecompileerde variant, breidt de prestaties nog verder uit.
- Cross-platform - Lua wordt gedistribueerd als platformonafhankelijke ANSI C-broncode en draait op Linux, Windows, macOS, Android, iOS, embedded systemen en mainframecomputers.
- Inbedbaar - goed gedocumenteerd en eenvoudig te integreren via de C-API met code geschreven in andere talen, zowel gecompileerd als scripttalen.
- Eenvoudig en krachtig - biedt ondersteuning voor meta-functies (metatables en metamethods) die naar behoefte kunnen worden uitgebreid.
- Lichtgewicht en gratis - de interpreter voegt ongeveer 300 KB toe aan een applicatie, en de taal wordt uitgebracht onder de MIT-licentie.
Lua werd in 1993 gecreëerd door computeringenieurs Roberto Ierusalimschy, Waldemar Celes en Luiz Henrique de Figueiredo aan de Pontificale Katholieke Universiteit van Rio de Janeiro (PUC-Rio). Het wordt onderhouden door het onderzoekslaboratorium LabLua binnen de afdeling Informatica van die universiteit. „Lua” betekent „maan” in het Portugees. Sinds de creatie zijn er meerdere versies van de taal ontwikkeld; de huidige stabiele release is Lua 5.4, geïntroduceerd in 2020, die een nieuwe generationele garbage collector en een apart integer-subtype introduceerde. Vooraf gecompileerde Lua-bytecode wordt opgeslagen in .LUAC-bestanden en bevat een binaire \x1BLua magic header in plaats van leesbare tekst.
Beveiliging & veiligheid
RISICO: MEDIUMEen .lua-bestand is bronCODE, dus het lezen ervan is veilig, maar het UITVOEREN van een niet-vertrouwd bestand niet: Lua-scripts kunnen os.execute, io.open, os.remove aanroepen en native bibliotheken laden, dus een kwaadaardig script kan bestanden verwijderen, gegevens stelen of systeemopdrachten uitvoeren - precies hoe sommige game-cheat en „gratis script” .lua-bestanden gebruikers aanvallen. Lees altijd een gedownloade .lua voordat je deze uitvoert, haal game-addons/mods alleen van betrouwbare bronnen en wees op je hoede voor geobfusceerde of bytecode (.luac) scripts die je niet kunt inspecteren. Binnen een gesandboxte host (bijv. Roblox) is het risico lager, maar „scripts” voor social engineering zijn nog steeds een veelvoorkomende oplichtingsmethode.
Formaatdetails
in een notendopProgramma's die LUA-bestanden openen
Technische details
diepe specificaties| Bestandstype | Platte tekst broncode (UTF-8 of ASCII) |
| MIME-type | text/x-lua |
| Bestandssignatuur (magic bytes) | Geen voor bronbestanden - platte tekst zonder binaire header. Vooraf gecompileerde bytecode gebruikt 1B 4C 75 61 (ESC + „Lua”) |
| Syntaxisparadigma | Multi-paradigma: procedureel, objectgeoriënteerd via metatables, en functioneel |
| Kerngegevensstructuur | Table (associatieve array) - het enige samengestelde type, dat dient als arrays, dictionaries en objecten |
| Commentaar-syntaxis | -- voor een enkele regel; --[[ ... --]] voor blokcommentaar |
| Shebang-ondersteuning | Bronbestand kan beginnen met #!/usr/bin/env lua voor directe uitvoering op Unix-achtige systemen |
| Standaard runtime | lua (interpreter), luac (bytecode-compiler), luajit (JIT-compiler) |
| Host embedding API | Compacte C-API (lua_State, luaL_newstate, lua_call); bindings beschikbaar voor C++, Python, Java en anderen |
| Standaardbibliotheek | io, os, string, table, math, coroutine, package, utf8, debug - minimaal ontwerp |
| Coroutine-ondersteuning | First-class asymmetrische coroutines via coroutine.create / coroutine.resume / coroutine.yield |
| Garbage collector | Incrementele tri-color mark-and-sweep; optionele generationele modus geïntroduceerd in Lua 5.4 |
| Numerieke types | Aparte integer (standaard 64-bit) en float (double-precision) subtypen sinds Lua 5.3 |
| Modulesysteem | require() laadt .lua-broncode en binaire C-extensies (.so / .dll) via package.path / package.cpath |
| Licentie | MIT-licentie (open source, gratis voor elk gebruik inclusief commercieel) |
| Uitgebracht | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Open standaard | Ja · royaltyvrij |
| Specificatie | www.lua.org |
LUA conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over LUA-bestanden.