prometeu-runtime/README.md
2026-03-24 13:40:18 +00:00

157 lines
3.7 KiB
Markdown

# PROMETEU Runtime
PROMETEU é um **runtime educacional e experimental** inspirado em consoles clássicos,
com foco em **ensinar programação, arquitetura de sistemas e conceitos de hardware
através de software**.
Este repositório contém o **runtime do PROMETEU**, implementado em Rust, responsável por:
- simular um “hardware lógico” simples
- executar programas (futuros cartuchos) em um loop determinístico
- abstrair plataformas modernas (desktop, mobile, etc.) de forma consistente
> PROMETEU é uma máquina virtual simples, explícita e didática.
---
## 🎯 Objetivos do Runtime
- Executar um loop fixo (60 Hz)
- Manter um framebuffer de baixa resolução (estilo console)
- Fornecer periféricos simples e determinísticos:
- GFX (framebuffer + double buffer)
- INPUT (D-Pad, botões)
- TOUCH (ponteiro absoluto, single-touch)
- Garantir **portabilidade total** entre plataformas
- Servir como base para ensino, game jams e experimentação
---
## 🧠 Filosofia de Design
- **Sem magia**: tudo é explícito
- **Sem heurística implícita**: o runtime não “adivinha intenções”
- **Determinístico**: mesmo input → mesmo resultado
- **Hardware-first**: APIs modelam periféricos, não frameworks modernos
- **Portável por definição**: se não funciona em todas as plataformas, não existe
---
## 📦 Estrutura do Projeto (Monorepo)
Este repositório usa um **Cargo Workspace** (monorepo):
```
runtime/
Cargo.toml # Workspace root
rust-toolchain.toml # Versão do Rust (fixa)
crates/
prometeu/ # CLI Dispatcher (ponto de entrada unificado)
prometeu-core/ # PROMETEU Core (hardware lógico)
prometeu-runtime-desktop/ # Host desktop (janela, input real, present)
cart-demo/ # Cartucho/demo hardcoded (temporário)
```
### crates/prometeu
O binário principal que centraliza o acesso ao ecossistema:
- `prometeu run <cart>`: Executa um cartucho
- `prometeu debug <cart>`: Inicia em modo debug
- `prometeu build/pack`: Comandos planejados para ferramentas de build e empacotamento
### crates/prometeu-core
Contém o **núcleo do PROMETEU**:
- loop lógico
- periféricos
- framebuffer
- nenhuma dependência de sistema operacional
### crates/prometeu-runtime-desktop
Implementação de host para desktop:
- cria janela
- traduz teclado/mouse/touch do SO para o core
- apresenta o framebuffer na tela
### crates/cart-demo
Código de demonstração hardcoded.
Será substituído futuramente por:
- cartuchos
- bytecode
- scripts
---
## 🖥️ Plataformas
Atualmente:
- Desktop (primeiro alvo)
Planejado:
- Mobile
- Steam Deck
- Hardware dedicado (experimental, longo prazo)
---
## 🛠️ Requisitos
- Rust (via `rustup`)
- Toolchain definido em `rust-toolchain.toml`
Instalação do Rust:
```bash
rustup-init
```
---
## ▶️ Como rodar
Na raiz do repositório:
```bash
cargo build
./target/debug/prometeu run <caminho_do_cartucho>
```
Ou diretamente via cargo:
```bash
cargo run -p prometeu -- run <caminho_do_cartucho>
```
No início, o host apenas valida:
- loop 60 Hz
- execução do core
- estrutura do runtime
---
## 🚧 Status do Projeto
⚠️ **Em estágio inicial (bootstrap)**
O foco atual é:
- validar arquitetura
- validar loop e periféricos
- manter simplicidade máxima
Nada aqui deve ser considerado API estável ainda.
---
## 📜 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.
---
## ✨ Nota Final
PROMETEU é tanto um projeto técnico quanto pedagógico.
A ideia não é esconder complexidade,
mas **expor a complexidade certa**, no nível certo,
para que ela possa ser entendida, estudada e explorada.