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.