Por que converter LUA para LUAC?
Distribuir scripts como bytecode remove a sobrecarga de análise em cada carregamento e evita a leitura casual do código-fonte. O formato .luac é a representação nativa de bytecode compilado do Lua, produzida diretamente pelo conjunto de ferramentas padrão do Lua que acompanha cada instalação do Lua.
Como converter LUA para LUAC
luac FREE
Execute luac -o script.luac script.lua em um terminal. Adicione -s para remover informações de depuração e obter um arquivo menor, ou liste vários arquivos .lua para compilá-los em um único bloco de bytecode.
LuaJIT FREE
Execute luajit -b script.lua script.luac para compilar para o formato de bytecode próprio do LuaJIT. Observe que o bytecode do LuaJIT é incompatível com a VM padrão do Lua.
Sobre estes formatos
Um arquivo LUA é um código-fonte escrito em Lua, uma linguagem de script leve criada em 1993. Qualquer editor de código (VS Code, Notepad++) o abre para leitura ou edição. Para executá-lo,…
Abrir detalhes de .LUA →Um arquivo .LUAC está associado ao Lua Compiled Source Code, um arquivo do tipo developer.
Abrir detalhes de .LUAC →Qualidade e o que observar
- Um arquivo
.luacestá vinculado à versão exata do Lua que o compilou; o bytecode doluac 5.4será rejeitado pelo Lua 5.3 ou anterior. - O bytecode não é criptografado - ferramentas como o
unluacpodem descompilar parcialmente arquivos.luac. Não dependa dele para proteger lógica sensível. - O formato de bytecode é específico da plataforma; um
.luaccompilado em uma máquina de 64 bits pode falhar em um dispositivo de 32 bits. Compile na mesma plataforma que irá executá-lo.
Perguntas frequentes
O luac já está instalado se eu tiver o Lua?
luac acompanha a distribuição oficial do Lua e não requer download separado.O arquivo .luac rodará mais rápido que o .lua original?
Posso recuperar o código-fonte .lua original de um arquivo .luac?
-s para o luac remove até mesmo números de linha e nomes de funções, tornando a recuperação mais difícil.O LuaJIT usa o mesmo formato de bytecode que o Lua padrão?
luajit -b apenas quando o destino também executar LuaJIT.