Che cos'è il formato di file LUA?
Un file .lua contiene il codice sorgente di un'estensione di un programma o di un'applicazione, tipicamente per un gioco o un'applicazione embedded, scritto nel linguaggio di scripting Lua. Il codice sorgente è una raccolta di comandi, istruzioni e definizioni di variabili scritti utilizzando una sintassi definita. .lua è un file di testo semplice che può essere aperto e modificato con qualsiasi editor di testo; tuttavia, si consiglia di aprire tali file in strumenti di editing che supportino l'evidenziazione della sintassi. Un file .lua può contenere una serie di brevi comandi, così come il codice completo di un programma o di un modulo.
La sintassi di Lua trae ispirazione da Pascal e il linguaggio utilizza array associativi (chiamati *tabelle*) e una semantica estensibile tramite metatabelle. Lua è descritto dai suoi sviluppatori come:
- Robusto e testato - utilizzato da molti sviluppatori e progetti acclamati, inclusi i plugin di Adobe Lightroom, il sistema di template Scribunto di Wikipedia, CCTV e firmware embedded, e giochi come World of Warcraft (addon per l'interfaccia utente) e l'originale Angry Birds.
- Veloce - ampiamente considerato come il linguaggio di scripting interpretato più veloce; LuaJIT, la sua variante compilata just-in-time, estende ulteriormente le prestazioni.
- Cross-platform - Lua è distribuito come sorgente ANSI C indipendente dalla piattaforma, eseguibile su Linux, Windows, macOS, Android, iOS, sistemi embedded e computer mainframe.
- Integrabile - ben documentato e facile da integrare tramite la sua API C con codice scritto in altri linguaggi, sia compilati che di scripting.
- Semplice e potente - offre supporto per meta-funzionalità (metatabelle e metametodi) che possono essere estese secondo necessità.
- Leggero e gratuito - l'interprete aggiunge circa 300 KB a un'applicazione e il linguaggio è rilasciato sotto licenza MIT.
Lua è stato creato nel 1993 dagli ingegneri informatici Roberto Ierusalimschy, Waldemar Celes e Luiz Henrique de Figueiredo presso la Pontificia Università Cattolica di Rio de Janeiro (PUC-Rio). È mantenuto dal laboratorio di ricerca LabLua all'interno del Dipartimento di Informatica di tale università. «Lua» significa «luna» in portoghese. Dalla sua creazione sono state sviluppate diverse versioni del linguaggio; l'attuale versione stabile è Lua 5.4, introdotta nel 2020, che ha portato un nuovo garbage collector generazionale e un sottotipo intero distinto. Il bytecode Lua pre-compilato è memorizzato nei file .LUAC e presenta un'intestazione magica binaria \x1BLua anziché testo leggibile.
Sicurezza e incolumità
RISCHIO: MEDIUMUn file .lua è CODICE sorgente, quindi leggerlo è sicuro ma ESEGUIRNE uno non attendibile non lo è: gli script Lua possono chiamare os.execute, io.open, os.remove e caricare librerie native, quindi uno script malevolo può eliminare file, esfiltrare dati o eseguire comandi di sistema - esattamente come alcuni file .lua di «trucchi per giochi» e «script gratuiti» attaccano gli utenti. Leggi sempre un .lua scaricato prima di eseguirlo, ottieni addon/mod per giochi solo da fonti affidabili e diffida degli script offuscati o in bytecode (.luac) che non puoi ispezionare. All'interno di un host sandbox (ad esempio Roblox) il rischio è minore, ma gli «script» di ingegneria sociale sono ancora un comune vettore di truffa.
Dettagli del formato
in sintesiProgrammi che aprono file LUA
Dettagli tecnici
specifiche approfondite| Tipo di file | Codice sorgente in testo semplice (UTF-8 o ASCII) |
| Tipo MIME | text/x-lua |
| Firma del file (magic bytes) | Nessuna per i file sorgente - testo semplice senza intestazione binaria. Il bytecode pre-compilato utilizza 1B 4C 75 61 (ESC + «Lua») |
| Paradigma della sintassi | Multi-paradigma: procedurale, orientato agli oggetti tramite metatabelle e funzionale |
| Struttura dati principale | Tabella (array associativo) - l'unico tipo composto, che funge da array, dizionario e oggetto |
| Sintassi dei commenti | -- per riga singola; --[[ ... --]] per commenti a blocchi |
| Supporto Shebang | Il file sorgente può iniziare con #!/usr/bin/env lua per l'esecuzione diretta su sistemi Unix-like |
| Runtime standard | lua (interprete), luac (compilatore bytecode), luajit (compilatore JIT) |
| API di embedding host | API C compatta (lua_State, luaL_newstate, lua_call); binding disponibili per C++, Python, Java e altri |
| Libreria standard | io, os, string, table, math, coroutine, package, utf8, debug - ingombro minimo per design |
| Supporto coroutine | Coroutine asimmetriche di prima classe tramite coroutine.create / coroutine.resume / coroutine.yield |
| Garbage collector | Mark-and-sweep incrementale a tre colori; modalità generazionale opzionale introdotta in Lua 5.4 |
| Tipi numerici | Sottotipi distinti intero (64 bit per impostazione predefinita) e float (doppia precisione) a partire da Lua 5.3 |
| Sistema di moduli | require() risolve sorgenti .lua ed estensioni C binarie (.so / .dll) tramite package.path / package.cpath |
| Licenza | Licenza MIT (open source, gratuita per qualsiasi uso, incluso quello commerciale) |
| Rilasciato | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Standard aperto | Sì · royalty-free |
| Specifica | www.lua.org |
Conversioni LUA
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file LUA.