prometeu-studio/docs/pbs/agendas/18.0. Backend VM Pipeline - Orchestration Agenda.md

2.6 KiB

18.0. Backend VM Pipeline - Orchestration Agenda

Status: Active (Draft)

Purpose

Definir a ordem de fechamento arquitetural para o backend executável:

  1. contrato de entrada IRBackend vindo do frontend,
  2. lowering IRBackend -> IRVM,
  3. marshaling IRVM -> bytecode/PBX executável no runtime.

Context

  • O pipeline já prevê LowerToVMPipelineStage e EmitBytecodePipelineStage, mas ambos estão vazios.
  • O runtime já impõe contratos concretos de loader/verifier/VM que precisam ser respeitados pelo backend.
  • Nesta rodada, packer está explicitamente fora de escopo.

Decisions to Produce

  1. Ordem oficial de workshops e critérios de saída por etapa.
  2. Fronteiras normativas entre:
    • frontend (IRBackend),
    • backend (IRVM + emissão),
    • runtime (loader/verifier/execução).
  3. Critérios de “backend integration-ready” para um artefato bytecode mínimo rodar no runtime.
  4. Estratégia de fechamento em docs (agendas -> decisions -> specs -> PR).

Core Questions

  1. Quais decisões precisam ser fechadas antes de qualquer implementação de LowerToVM?
  2. Quais invariantes são obrigatórias na fronteira IRBackend para evitar ambiguidade no backend?
  3. Quais invariantes são obrigatórias na fronteira IRVM para emissão determinística?
  4. Quais verificações devem ocorrer no compilador antes de delegar ao loader/verifier do runtime?
  5. Como organizar testes de integração sem introduzir dependência de packer?

Expected Spec Material

  1. Nova spec de contrato IRBackend -> IRVM (backend-facing).
  2. Nova spec de contrato de IRVM (shape, invariantes, diagnóstico).
  3. Atualização de docs/general/specs/15. Bytecode and PBX Mapping Specification.md.
  4. Atualização de docs/general/specs/19. Verification and Safety Checks Specification.md.

Non-Goals

  • Definir formato final de packer/cartucho.
  • Redesenhar ISA do runtime.
  • Redesenhar loader/verifier do runtime.
  • Fechar otimizações de backend (peephole, SSA, etc.).

Inputs

  • prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/LowerToVMPipelineStage.java
  • prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStage.java
  • docs/pbs/specs/13. Lowering IRBackend Specification.md
  • docs/general/specs/15. Bytecode and PBX Mapping Specification.md
  • docs/pbs/specs/6.2. Host ABI Binding and Loader Resolution Specification.md
  • ../runtime/docs/runtime/virtual-machine/ISA_CORE.md
  • ../runtime/crates/console/prometeu-vm/src/virtual_machine/loader.rs
  • ../runtime/crates/console/prometeu-vm/src/verifier.rs