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://github.com/FernandoTheDev/cgd/raw/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
- Async/await
- 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.