A linguagem de programação Lua 5.5 está disponível

Após cinco anos de desenvolvimento, a versão Lua 5.5 está disponível, uma linguagem de programação rápida e compacta, amplamente utilizada como linguagem embutida para definir configurações e escrever extensões. O código do interpretador Lua é escrito em C e distribuído sob a licença MIT.

Lua combina uma sintaxe procedural simples com a capacidade de descrever dados por meio do uso de arrays associativos e uma semântica de linguagem extensível. Em Lua, a tipagem é dinâmica e as construções da linguagem são convertidas em bytecode, que é executado sobre uma máquina virtual de registradores com coletor de lixo automático. O interpretador é apresentado na forma de uma biblioteca, integrável em projetos nas linguagens C e C++.

Principais novidades:

  • A maior parte das operações de coleta de lixo utiliza um modo incremental, onde o ciclo de coleta é dividido em etapas individuais, alternando com a execução do programa, o que diminui as longas interrupções na execução de aplicações com muitos objetos na memória.
  • Uma implementação compacta de arrays foi proposta, que requer 60% menos memória para arrays com dados homogêneos (a economia é alcançada ao armazenar informações de tipo não para cada elemento, mas para um grupo de elementos).
  • Foi adicionada a possibilidade de declarar explicitamente variáveis globais em quaisquer blocos de código usando a palavra-chave "global". Ao declarar expressões em um bloco de código com a palavra-chave "global", todas as variáveis devem ser declaradas explicitamente. Se a declaração "global" estiver ausente, a expressão "global *" será implicitamente aplicada, mantendo o comportamento anterior em que todas as variáveis são tratadas como globais. Também foi adicionada a expressão "global<const> *", na qual todas as variáveis globais não declaradas tornam-se acessíveis em modo somente leitura. X = 1 — Ok, X é uma variável global, comportamento padrão anterior. do global Y — declaração da variável Y como global, todas as outras variáveis no bloco devem ser declaradas explicitamente Y = 1 — Ok, variável Y já definida X = 1 — Erro, variável X não definida end X = 2 — Ok, fora do bloco global o comportamento anterior se aplica.
  • As variáveis de controle especificadas nos loops 'for' agora estão disponíveis apenas para leitura e não podem ser modificadas dentro do corpo do loop. Por exemplo, a variável i, declarada no loop 'for i = 1, 5 do', não pode ser alterada no corpo do loop.
  • Ao imprimir números de ponto flutuante usando a função print, agora é exibido um número suficiente de dígitos para a conversão reversa correta de string para representação original.
  • O número permitido de níveis de aninhamento de construtores de tabelas foi aumentado.
  • Adicionada a função table.create(nseq, nrec) para adicionar uma tabela vazia e pré-alocar memória para o número especificado de elementos.
  • Na função utf8.offset, foi garantido que não apenas o deslocamento de bytes até o início do caractere seja retornado, mas também a posição do final do caractere.
  • Adicionada a suporte para a criação de strings externas que são alocadas na memória não gerida pelo coletor de lixo do Lua.
  • Adicionada a função luaL_openselectedlibs para carregar a biblioteca selecionada e a função luaL_makeseed, que gera uma semente para a função lua_newstate.
  • No lua.c, foi implementado o carregamento dinâmico da biblioteca 'readline', se esta estiver disponível (caso a biblioteca exista no sistema, ela é carregada e as funções de edição de string ficam disponíveis).
  • Incluída uma otimização para economizar memória ao carregar bytecode pré-compilado — o Lua agora pode reutilizar memória em algumas estruturas internas sem criar duplicatas ao carregar bytecode duplicado.
  • Garantido o reaproveitamento de todas as strings nas operações 'dump' e 'undump'.
  • Nos buffers auxiliares, foi garantido o reaproveitamento dos buffers (sem copiar para um novo buffer) ao criar a string final.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster