2.1 KiB
2.1 KiB
< Voltar | Sumário | Adiante >
Cartuchos
Versão: 1.0 (baseline estável) Status: Proposta
1. Objetivo
Definir um contrato mínimo e estável para cartuchos Prometeu, permitindo:
- Identificação do app
- Seleção de modo (Game/System)
- Resolução de entrypoint
- Carregamento previsível pelo runtime
2. Conceito
Um cartucho é a unidade distribuível do Prometeu. Ele pode existir como:
- Diretório (dev) — ideal para desenvolvimento e hot-reload
- Arquivo empacotado (.pmc) — ideal para distribuição
Ambos compartilham o mesmo layout lógico.
3. Layout Lógico
<cartridge>/
├── manifest.json
├── program.pbc
└── assets/
└── ...
Campos obrigatórios:
manifest.jsonprogram.pbc(bytecode Prometeu)
4. manifest.json (Contrato v1)
{
"magic": "PMTU",
"cartridge_version": 1,
"app_id": 1234,
"title": "Meu Jogo",
"app_version": "1.0.0",
"app_mode": "Game", // Game | System
"entrypoint": "main"
}
Campos
magic: string fixaPMTUcartridge_version: versão do formatoapp_id: identificador numérico únicotitle: nome do appapp_version: versão do appapp_mode:GameouSystementrypoint: símbolo ou índice reconhecido pela VM
5. Regras do Runtime
- Validar
magicecartridge_version - Ler
app_modepara decidir fluxo de execução - Resolver
entrypointnoprogram.pbc - Ignorar
assets/se não suportado ainda
6. Modos de Uso
Diretório (desenvolvimento)
prometeu --run ./mycart/
Arquivo empacotado
prometeu --run mygame.pmc
Ambos devem se comportar de forma idêntica no runtime.
7. Estabilidade do Contrato
A partir do v1:
manifest.jsoné a fonte de verdade- Campos só podem ser adicionados de forma backward-compatible
- Mudanças incompatíveis exigem
cartridge_versionnovo