Compilador para a linguagem de programação Delegua.
Para instruções detalhadas de instalação, consulte o INSTALL.md
# Linux/macOS - Instalação automática
curl -fsSL https://raw.githubusercontent.com/FernandoTheDev/cgd/refs/heads/master/install.sh | sh
# Verificar instalação
cgd --help- LDC (LLVM D Compiler)
- DUB (D Package Manager)
Dica: O guia INSTALL.md contém instruções específicas para Ubuntu, Debian, Fedora, CentOS, RHEL e macOS.
O CGD transpila código Delegua para D, que é compilado com LDC (LLVM D Compiler), resultando em performance comparável ao C.
| Linguagem | Tempo | Diferença vs C |
|---|---|---|
| C | 53.1ms | - |
| C++ | 53.5ms | +0.8% |
| Delegua | 54.4ms | +2.4% |
| Rust | 60.5ms | +14.0% |
| Go | 85.3ms | +60.7% |
| Node.js | 140.2ms | +164% |
| Python | 1213ms | +2185% |
Todas as linguagens foram compiladas com máximas otimizações. O código em todas as linguagens foi o mais simples possível, mostrando a performance nativa da linguagem.
O CGD utiliza transpilação para atingir alta performance:
arquivo.delegua → [Lexer] → [Parser] → [Semantic] → [CodeGen] → arquivo.d → [LDC2] → executável
↓ ↓ ↓ ↓ ↓
Tokens AST Type Check D Source Native Binary
<─────────── CGD (~2ms) ──────────> <───── LLVM (~3000ms) ─────>
- Lexer: Transforma código fonte em tokens
- Parser: Constrói Abstract Syntax Tree (AST)
- Semantic Analysis: Verificação de tipos e análise semântica
- Code Generator: Transpila AST para código D equivalente e otimizado
- LDC Compilation: LLVM D Compiler gera código assembly otimizado
- Binary Output: Executável nativo com performance comparável ao C
# Compilar um arquivo Delegua
cgd compilar meu_programa.delegua
# Compilar com otimizações específicas
cgd --optimize meu_programa.delegua
# Ver ajuda completa
cgd --help- ✅ Linux (Ubuntu, Debian, Fedora, CentOS, RHEL)
- ✅ macOS (Intel e Apple Silicon)
- 🚧 Windows (em desenvolvimento)
Em desenvolvimento ativo
Iniciado: 11 de agosto de 2025
- Lexer básico
- Lexer completo
- Parser básico
- Parser completo
- Analisador semântico básico
- Analisador semântico completo
- Type checking robusto
- Verificação de escopo
- Otimizador
- Otimizações básicas (bitwise para multiplicação/divisão)
- Dead code elimination
- Constant folding
- Gerador de código D
- Geração do binário
- Tratamento de erros eficiente
- Tipos primitivos
-
inteiro/logico/texto/decimal - Literais numéricos múltiplos (hex:
0x45, octal:0o105, binário:01000101b)
-
- Arrays (
inteiro[]) - Strings com métodos (
tamanho,substituir,dividir) - HashMap/Dicionários
- Sets
- Condicionais (
se/senão) - Switch (
escolha/caso/padrao/quebrar) - Loops
-
para(for loop) -
enquanto(while) -
fazer/enquanto(do-while)
-
- Classes básicas
- Propriedades com tipos
- Métodos com tipos de retorno
- Palavra-chave
isto(this) - Instanciação com
novo - Method chaining (
obj.a().b().a())
- Herança
- Interfaces
- Construtores customizados
- Aritméticos básicos (
+,-,*,/,%,**) - Bitwise completos (
|,&,^,~,<<,>>) - Atribuição composta (
++,+=,|=) - Comparação (
==,!=,<,>,<=,>=) - Lógicos (
&&,||,!)
- Definição com tipos explícitos
- Múltiplos parâmetros e retorno
- Recursão
- Funções como valores
-
importar "modulo" -
importar { funcao } de "modulo" - Imports seletivos
- io
-
escrevaln/escreva -
leia(input do usuário)
-
- math
- Funções trigonométricas
- Logaritmos e exponenciais
- Constantes matemáticas
- http
- Cliente HTTP básico
- Servidor HTTP simples
- json
- Parse/stringify
- cripto
- Hash functions (MD5, SHA)
- Criptografia básica
- Declaração múltipla (
var a, b, c = 1, 2, 3) - Inferência de tipos (parcial)
- Comentários (
//) - Generics/Templates
- Pattern matching
- Memory management customizado
- Compilação (
cgd compilar) - Transpilação (
cgd transpilar) - Benchmarking integrado
- Debugger
- Formatter
- LSP (Language Server Protocol)
- Suporte completo ao Windows
- Otimizações avançadas
Este projeto está em fase inicial de desenvolvimento. Contribuições serão bem-vindas após a primeira versão estável.
Para contribuir:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
