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 de nil e 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 if uma expressão em vez de adicionar ?:, apontando para expressões no estilo do Luau if … 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/or escritos 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.