5.1 KiB
5.1 KiB
18.0. Backend VM Pipeline - Orchestration Agenda
Status: Ready for Closure (v1 Draft Text)
Purpose
Definir a ordem de fechamento arquitetural para o backend executável:
- contrato de entrada
IRBackendvindo do frontend, - lowering
IRBackend -> IRVM, - marshaling
IRVM -> bytecode/PBXexecutável no runtime.
Context
- O pipeline já prevê
LowerToIRVMPipelineStageeEmitBytecodePipelineStage, mas ambos estão vazios. - O runtime já impõe contratos concretos de loader/verifier/VM que precisam ser respeitados pelo backend.
- Nesta rodada,
packerestá explicitamente fora de escopo.
Decisions to Produce
- Ordem oficial de workshops e critérios de saída por etapa.
- Fronteiras normativas entre:
- frontend (
IRBackend), - backend (
IRVM+ emissão), - runtime (loader/verifier/execução).
- frontend (
- Critérios de “backend integration-ready” para um artefato bytecode mínimo rodar no runtime.
- Estratégia de fechamento em docs (
agendas -> decisions -> specs -> PR).
Core Questions
- Quais decisões precisam ser fechadas antes de qualquer implementação de
LowerToIRVM? - Quais invariantes são obrigatórias na fronteira
IRBackendpara evitar ambiguidade no backend? - Quais invariantes são obrigatórias na fronteira
IRVMpara emissão determinística? - Quais verificações devem ocorrer no compilador antes de delegar ao loader/verifier do runtime?
- Como organizar testes de integração sem introduzir dependência de packer?
Resolution (v1)
Nao ha open questions bloqueantes remanescentes para fechamento da Agenda 18.
As agendas 18.1, 18.2 e 18.3 definem os contratos de entrada, lowering e marshaling.
Esta agenda fecha a orquestracao end-to-end com pipeline canônico incluindo etapa de otimizacao de IRVM.
Normative Text (Draft for Closure)
1) Pipeline canônico do backend executável
O pipeline normativo v1 do backend executavel MUST seguir esta ordem:
FrontendPhaseproduzIRBackend;LowerToIRVMproduzIRVM;OptimizeIRVMtransformaIRVM -> IRVMotimizado;EmitBytecodetransformaIRVMotimizado emBytecodeModulepre-load;- runtime loader aplica patching/resolucao (
HOSTCALL -> SYSCALL) e verifier valida imagem final.
2) Posicionamento de otimização
- A etapa
OptimizeIRVMMUST ocorrer entreLowerToIRVMeEmitBytecode. - Otimizacao semantica/estrutural MUST ocorrer no backend (compile-time), nao no runtime.
- Runtime permanece focado em load, validacao e execucao deterministica.
3) Contratos de entrada e saida por etapa
LowerToIRVMrecebeIRBackendconforme Agenda18.1e MUST produzirIRVMconforme Agenda18.2.OptimizeIRVMrecebeIRVMvalido para ovm_profilealvo e MUST produzirIRVMequivalente semanticamente.EmitBytecoderecebeIRVM(pos-otimizacao) sem opcodes internos nao-eliminados e MUST emitir artefato conforme Agenda18.3.
4) Invariantes de seguranca da etapa OptimizeIRVM
OptimizeIRVM MUST:
- preservar semantica observavel do programa;
- preservar contratos de aridade/slots/retorno;
- preservar determinismo para mesmo grafo de entrada;
- nao introduzir opcodes fora do
vm_profileexecutavel; - nao mover chamadas host/intrinsic para fronteira semantica incorreta.
5) Criterio de aprovacao de pipeline
Um backend so pode declarar fluxo "integration-ready" quando:
IRBackend -> IRVM -> IRVM otimizado -> BytecodeModuleestiver implementado;- fixtures Gate I cobrirem cenarios positivos e negativos definidos em
18.3; - bytecode emitido inicializar e executar no runtime alvo sem packer.
6) Deferrals explicitos
Sem deferrals de perguntas abertas desta agenda.
Permanecem fora de escopo:
- formato final de packer/cartucho;
- politicas avancadas de otimizacao nao necessarias para conformidade v1;
- redesign de loader/verifier/runtime.
Expected Spec Material
- Nova spec de contrato
IRBackend -> IRVM(backend-facing). - Nova spec de contrato de
IRVM(shape, invariantes, diagnóstico). - Atualização de
docs/general/specs/15. Bytecode and PBX Mapping Specification.md. - 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/LowerToIRVMPipelineStage.javaprometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/OptimizeIRVMPipelineStage.javaprometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStage.javadocs/pbs/specs/13. Lowering IRBackend Specification.mddocs/general/specs/15. Bytecode and PBX Mapping Specification.mddocs/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