brick

Arquitetura do Brick

Visão Geral

Brick compila arquivos fonte .brc para código C, então delega a gcc ou clang para geração de código de máquina. O compilador é escrito em C++20.

.brc → Lexer → Tokens → Parser → AST → Type Checker → C Codegen → .c → gcc -O3 → binário
                           ↕
                    Macro Expander
                    Build Eval

Pipeline

1. Lexer (src/lexer/)

Tokeniza fonte .brc em um fluxo de tokens. Suporta:

2. Parser (src/parser/)

Parser recursivo descendente que produz uma AST. Inclui:

3. Codegen (src/codegen/)

Duas fases:

  1. Type Checker: Verificação de tipos, widening/narrowing, overflow, visibilidade
  2. C Codegen: Produz C legível com diretivas #line para debug

4. Runtime

Componentes:

Visualizador de Memória

TUI ncurses mostrando estado dos blocos: capacidade, uso, pico, contagem de alocações.

Extensão VS Code

Syntax highlighting (TextMate), LSP (completions, hover, go-to-def, signature help), webview de memória.

Debugger

.gdbinit + pretty-printers Python para BlockCtx e BrickString. Comandos: info blocks, block <name>.

Test Suite

Performance

Operação Tempo
Block allocation ~3 ciclos
Reset global ~5 ns (O(1))
Chamada fn (inline) 0 ciclos
Dispatch vtbl ~2-3 ciclos
Pool alloc (≤64B) O(1)