Um interpretador de alta performance para a linguagem Brainfuck, modelado como uma Máquina de Turing. Este projeto serve como uma prova de conceito para a aplicação de Arquitetura Hexagonal e Estratégias de Despacho Híbrido em Rust.
Este projeto não é apenas um interpretador, é um exercício de design de sistemas robustos:
-
Arquitetura Hexagonal (Ports & Adapters): O núcleo da Máquina de Turing é 100% isolado de efeitos colaterais. Toda a entrada (CLI, arquivos, teclado) e saída é feita através de Ports (Traits).
-
Hybrid Dispatch Strategy: * Static Dispatch (Generics): Utilizado no loop crítico do interpretador para garantir performance de tempo de execução igual ao C++.
-
Dynamic Dispatch (
Box<dyn>): Utilizado na infraestrutura para permitir composição flexível de adaptadores sem poluição de tipos genéricos. -
Composição de Adapters: Uso do padrão Strategy para desacoplar a origem do caminho do arquivo (
PathProvider) da lógica de extração de dados (CodeFetcher).
O diagrama abaixo ilustra como os componentes se comunicam através de interfaces, mantendo o domínio protegido.
graph LR
subgraph "External World"
OS[Operating System]
User[Terminal User]
end
subgraph "Infrastructure (Adapters)"
CLI[CLIAdapter]
FS[FileSystemExtractor]
TI[TerminalInput]
TO[TerminalOutput]
end
subgraph "Domain (Ports)"
PP[PathProvider]
CF[CodeFetcher]
IP[InputProvider]
OW[OutputWriter]
end
subgraph "Core (Application)"
TM[TuringMachine]
end
OS --> CLI
CLI --> PP
FS -- uses --> PP
FS --> CF
CF --> TM
User --> TI
TI --> IP
TO --> OW
TM --> IP
TM --> OW
Para entender os "porquês" por trás do código, consulte nossos registros de decisão de arquitetura:
- ADR 0001: Escolha do Rust - Foco em segurança de memória e performance.
- ADR 0002: Arquitetura Hexagonal - Desacoplamento via Traits.
- ADR 0003: Dispatch Híbrido - Otimização de performance no "Hot Path".
- ADR 0004: Composição de Adapters - SRP e modularidade.
- ADR 0005: Modelo de Domínio - Lógica da Máquina de Turing.
Este projeto requer o linker do Visual Studio (link.exe).
- Instale o Visual Studio Build Tools.
- Selecione a carga de trabalho "Desenvolvimento para desktop com C++".
git clone https://github.com/neoRandom/brainduck-rs.git
cd brainduck-rs
cargo build --release
# Executar um arquivo Brainfuck
cargo run -- caminho/do/script.bf
| Erro | Causa | Solução |
|---|---|---|
link.exe not found |
Toolchain MSVC ausente | Instale o C++ Build Tools no VS Installer |
No file path |
Argumento CLI faltando | Certifique-se de passar o caminho do arquivo após -- |
Unexpected Character |
Script BF inválido | O interpretador ignora caracteres que não sejam ><+-.,[] |
O design modular permite testar o Core sem interações reais de I/O:
cargo test
Os testes utilizam Mock Adapters para simular entradas de usuário e validar a fita de memória da máquina de forma determinística.
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.