Qu'est-ce que le format de fichier LUA ?
Un fichier .lua contient le code source d'une extension de programme ou d'application, généralement pour un jeu ou une application embarquée, écrit dans le langage de script Lua. Le code source est une collection de commandes, d'instructions et de définitions de variables écrites à l'aide d'une syntaxe définie. .lua est un fichier texte brut qui peut être ouvert et édité avec n'importe quel éditeur de texte ; cependant, il est conseillé d'ouvrir ces fichiers dans des outils d'édition prenant en charge la coloration syntaxique. Un fichier .lua peut contenir un certain nombre de commandes courtes, ainsi qu'un programme complet ou le code d'un module.
La syntaxe de Lua s'inspire de Pascal, et le langage utilise des tableaux associatifs (appelés *tables*) et une sémantique extensible via des métatables. Lua est décrit par ses développeurs comme :
- Robuste et testé - utilisé par de nombreux développeurs et projets de renom, notamment les plugins Adobe Lightroom, le système de modèles Scribunto de Wikipedia, la vidéosurveillance et les micrologiciels embarqués, ainsi que des jeux tels que World of Warcraft (addons d'interface) et le premier Angry Birds.
- Rapide - largement considéré comme le langage de script interprété le plus rapide ; LuaJIT, sa variante compilée à la volée (just-in-time), étend encore plus les performances.
- Multiplateforme - Lua est distribué sous forme de source ANSI C indépendant de la plateforme, fonctionnant sur Linux, Windows, macOS, Android, iOS, les systèmes embarqués et les ordinateurs centraux.
- Intégrable - bien documenté et facile à intégrer via son API C avec du code écrit dans d'autres langages, qu'ils soient compilés ou de script.
- Simple et puissant - offre un support pour les méta-fonctionnalités (métatables et métaméthodes) qui peuvent être étendues selon les besoins.
- Léger et gratuit - l'interprète ajoute environ 300 Ko à une application, et le langage est publié sous licence MIT.
Lua a été créé en 1993 par les ingénieurs en informatique Roberto Ierusalimschy, Waldemar Celes et Luiz Henrique de Figueiredo à l'Université Pontificale Catholique de Rio de Janeiro (PUC-Rio). Il est maintenu par le laboratoire de recherche LabLua au sein du département d'informatique de cette université. « Lua » signifie « lune » en portugais. Plusieurs versions du langage ont été développées depuis sa création ; la version stable actuelle est Lua 5.4, introduite en 2020, qui a apporté un nouveau ramasse-miettes générationnel et un sous-type entier distinct. Le bytecode Lua pré-compilé est stocké dans des fichiers .LUAC et porte un en-tête magique binaire \x1BLua plutôt que du texte lisible.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .lua est du CODE source, donc le lire est sûr mais EXÉCUTER un fichier non fiable ne l'est pas : les scripts Lua peuvent appeler os.execute, io.open, os.remove et charger des bibliothèques natives, de sorte qu'un script malveillant peut supprimer des fichiers, exfiltrer des données ou exécuter des commandes système - c'est exactement ainsi que certains fichiers .lua de triche de jeu et de « scripts gratuits » attaquent les utilisateurs. Lisez toujours un .lua téléchargé avant de l'exécuter, ne récupérez les addons/mods de jeu qu'auprès de sources réputées et méfiez-vous des scripts obfusqués ou en bytecode (.luac) que vous ne pouvez pas inspecter. Dans un hôte sandboxé (par exemple Roblox), le risque est plus faible mais les « scripts » d'ingénierie sociale restent un vecteur d'arnaque courant.
Détails du format
en brefProgrammes qui ouvrent les fichiers LUA
Détails techniques
spécifications approfondies| Type de fichier | Code source en texte brut (UTF-8 ou ASCII) |
| Type MIME | text/x-lua |
| Signature de fichier (octets magiques) | Aucune pour les fichiers sources - texte brut sans en-tête binaire. Le bytecode pré-compilé utilise 1B 4C 75 61 (ESC + « Lua ») |
| Paradigme de syntaxe | Multi-paradigme : procédural, orienté objet via métatables, et fonctionnel |
| Structure de données centrale | Table (tableau associatif) - le seul type composé, servant de tableaux, dictionnaires et objets |
| Syntaxe des commentaires | -- pour une seule ligne ; --[[ ... --]] pour les commentaires de bloc |
| Support Shebang | Le fichier source peut commencer par #!/usr/bin/env lua pour une exécution directe sur les systèmes de type Unix |
| Runtime standard | lua (interprète), luac (compilateur de bytecode), luajit (compilateur JIT) |
| API d'intégration hôte | API C compacte (lua_State, luaL_newstate, lua_call) ; liaisons disponibles pour C++, Python, Java et autres |
| Bibliothèque standard | io, os, string, table, math, coroutine, package, utf8, debug - empreinte minimale par conception |
| Support des coroutines | Coroutines asymétriques de première classe via coroutine.create / coroutine.resume / coroutine.yield |
| Ramasse-miettes | Marquage et balayage tricolore incrémentiel ; mode générationnel optionnel introduit dans Lua 5.4 |
| Types numériques | Sous-types distincts entier (64 bits par défaut) et flottant (double précision) depuis Lua 5.3 |
| Système de modules | require() résout les sources .lua et les extensions C binaires (.so / .dll) via package.path / package.cpath |
| Licence | Licence MIT (open source, gratuit pour tout usage, y compris commercial) |
| Publié | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Standard ouvert | Oui · libre de droits |
| Spécification | www.lua.org |
Conversions LUA
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers LUA.