Nelua.io
O Nelua (significa NTive e Xtensible Lua ) é uma linguagem de programação de sistemas mínimos, eficientes, estatais e metaprogramáveis, fortemente inspirada por Lua, que compila com C e código nativo.
Nota: O idioma está no estado alfa e ainda evoluindo.
#showcase no servidor Discord.Após a instalação, você pode querer conferir o exemplo em destaque, um jogo de cobra alavancando a famosa biblioteca SDL2:
nelua examples/snakesdl.neluaO Nelua é uma linguagem de programação de sistemas para aplicativos sensíveis ao desempenho, onde Lua não seria eficiente, como sistemas operacionais, aplicativos em tempo real e mecanismos de jogo. Embora tenha sintaxe e semântica semelhante à LUA, ele se concentra principalmente na geração de código C eficiente e fornece suporte para programação de nível de baixo nível altamente otimizável. O uso de idiomas de Nelua, como registros, matrizes, gerenciamento manual de memória e ponteiros, devem resultar em desempenho tão eficiente quanto C; Por outro lado, ao usar expressões idiomáticas Lua, como tabelas, metáticos e variáveis não vinculadas, o compilador assará uma biblioteca de tempo de execução para esse tipo de funcionalidade dinâmica no programa, o que pode incorrer em algumas despesas gerais de tempo de execução.
Nelua pode fazer a meta -programação no momento da compilação por meio de construções de pré -processador escritas em Lua; Como o próprio compilador também é escrito em Lua, isso significa que o código pré-processador fornecido pelo usuário pode interagir em qualquer ponto com os internos do compilador e o AST do código-fonte. Esse sistema permite a implementação ad-hoc de construções de alto nível, como classes, genéricos e polimorfismo, tudo sem precisar adicioná-los à especificação do núcleo, mantendo assim o idioma simples, extensível e compacto. Da mesma forma que os padrões orientados a objetos de Lua não são incorporados ao idioma, mas, no entanto, podem ser alcançados por meio de metáticos, em Nelua, você pode implementar uma funcionalidade semelhante que é totalmente decidida no tempo de compilação ou despachado dinamicamente em tempo de execução.
O Nelua pode fazer uma programação extensível, pois o programador pode adicionar extensões ao idioma, como novas gramáticas, definições de AST, semântica, verificadores de tipo, geração de código e comportamentos para o compilador no tempo de compilação através do pré -processador.
O Nelua fornece suporte para gerenciamento de memória coletado e manual de lixo de uma maneira que o desenvolvedor pode escolher facilmente entre usar a coleta de lixo ou desativar completamente a coleta de lixo ou a mistura de ambos.
O Nelua primeiro compila com C, depois executa um compilador C para produzir código nativo. Dessa forma, o código C e as bibliotecas existentes podem ser alavancadas e novas bibliotecas C podem ser criadas. Outro benefício é que o Nelua pode atingir as mesmas plataformas de destino que os compiladores C99, como GCC ou CLANG, além de desfrutar de otimizações de compilador de última geração fornecidas por eles.
A motivação inicial para sua criação foi substituir partes de C/C ++ de projetos que atualmente usam Lua por um idioma que possui sintaxe e semântica semelhante à Lua, mas permite otimizações de desempenho de granulação fina e não perde a capacidade de subir de nível baixo, unificando a sintaxe e a semântica nas linguagens compiladas e dinâmicas.
Você pode apoiar ou contribuir para Nelua de várias maneiras, dando ao projeto uma estrela no Github, testando seus recursos, relatando bugs, discutindo idéias, ajudando outros usuários, espalhando -o para o mundo, compartilhando projetos feitos com ele no Github, criando tutoriais ou postagens de blog, melhorando sua documentação ou por meio de uma doação ou patrocínio.
O Nelua é de código aberto, mas não muito aberto a contribuições na forma de solicitações de tração, se você quiser algo corrigido ou implementado no idioma principal, tente primeiro enviar um relatório de bug ou abrir uma discussão em vez de fazer um PR. Os autores preferem dessa maneira, para que a solução ideal seja sempre fornecida, sem consequências indesejadas no projeto, mantendo a qualidade do software.
Leia mais sobre como contribuir na página contribuinte.
MIT Licença