Extensões de sintaxe propostas para o LuaJIT 3.0
Status do LuaJIT e relação com o Lua
- Muitos ficam surpresos/contente que o trabalho em funcionalidades do LuaJIT pareça estar sendo retomado após uma longa fase apenas de manutenção.
- O LuaJIT é reafirmado como, na prática, um fork fixado no Lua 5.1, com desgosto explícito pelas mudanças posteriores do Lua.
- Vários argumentam que ele agora está divergindo o suficiente para, na prática, ser uma nova linguagem e talvez merecer um novo nome.
- Outros respondem que o código de 5.1 ainda vai rodar, e que novas funcionalidades podem ser opcionais.
Mudanças de sintaxe propostas e benefícios percebidos
- Populares: palavra-chave
const, atribuição composta (+=,..=),continue, coalescência denile navegação segura, underscores em literais numéricos, interpolação de strings. - Os apoiadores dizem que essas são, em sua maioria, melhorias de qualidade de vida “parecidas com macros”, que devem ser baratas de implementar e tornam o Lua mais ergonômico e acessível.
- Alguns traçam paralelos com o Luau (o fork de Lua da Roblox) e veem esse alinhamento como útil para programadores mais jovens e ferramentas de IA.
Debate sobre operador ternário e expressão if
- A sintaxe ternária é altamente controversa.
- Os críticos a consideram redundante, difícil de ler quando aninhada, e argumentam que o Lua já tem um padrão idiomático
and/or(com armadilhas conhecidas). - Outros preferem tornar
ifuma expressão em vez de adicionar?:, apontando para expressões no estilo do Luauif … then … else …. - Uma minoria gosta do ternário para seleção concisa de valores, especialmente com variáveis imutáveis.
Operadores, sintaxe bit a bit e legibilidade
- Reações mistas à adição de
&&,||e operadores bitwise no estilo C. - Alguns os acolhem pela ergonomia de C/JS e pela interoperabilidade orientada a desempenho.
- Outros veem operadores simbólicos como desnecessários, visualmente ruidosos e um mau uso de pontuação rara, preferindo
and/orescritos por extenso ou operadores bitwise como palavras-chave.
Preocupações com compatibilidade, ecossistema e nomenclatura
- Vários temem que isso fragmente ainda mais o Lua e desencoraje a escrita de scripts portáveis, especialmente porque o LuaJIT já diverge do PUC Lua.
- Alguns argumentam que o LuaJIT se “estabilizou” em 5.1 e que muitos usuários embarcados preferem essa estabilidade.
- Outros afirmam que o LuaJIT tem segurado a adoção de versões mais novas do Lua e que adicionar sintaxe única aprofunda a divisão.
Ideias e projetos alternativos
- Entre as sugestões estão estabilizar o bytecode do LuaJIT e deixar que outros construam sintaxes alternativas, ou priorizar compatibilidade com LuaRocks e PUC Lua em vez de nova sintaxe.
- Menção a VMs alternativas e implementações em Rust (por exemplo, com suporte a múltiplas versões do Lua) como abordagens diferentes para o problema da divisão de versões.