O que é o formato de ficheiro LUA?
Um arquivo .lua contém o código-fonte de uma extensão de programa ou aplicativo, normalmente para um jogo ou aplicação incorporada, escrito na linguagem de script Lua. O código-fonte é uma coleção de comandos, instruções e definições de variáveis escritos usando uma sintaxe definida. O .lua é um arquivo de texto simples que pode ser aberto e editado com qualquer editor de texto; no entanto, recomenda-se que tais arquivos sejam abertos em ferramentas de edição que suportem realce de sintaxe. Um arquivo .lua pode conter uma série de comandos curtos, bem como o código completo de um programa ou módulo.
A sintaxe de Lua inspira-se em Pascal, e a linguagem utiliza arrays associativos (chamados *tabelas*) e semântica extensível via metatabelas. Lua é descrita por seus desenvolvedores como:
- Robusta e testada - usada por muitos desenvolvedores e projetos aclamados, incluindo plugins do Adobe Lightroom, o sistema de templates Scribunto da Wikipedia, CFTV e firmware embarcado, e jogos como World of Warcraft (addons de interface) e o Angry Birds original.
- Rápida - amplamente considerada a linguagem de script interpretada mais rápida; o LuaJIT, sua variante compilada just-in-time, amplia ainda mais o desempenho.
- Multiplataforma - Lua é distribuída como código-fonte ANSI C independente de plataforma, rodando em Linux, Windows, macOS, Android, iOS, sistemas embarcados e computadores de grande porte.
- Incorporável - bem documentada e fácil de integrar via sua API C com código escrito em outras linguagens, tanto compiladas quanto de script.
- Simples e poderosa - oferece suporte a meta-recursos (metatabelas e metamétodos) que podem ser estendidos conforme necessário.
- Leve e gratuita - o interpretador adiciona cerca de 300 KB a uma aplicação, e a linguagem é lançada sob a licença MIT.
Lua foi criada em 1993 pelos engenheiros de computação Roberto Ierusalimschy, Waldemar Celes e Luiz Henrique de Figueiredo na Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio). É mantida pelo laboratório de pesquisa LabLua dentro do Departamento de Informática dessa universidade. «Lua» significa «lua» em português. Múltiplas versões da linguagem foram desenvolvidas desde sua criação; a versão estável atual é Lua 5.4, introduzida em 2020, que trouxe um novo coletor de lixo geracional e um subtipo de inteiro distinto. O bytecode Lua pré-compilado é armazenado em arquivos .LUAC e carrega um cabeçalho mágico binário \x1BLua em vez de texto legível.
Segurança e proteção
RISCO: MEDIUMUm arquivo .lua é CÓDIGO-fonte, portanto, lê-lo é seguro, mas EXECUTAR um não confiável não é: scripts Lua podem chamar os.execute, io.open, os.remove e carregar bibliotecas nativas, de modo que um script malicioso pode deletar arquivos, exfiltrar dados ou executar comandos do sistema - exatamente como alguns arquivos .lua de trapaças de jogos e «scripts gratuitos» atacam os usuários. Sempre leia um .lua baixado antes de executá-lo, obtenha addons/mods de jogos apenas de fontes respeitáveis e tenha cuidado com scripts ofuscados ou em bytecode (.luac) que você não pode inspecionar. Dentro de um host isolado (ex: Roblox), o risco é menor, mas «scripts» de engenharia social ainda são um vetor de golpe comum.
Detalhes do formato
em resumoProgramas que abrem arquivos LUA
Detalhes técnicos
especificação profunda| Tipo de arquivo | Código-fonte em texto simples (UTF-8 ou ASCII) |
| Tipo MIME | text/x-lua |
| Assinatura do arquivo (bytes mágicos) | Nenhuma para arquivos-fonte - texto simples sem cabeçalho binário. Bytecode pré-compilado usa 1B 4C 75 61 (ESC + «Lua») |
| Paradigma de sintaxe | Multiparadigma: procedural, orientado a objetos via metatabelas e funcional |
| Estrutura de dados principal | Tabela (array associativo) - o único tipo composto, servindo como arrays, dicionários e objetos |
| Sintaxe de comentário | -- para linha única; --[[ ... --]] para comentários em bloco |
| Suporte a Shebang | O arquivo-fonte pode começar com #!/usr/bin/env lua para execução direta em sistemas do tipo Unix |
| Runtime padrão | lua (interpretador), luac (compilador de bytecode), luajit (compilador JIT) |
| API de incorporação no host | API C compacta (lua_State, luaL_newstate, lua_call); bindings disponíveis para C++, Python, Java e outros |
| Biblioteca padrão | io, os, string, table, math, coroutine, package, utf8, debug - pegada mínima por design |
| Suporte a corrotinas | Corrotinas assimétricas de primeira classe via coroutine.create / coroutine.resume / coroutine.yield |
| Coletor de lixo | Mark-and-sweep tricolor incremental; modo geracional opcional introduzido no Lua 5.4 |
| Tipos numéricos | Subtipos distintos de inteiro (64 bits por padrão) e float (precisão dupla) desde Lua 5.3 |
| Sistema de módulos | require() resolve fontes .lua e extensões binárias em C (.so / .dll) via package.path / package.cpath |
| Licença | Licença MIT (código aberto, gratuito para qualquer uso, incluindo comercial) |
| Lançado | Lua created in 1993 at PUC-Rio (Pontifical Catholic University of Rio de Janeiro) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | www.lua.org |
Conversões de LUA
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos LUA.