Código aberto para Luau, uma variante de verificação de tipo da linguagem Lua

Anunciou o código aberto e a publicação do primeiro lançamento independente da linguagem de programação Luau, continuando o desenvolvimento da linguagem Lua e compatível com versões anteriores com Lua 5.1. Luau foi projetado principalmente para incorporar mecanismos de script em aplicativos e visa alcançar alto desempenho e baixo consumo de recursos. O código do projeto é escrito em C++ e está aberto sob a licença do MIT.

Luau estende Lua com recursos de verificação de tipo e algumas novas construções 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 usar Luau com código e ligações existentes. O tempo de execução da linguagem é baseado em um código Lua runtime 5.1 fortemente retrabalhado, mas o interpretador foi completamente reescrito. Durante o desenvolvimento, algumas novas técnicas de otimização foram utilizadas para alcançar um desempenho superior em comparação com Lua.

O projeto foi desenvolvido pela Roblox e é utilizado no código da plataforma de jogos, jogos e aplicativos de usuário desta empresa, incluindo o editor Roblox Studio. Inicialmente, o 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 principais:

  • Digitação gradual, ocupando uma posição intermediária entre digitação dinâmica e estática. Luau permite que você use digitação estática conforme necessário, especificando informações de tipo por meio de anotações especiais. Os tipos integrados "any", "nil", "boolean", "number", "string" e "thread" são fornecidos. Ao mesmo tempo, é preservada a possibilidade de usar digitação dinâmica sem definir explicitamente o tipo de variáveis ​​​​e funções. função foo(x: número, y: string): booleano local k: string = y:rep(x) return k == “a” end
  • Suporte para literais de string (como em Lua 5.3) como "\0x**" (número hexadecimal), "\u{**}" (caractere Unicode) e "\z" (fim de linha), bem como o capacidade de visualizar a formatação de números (você pode escrever 1_000_000 em vez de 1000000), literais para números hexadecimais (0x...) e binários (0b......).
  • Suporte para a expressão "continue", complementando a palavra-chave "break" existente, para pular para uma nova iteração de loop.
  • Suporte para operadores de atribuição compostos (+=, -=, *=, /=, %=, ^=, ..=).
  • Suporte para 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 expressões elseif em um bloco. local maxValue = se a > b então a else b sinal local = se x < 0 então -1 elseif x > 0 então 1 else 0
  • A presença de um modo de isolamento (sandbox), que permite executar código não confiável. Este recurso pode ser usado para organizar o lançamento lado a lado do seu próprio código e do código escrito por outro desenvolvedor, por exemplo, bibliotecas de terceiros cuja segurança não pode ser garantida.
  • Uma limitação da biblioteca padrão da qual foram removidas funções que poderiam criar problemas de segurança. Por exemplo, as bibliotecas “io” (acessar arquivos e iniciar processos), “package” (acessar arquivos e carregar módulos), “os” (funções para acessar arquivos e alterar variáveis ​​de ambiente), “debug” (operação insegura com memória) , “dofile” e “loadfile” (acesso FS).
  • Fornecer ferramentas para análise estática de código, identificando erros (linter) e verificando o uso correto dos tipos.
  • Possui analisador de alto desempenho, interpretador de bytecode e compilador. Luau ainda não oferece suporte à compilação JIT, mas afirma-se que o intérprete Luau é bastante comparável em desempenho ao LuaJIT em algumas situações.

Fonte: opennet.ru

Adicionar um comentário