Luau, uma variante de verificação de tipo da linguagem Lua torna-se open source

Faz pouco o lançamento da primeira versão foi anunciado independente da linguagem de programação Luau, que continua com o desenvolvimento de Lua e também é compatível com versões anteriores de Lua 5.1.

A linguagem Luau é projetado principalmente para incorporar motores de script em aplicações e visa atingir alto desempenho e baixo consumo de recursos. O código do projeto é escrito em C ++ e está aberto sob a licença MIT.

Luau expande Lua com recursos de verificação de tipo e algumas compilações novas sintáticas como literais de string. A linguagem é compatível com versões anteriores de Lua 5.1 e parcialmente com versões mais recentes. A API Lua Runtime é suportada, permitindo que Luau seja usado com códigos e links pré-existentes.

A partir de hoje, Luau não é mais uma parte inseparável da plataforma Roblox; é uma linguagem independente de código aberto.

O tempo de execução da linguagem é baseado em código de tempo de execução Lua 5.1 altamente revisado, mas o interpretador foi completamente reescrito. O desenvolvimento envolveu algumas novas técnicas de otimização que possibilitaram obter um desempenho superior em relação a Lua.

Quando Roblox foi criado, há 15 anos, escolhemos Lua como linguagem de programação. Lua era pequena, rápida, fácil de integrar e aprender e abriu enormes possibilidades para nossos desenvolvedores.

Muito do Roblox foi construído em Lua, incluindo centenas de milhares de linhas de código desenvolvido internamente que alimentam o aplicativo Roblox e o Roblox Studio até hoje, e os milhões de experiências que os desenvolvedores criaram. Para muitos deles, foi a primeira linguagem de programação que aprenderam.

O projeto foi desenvolvido pela Roblox e é usado em código de plataforma de jogo e aplicativos personalizados desta empresa, incluindo o editor do Roblox Studio. Inicialmente, Luau foi desenvolvido a portas fechadas, mas no final decidiu-se transferi-lo para a categoria de projetos abertos para posterior desenvolvimento conjunto com a participação da comunidade.

Características:

  • Um sistema de tipo sequencial, que ocupa uma posição intermediária entre a escrita dinâmica e a estática. Luau permite a escrita estática conforme necessário, especificando informações de tipo por meio de anotações especiais.
  • o tipos embutidos "Any", "nil", "boolean", "number", "string" e "thread". Ao mesmo tempo, a capacidade de usar tipagem dinâmica sem definir explicitamente o tipo de variáveis ​​e funções também é preservada.
  • Suporte para strings literais (como em Lua 5.3)
  • Suporte para a expressão "continue", além da palavra-chave existente "break", para pular para uma nova iteração do loop.
  • Suporte para operadores de atribuição de compostos
  • Suporte para o uso de blocos condicionais "If-then-else" na forma de expressões que retornam o valor calculado durante a execução do bloco. Você pode especificar um número arbitrário de instruções elseif em um bloco.
  • A presença de um modo sandbox que permite que você execute código não confiável. Esta função pode ser usada para organizar seu próprio código e código escrito por outro desenvolvedor, por exemplo, bibliotecas de terceiros que não podem ser garantidas, para rodar lado a lado.
  • Uma limitação da biblioteca padrão da qual as funções que poderiam criar problemas de segurança foram removidas. Por exemplo, as bibliotecas "io" (acesso a arquivos e processos de inicialização), "pacote" (acesso a arquivos e módulos de carregamento), "os" (funções para acessar arquivos e alterar variáveis ​​de ambiente foram removidas), "Debug" (inseguro manipulação de memória), "dofile" e "loadfile" (acesso ao sistema de arquivos).
  • Fornecer ferramentas para análise de código estático, detecção de erros (Linter) e validação do uso de tipos.
  • Analisador, intérprete de bytecode e compilador proprietário de alto desempenho.
  • Luau ainda não oferece suporte à compilação JIT, mas argumenta-se que o interpretador Luau é bastante comparável em desempenho ao LuaJIT em algumas situações.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir.