circ: uma linguagem pra circuitos digitais, que desenha a si mesma em ASCII
Oi pessoal, tudo bom?
Há um tempo eu venho escrevendo uma série de posts no meu blog sobre fundamentos de computação (portas lógicas, binário, memória, esse tipo de coisa), e em cada post tinha que colocar diagramas de circuitos. No começo eram SVGs estáticos que eu desenhava na mão, depois um renderizador em TypeScript que eu não parava de remendar. Funcionavam, mas eram só desenhos. Você podia olhar, mas não podia mexer numa chave e ver o LED acender.
Cansei dos remendos e escrevi uma linguagem bem pequena pra resolver isso. Se chama circ, e descreve circuitos digitais e compila pra WebAssembly. Do mesmo arquivo .circ saem três coisas: o .wasm que roda no navegador, um desenho do circuito em ASCII (via --preview), e a tabela verdade (via --truth-table). Os widgets interativos que aparecem nos posts da série são todos circ rodando em background.
Não é uma linguagem séria de sistemas (ainda), é uma coisinha feita pra um propósito específico. Mas eu me diverti muito construindo, e queria dividir com vocês.
Acabei de publicar uma carta apresentando ela: link do post. A linguagem tem um site com a referência completa em circ-lang.org e o código tá no GitHub: link do repo.
Tô bem curioso pra ouvir o que vocês acham. Feedback sobre a sintaxe, sobre o post, sobre qualquer coisa, é bem-vindo.
Valeu!