Lua 5.4

Após dois anos de desenvolvimento, no dia 29 de junho, uma nova versão da linguagem de programação Lua, 5.4, foi lançada silenciosamente e silenciosamente.

Lua é uma linguagem de programação simples e interpretada que pode ser facilmente integrada em aplicações. Devido a essas qualidades, Lua é amplamente utilizada como linguagem para estender ou descrever a configuração de programas (em particular, jogos de computador). Lua é distribuída sob a licença do MIT.

A versão anterior (5.3.5) foi lançada em 10 de julho de 2018.

Principais mudanças na nova versão

  • coletor de lixo de nova geração. Na função collectgarbage, os parâmetros setpause e setstepmul foram descontinuados e o parâmetro incremental é recomendado em seu lugar;

  • uma nova função para emissão de avisos de alerta com possibilidade de desabilitar sua exibição;

  • a nova implementação de math.random usa o algoritmo xoshiro256** em vez da libc fornecida e inicializa o gerador com um número aleatório;

  • variáveis ​​constantes;

  • Variáveis ​​“to-be-closed” são constantes locais para as quais o método __close é executado ao sair do escopo;

  • nova função lua_resetthread - limpa a pilha e fecha todas as variáveis ​​“fechadas”;

  • nova função coroutine.close - fecha a corrotina especificada e todas as suas variáveis ​​“fechadas”;

  • os dados do usuário podem conter um conjunto de valores acessados ​​​​por índice. Novas funções foram introduzidas para trabalhar com eles: lua_newuserdatauv, lua_setiuservalue e lua_getiuservalue;

  • Estão disponíveis informações de depuração sobre parâmetros e valores de retorno de funções;

  • se um índice inteiro for usado em um loop for e ocorrer um overflow, o loop termina;

  • um argumento opcional foi adicionado à função string.gmatch, especificando o deslocamento do início da string para procurar correspondências;

  • funções para converter implicitamente strings em números foram movidas para a biblioteca de strings e seu comportamento foi alterado. Por exemplo, o resultado da operação "1" + "2" agora é um número inteiro em vez de um número de ponto flutuante;

  • na função de alocação de memória, pode ocorrer um erro ao reduzir um bloco de memória;

  • novo símbolo de formatação na função string.format - %p (para ponteiros);

  • a biblioteca utf8 aceita códigos de caracteres de até 2³¹ (se um sinalizador especial for especificado, sem ele apenas códigos de até 0x10FFFF serão permitidos e substitutos não serão permitidos);

  • constantes inteiras fora do intervalo de valores são convertidas em números flutuantes (anteriormente ocorria corte de bits);

  • o metamétodo __lt não é mais usado para emular o metamétodo __le; se necessário, o metamétodo __le deve ser especificado explicitamente;

  • um rótulo para uma instrução goto não pode ser criado se um rótulo com o mesmo nome já existir no escopo atual (mesmo que tenha sido definido no escopo externo);

  • O metamétodo __gc pode ser mais do que apenas uma função. Se uma tentativa de chamar um método falhar, um aviso será impresso;

  • a função print não chama tostring para cada argumento, mas usa suas próprias conversões internas;

  • a função io.lines retorna um conjunto de quatro valores em vez de um; para emular o comportamento antigo, coloque a chamada entre parênteses se estiver passando-a como parâmetro para outra chamada de função.

Fonte: linux.org.ru

Adicionar um comentário