3.1 KiB
3.1 KiB
18.1. Backend Workshop 1 - IRBackend Input Contract
Status: Active (Draft)
Purpose
Fechar o IRBackend como contrato de entrada do backend executável, de forma suficientemente explícita para permitir lowering determinístico para IRVM.
Context
- A spec atual de
IRBackendcobre sobretudo a fronteira frontend e não fechaIRBackend -> IRVM. - O runtime exige contratos rígidos para chamadas host-backed (
SYSC/HOSTCALL) e VM-owned (INTRINSIC). - O backend precisa receber um IR que preserve semântica e também fatos de artefato necessários para bytecode.
Decisions to Produce
- Shape mínima obrigatória de
IRBackendpara backend executável:- identidade de módulo/arquivo/callable,
- assinatura (parâmetros/retorno),
- corpo executável em forma backend-lowerable,
- âncoras de source attribution.
- Modelo de representação para operações VM-owned vs host-backed no
IRBackend. - Contrato de metadados reservados obrigatório:
- host bindings canônicos
(module, name, version), - metadados de intrinsics/builtin VM-owned,
requiredCapabilitiesdeterminístico.
- host bindings canônicos
- Regras de ordenação/deduplicação obrigatórias ainda no
IRBackend. - Política de rejeição determinística para formas que não entram no backend executável.
Core Questions
- O
IRBackenddeve carregar código em forma estruturada (blocos/expressões) ou linearizada? - Quais informações de tipos precisam sobreviver para o backend sem “re-tipagem” implícita?
- Como representar chamadas host-backed no
IRBackend:- por identidade canônica,
- por índice lógico,
- ou por ambos?
- Como representar intrinsics VM-owned:
- identidade canônica apenas,
- id final já conhecido,
- ou modelo híbrido?
- Quais invariantes de estabilidade de ordenação são obrigatórias para conformance?
- Quais campos mínimos de span/source mapping são mandatórios para erros backend-atribuíveis?
Expected Spec Material
- Atualização de
docs/pbs/specs/13. Lowering IRBackend Specification.mdcom adendo backend-facing. - Decision record específico para “IRBackend executável v1”.
- Fixture set de conformance Gate U focado no contrato de entrada do backend.
Non-Goals
- Definir ainda o bytecode final.
- Definir políticas de otimização.
- Definir o formato final de debug/source map rico.
- Introduzir dependência de packer.
Inputs
prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRBackend.javaprometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRBackendFile.javaprometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRFunction.javaprometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/models/IRReservedMetadata.javadocs/pbs/specs/13. Lowering IRBackend Specification.mddocs/pbs/specs/6.1. Intrinsics and Builtin Types Specification.mddocs/pbs/specs/6.2. Host ABI Binding and Loader Resolution Specification.md../runtime/docs/runtime/decisions/005-v1-vm-owned-input-intrinsics-and-language-agnostic-surface.md