Sobre o projeto
Xag é uma linguagem de programação compilada baseada em alto desempenho, mensagens de erro úteis e gerenciamento de memória do tipo Rust. Cada tamanho deve ser declarado explicitamente — não existe o tipo básico `int`. Os programas são compilados antecipadamente para código nativo via LLVM ou executados por um dos dois interpretadores AOT.
O compilador é escrito em C++20 usando a API nativa do C++ do LLVM, exigindo LLVM 23 ou superior, CMake e Ninja. Os arquivos-fonte usam a extensão `.xag`. A cadeia de ferramentas inclui comandos para análise léxica, análise sintática, verificação de tipos e inspeção de IR.
Existem três motores de execução: um interpretador de teste (obviamente correto, lento), um interpretador rápido (otimizado para código plano) e um backend nativo AOT. Todos os três chamam um único runtime compartilhado, então concordam sobre o comportamento em tempo de execução. Quando os motores discordam, o projeto identifica qual está fora de sincronia.
A aritmética decimal é validada rigorosamente: a implementação do software é verificada cruzada contra o `decimal` do Python (libmpdec) em 400.000 casos, e contra unidades decimais de hardware POWER via emulação QEMU para mais 20.000 casos adicionais.
O suporte a Unicode segue totalmente o UAX #29, incluindo contagem de clusters de grafemas, baseado nas tabelas da Unicode 17.0.0. Todos os 766 casos de conformidade Unicode são executados na suíte de testes.
Um gerador de oráculo (`generator/`) escreve programas Xag aleatórios e os testa em todos os motores para encontrar discrepâncias. O gerador é escrito em Rust sem dependências externas.
Licença: Apache-2.0 WITH LLVM-exception. O uso é gratuito; modificar o compilador ou o runtime requer atribuição sob os termos do Apache.
Nota: Este é um trabalho em progresso inicial — nada está estável ainda. A maior parte do código no repositório foi gerada por IA sob orientação do designer da linguagem.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.