0Pricing
Lua Academy · Aula

Visão geral da arquitetura do LuaJIT

Entenda como funciona o JIT baseado em rastreamento do LuaJIT em comparação com o interpretador padrão da VM Lua.

Visão geral da arquitetura do LuaJIT é uma aula grátis de Lua Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Lua Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Lua Academy inclui 4 aulas no total.

O que é LuaJIT?

LuaJIT é um compilador Just-In-Time para Lua 5.1. Ele é significativamente mais rápido do que a VM padrão do Lua em códigos numéricos e com muitos loops, mantendo compatibilidade de 100%.

Dois modos de execução

LuaJIT tem dois modos: o interpretador (um interpretador rápido de bytecode, mais rápido do que o do PUC Lua) e o compilador JIT (que rastreia loops quentes até gerar código nativo de máquina).

JIT por rastreamento

LuaJIT usa um JIT de rastreamento: ele registra (rastreia) a execução de loops quentes e então compila o rastreamento em código nativo otimizado. Ele não compila funções inteiras.

Detecção de loops quentes

LuaJIT conta as iterações dos loops. Quando um loop fica quente (ultrapassa um limite), o JIT registra um rastreamento e o compila. As iterações seguintes são executadas como código nativo.

Pipeline de compilação JIT

Rastreamento → IR (representação intermediária) → otimizações (LICM, CSE, DCE) → alocação de registradores → código de máquina (x86/x64, ARM, MIPS).

Recursos específicos do LuaJIT

LuaJIT adiciona a biblioteca FFI (chamada direta de funções C), a API de controle jit.*, a biblioteca bit para operações bit a bit (antes do Lua 5.3) e padrões semelhantes aos do PCRE estendidos.

Características de desempenho

LuaJIT normalmente é de 2 a 10 vezes mais rápido do que PUC Lua em código compilado por JIT e de 30 a 100 vezes mais rápido do que Python em loops numéricos. As chamadas FFI têm sobrecarga quase nula.

Saída do JIT (saída lateral)

Se uma suposição do JIT for violada (alterações de tipo ou ramificações raras), o JIT retorna ao interpretador. Retornos frequentes reduzem o desempenho.

jit.on() e jit.off()

Ative ou desative o JIT globalmente ou por função. Isso é útil para identificar se o JIT está ajudando ou prejudicando um caminho específico do código.

jit.off()        -- disable JIT globally
jit.on()         -- enable JIT globally
jit.off(myFunc)  -- disable JIT for one function

Observações sobre compatibilidade

LuaJIT é compatível com Lua 5.1. Alguns recursos do Lua 5.2/5.3 (inteiros, goto e __gc em tabelas) não são compatíveis. Verifique a compatibilidade ao migrar.

Quando usar LuaJIT

Use LuaJIT quando: o desempenho for crítico, você precisar de FFI para acessar bibliotecas C ou estiver incorporando Lua em um mecanismo de jogo (LÖVE, OpenResty, nginx) que inclua LuaJIT.

Pergunta sobre LuaJIT

O que o JIT por rastreamento do LuaJIT compila?

Recapitulação: arquitetura do LuaJIT

LuaJIT é um JIT por rastreamento que compila loops quentes em código nativo. Ele inclui a biblioteca FFI para chamadas C sem sobrecarga significativa. Entenda os retornos ao interpretador e a estabilidade dos tipos para aproveitar ao máximo a compilação JIT.

Perguntas Frequentes

A aula “Visão geral da arquitetura do LuaJIT” é grátis?

Sim — o texto completo de “Visão geral da arquitetura do LuaJIT” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Lua Academy, atualize para CoddyKit PRO. O curso de Lua Academy inclui 4 aulas no total.

O que vou aprender em “Visão geral da arquitetura do LuaJIT”?

Entenda como funciona o JIT baseado em rastreamento do LuaJIT em comparação com o interpretador padrão da VM Lua. Você pratica Lua Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Lua Academy?

Nenhuma experiência prévia é necessária. Lua Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Visão geral da arquitetura do LuaJIT”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Lua Academy?

Sim. Cada aula de Lua Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Visão geral da arquitetura do LuaJIT
  2. Escrevendo Lua compatível com JIT
  3. Criação de perfis com jit.p e perf
  4. Padrões de avaliação de desempenho
← Voltar para Lua Academy