DataForge para VS CodeSuporte completo à linguagem DataForge — servidor de linguagem, Big-O no editor, custo de import, cobertura de testes, painéis Vitrine, geradores DevOps, 49 comandos e 123 snippets. O princípio: ela não reimplementa a linguagemToda análise — erro, complexidade, custo, formatação, autocompletar — é feita pela CLI, e a extensão só desenha o resultado. Não é preguiça: é a única forma de o editor, o terminal e o CI nunca
discordarem. Uma segunda implementação em TypeScript divergiria da
primeira no dia em que a linguagem ganhasse um nó novo, e você veria um
erro no editor que o Enquanto você escreveErro sublinhado, a cada teclaO servidor de linguagem ( O código do erro ( Hover com exemplo que rodaParar o mouse numa palavra reservada mostra o que ela faz e três linhas de código. Dizer é metade — os 87 exemplos são executados por um teste a cada mudança do repositório, porque um exemplo de documentação que não compila ensina errado. O mesmo vale para os 37 módulos e as 228 funções embutidas: hover traz a assinatura e o que a função faz, lido do próprio código. Big-O acima de cada ação
Quanto cada
|
Ctrl+F5 |
roda no terminal |
Ctrl+Shift+F5 |
roda capturando tudo, com cronômetro |
--debug: tokens, AST e traceback completo |
|
| repetir N vezes: média, mediana e p95 |
A mediana e o p95 estão lá porque a média sozinha esconde a pausa do coletor de lixo — uma execução em vinte que demora dez vezes mais desaparece na média e aparece no p95.
E há Observar e reexecutar ao salvar, para quem itera.
Depurar: F5
Clique na margem e aperte F5. Não é preciso escrever launch.json.
| No painel | O que se vê |
|---|---|
| Variáveis | o escopo onde você parou, do mais próximo ao global — vault e cluster abrem em árvore |
| Pilha de chamadas | quem chamou quem; clicar leva ao lugar certo do arquivo certo |
| Console de depuração | qualquer expressão DataForge, avaliada no quadro onde você parou |
F11 · F10 · Shift+F11 |
entrar · passar por cima · sair da ação |
// Pare na linha do 'yield' e escreva no console:
total * 2 + len(nome)
[n * n cycle n in itens]
Três coisas que ele faz e que não são óbvias:
- Uma parada em comentário é movida para a próxima linha executável, e o painel mostra onde ficou. Uma parada que nunca dispara, mostrada acesa, é o pior dos dois mundos. A pergunta "o que é linha executável" é respondida pelo mesmo módulo que a cobertura usa — duas definições divergiriam.
- As 228 embutidas não aparecem no painel de variáveis. Elas vivem no escopo global, e despejá-las enterra as três variáveis que você parou para ver.
- Avaliar usa o quadro escolhido, e não o global: é justamente para as variáveis locais que a diferença importa.
O adaptador é dataforge dap, um processo que fala Debug Adapter
Protocol no stdio — o mesmo protocolo que qualquer editor moderno
fala. A extensão só diz ao VS Code qual processo iniciar; a máquina de
depuração mora na linguagem, e por isso serve Neovim, Helix e Emacs
também.
Para depurar onde não há interface gráfica — por ssh, num container —
o comando Depurar no terminal roda dataforge debug, que é passo a
passo em texto.
Os 49 comandos
Abra a paleta (Ctrl+Shift+P) e digite DataForge.
Executar — rodar · rodar e medir · rodar com --debug · medir N
execuções · depurar · observar e reexecutar · avaliar expressão ·
perfilar (tempo por ação) · medir desempenho (bench)
Qualidade — verificar erros · formatar · lint · corrigir o que dá · rodar os testes · rodar o Crucible · cobertura (quais linhas os testes rodaram) · cobertura mínima (reprova abaixo de N%) · analisar complexidade · tabela de referência do Big-O · por que isto é assim?
Vitrine — subir o painel recarregando ao salvar · por que não sobe? (o diagnóstico, da causa mais provável para a menos)
DevOps — gerar artefatos (Dockerfile, compose, CI, Kubernetes, Helm, Terraform, nginx, Prometheus, SBOM, segredos) · o que falta para subir?
Projeto — novo projeto (oito modelos, vindos da própria CLI) ·
inventário · gerar documentação · ver o forge.toml · limpar caches
Pacotes — instalar dependências · acrescentar · procurar no registro · instalados · desatualizados · árvore de dependências
Bancos — nova conexão · testar · atualizar · remover · inserir o código no editor
Entender — explicar um código de erro · todos os 177 códigos · ver os tokens · ver a árvore sintática · abrir o REPL · abrir a documentação · reiniciar o servidor de linguagem
O painel lateral
Um ícone do DataForge na barra de atividades, com duas árvores:
Conexões — seus bancos, testados pelo Arcane.Forge, o mesmo módulo
que o seu código usa. A senha vai para o cofre do sistema, nunca
para o settings.json — que costuma acabar num repositório.
Ferramentas — oito grupos, a um clique: Executar, Qualidade, Vitrine, DevOps, Complexidade, Pacotes, Inspecionar e Projeto.
A árvore é estática de propósito: nada nela consulta o disco nem
roda processo ao abrir. Um painel que trava enquanto o editor carrega é
pior que um painel ausente. E o que precisa de um .df aberto fica
apagado em vez de sumir — um item que desaparece parece defeito, um
item apagado ensina quando ele serve.
Atalhos
Ctrl+F5 |
rodar |
Ctrl+Shift+F5 |
rodar e medir |
Ctrl+Alt+O |
analisar complexidade |
Ctrl+Alt+T |
rodar os testes |
No macOS, Cmd no lugar de Ctrl.
123 snippets
Cobrem a linguagem inteira: action, blueprint com visibilidade e
sobrecarga de operadores, record, enum, trait, match/point,
pipelines, stream action, rotas do Kiln, suítes do Crucible e modelos
do Forge.
Os que economizam mais tempo:
| Digite | Sai |
|---|---|
vitrine |
um painel completo — título, filtro, métricas, gráfico |
vcache |
mark @V.cache — obrigatório num painel, que roda inteiro a cada clique |
vform |
um formulário, cujos valores só chegam no envio |
vteste |
testar uma página sem navegador |
kupload |
receber arquivo, com as três recusas de segurança |
ksse |
uma resposta que não termina (o servidor empurra) |
kws |
WebSocket com sala |
btrans |
a operação inteira, ou nenhuma |
bupsert |
insere ou atualiza, sem duplicar |
bincr |
a baixa de estoque no banco, não na memória |
bagg |
relatório agrupado, sem escrever SQL |
bpag |
listagem paginada, com total e número de páginas |
bbusca |
busca textual FTS5 — LIKE %x% varre a tabela inteira |
bmig |
uma migração, com ida e volta |
snapshot |
instantâneo, para o que é grande demais para escrever à mão |
cbanco |
um teste que grava e não é visto pelo seguinte |
Digite o começo e Tab.
Há um teste que compila os 123. Um snippet que não compila é pior que um snippet ausente: ele ensina sintaxe errada, e quem o usa acredita.
Configuração
| opção | padrão | |
|---|---|---|
dataforge.caminho |
"" |
onde está o executável, se não estiver no PATH |
dataforge.verificar |
true |
sublinhar erros |
dataforge.servidor.ativo |
true |
o servidor de linguagem |
dataforge.servidor.log |
"" |
verbose para depurar o próprio LSP |
dataforge.complexidade.mostrar |
true |
Big-O acima das ações |
dataforge.complexidade.avisarAcimaDe |
O(n log n) |
a partir de onde marcar |
dataforge.custoDeImport |
true |
tamanho ao lado do adopt |
dataforge.formatarAoSalvar |
false |
dataforge fmt ao salvar |
Instalação
A extensão precisa do dataforge no PATH:
# macOS e Linux
curl -fsSL https://dataforge-lang.vercel.app/instalar.sh | sh
# Windows
irm https://dataforge-lang.vercel.app/instalar.ps1 | iex
# ou, com Python 3.10+
pip install dataforge-lang
Há também um instalador gráfico para Windows e executáveis que não precisam de Python, em dataforge-lang.vercel.app/download.
Se o executável estiver em outro lugar, aponte em dataforge.caminho.
Uma instalação antiga no PATH produz erros que não existem. Se algo não fizer sentido, rode
dataforge --versionno terminal e confira que é a versão que você espera.
Se algo não funcionar
"O projeto não foi criado" — a mensagem agora traz o motivo real, e o botão Ver a saída completa abre o que a CLI imprimiu.
Sem autocompletar — o painel de saída (canal DataForge) diz se o
servidor subiu. DataForge: Reiniciar o servidor de linguagem costuma
resolver.
Sem Big-O — ele só aparece em ações; um arquivo só de código de topo não tem o que medir.
O que ela não faz
- Não formata enquanto você digita.
dataforge.formatarAoSalvarliga a formatação ao salvar, e ela é desligada por padrão: formatador que reorganiza no meio da frase atrapalha mais que ajuda. - Não renomeia através de arquivos. O
renamedo servidor vale dentro de um arquivo; oadoptcruzando módulos ainda é manual. - Não tem refatorações automáticas além das correções rápidas que o analisador sabe provar.
- Não depura mais de uma thread por vez. A linguagem tem
threadeparallel, mas o depurador sombreiaexecuteno interpretador inteiro: apresentar N threads sem poder pará-las uma a uma seria uma interface que promete o que não cumpre. - Não tem breakpoint condicional nem watchpoint. Parar e avaliar no
console cobre o caso; a condição ainda é um
givencomout.
MIT · Código-fonte · Reportar um problema