Roadmap
O que já foi implementado, o que falta e em que ordem.
Esta página reflete o estado real do repositório. O documento completo, com a auditoria técnica que originou o plano, está em doc/ANALISE_E_ROADMAP.md.
O que a 1.0 entrega#
Núcleo#
| Item | Estado |
|---|---|
| Analisador estático | feito — dataforge check |
| Stack traces | feito — arquivo, linha, coluna e cadeia |
| Records | feito — imutáveis, igualdade estrutural, with |
| Enums | feito — valores associados, integração com match |
| Desestruturação | feito — listas, records, vaults, ...resto |
| Spread | feito — literais, vaults, chamadas |
| Compreensões | feito — de lista e de vault |
| Null safety | feito — ?? e ?. |
| Pattern matching | feito — tipo, sequência, mapa, record, enum, guardas |
| OOP completa | feito — propriedades, estáticos, visibilidade, operadores, abstratos |
| Generics | feito — blueprint Pilha<T>, action primeiro<T>() |
Ferramentas#
| Item | Estado |
|---|---|
| Formatador | feito — dataforge fmt |
| Linter | feito — 13 regras |
| Executor de testes | feito — dataforge test |
| Gerador de documentação | feito — dataforge doc |
| REPL | feito — :type, :ast, :check, :load, histórico |
| Coloração no editor | feito — dataforge editor, instalada pelo instalador |
| LSP | feito — dataforge lsp, 10 recursos |
| Depurador | pendente |
Módulos e biblioteca#
| Item | Estado |
|---|---|
forge.toml | feito — init, info, scripts nomeados |
| Escopo real entre módulos | feito — relay controla o que sai |
| Imports seletivos | feito — adopt M.{a, b} |
| Detecção de ciclos | feito |
| 22 módulos, 753 símbolos | feito |
| Gerenciador de pacotes | feito — dataforge add, semver, lockfile |
| Kiln — framework web | feito — sintaxe própria, 46 funções |
Planilhas .xlsx | feito — Arcane.Excel, sem dependência |
1.1 — Confiança#
- Verificação de exaustividade em
matchsobre enum: avisar quando um membro ficou de fora. É o item de melhor relação custo/benefício que sobrou. - Contrato de trait: falhar na declaração quando o blueprint não implementa os métodos, em vez de só na chamada.
- Generics com restrição — hoje
<T>documenta e o analisador o aceita; falta<T extends Comparable>para o checker provar mais. - Menos unário no formatador: hoje
yield -1virayield - 1, e por isso ninguém rodadataforge fmt.
1.2 — Ferramental#
- Depurador: breakpoints, passo a passo, inspeção de variáveis.
- Cobertura de testes no
dataforge test.
1.3 — Ecossistema#
- Registro hospedado com autenticação — hoje publicar é abrir um PR no repositório do registro. Basta para começar, mas não escala para milhares de pacotes nem permite revogar uma versão comprometida.
- Espelho corporativo — para quem não pode buscar pacotes na internet aberta.
- `dataforge audit` — avisar quando uma dependência instalada tem versão com correção conhecida.
2.0 — Runtime#
- IR e máquina virtual de bytecode — hoje é interpretador de árvore, sem otimização.
- Cache de compilação.
- Empacotamento — gerar um executável com o runtime embutido.
Concorrência#
Mutex,Semaphore,Atomic— hoje sóchannelé seguroreceivebloqueanteTaskGroupe cancelamentoparalleltratando blocos em vez de instruções- Isolamento de transação por thread no
Arcane.Database— hoje a conexão serializa os acessos, mas duas threads embegin/commitcompartilham a mesma transação
Uma decisão pendente#
frame, train e predict são marcadores sintáticos: existem no lexer, no parser e no interpretador, mas devolvem um vault com __type__ e nada acontece.
Ou se implementa — DataFrame de verdade, ajuste de modelo — ou se remove. Manter sintaxe sem semântica é pior que não ter, porque quem lê a referência assume que funciona.
Estado verificado#
| Verificação | Resultado |
|---|---|
| Testes automatizados | 502 passando |
| Exercícios | 200/200 |
| Exemplos | 42/42 |
| Projetos completos | 4, com 61 testes |
| Análise estática sobre o repositório | 0 erros em 302 arquivos |
| Módulos da biblioteca | 22/22 carregam |
Instalação via curl | sh | verificada em produção |
| Imagem Docker | amd64 e arm64, verificada após docker pull |