prometeu-studio/docs/pbs/pull-requests/PR-034-backend-emitter-hostcall-sysc-contract.md
2026-03-24 13:42:24 +00:00

40 lines
1.4 KiB
Markdown

# PR-034 - Backend Emitter HOSTCALL and SYSC Contract
## Briefing
Fechar o contrato de emissao host-backed e intrinsic no emitter: deduplicacao canonica de `SYSC`, ordenacao por primeira ocorrencia, `HOSTCALL` em pre-load e rejeicao de `SYSCALL` bruto.
## Target
- Implementar materializacao de `syscalls` no artefato.
- Implementar map `host binding -> sysc_index`.
- Preservar caminho de `INTRINSIC` distinto de host.
## Method
- Deduplicar `SYSC` por `(module,name,version)` e manter ordem da primeira ocorrencia.
- Emitir chamadas host-backed como `HOSTCALL <sysc_index>`.
- Rejeitar candidatas que contenham `SYSCALL` em imagem pre-load (`MARSHAL_LINKAGE_*`).
- Validar mismatch detectavel de ABI (`arg_slots`, `ret_slots`) com metadado de compilacao.
## Acceptance Criteria
1. `SYSC` deduplicado e ordenado por primeira ocorrencia.
2. Nao existe `SYSCALL` bruto no artefato pre-load emitido.
3. Caminho intrinsic nao polui `SYSC`.
4. Falhas de linkage sao deterministicas.
## Tests
1. Teste positivo com chamadas host repetidas gerando um unico `SYSC`.
2. Teste negativo de `SYSCALL` bruto no pre-load.
3. Teste negativo de mismatch ABI em host binding.
4. Teste positivo de intrinsic sem entradas em `SYSC`.
## Affected Documents
- `docs/general/specs/15. Bytecode and PBX Mapping Specification.md`
- `docs/general/specs/19. Verification and Safety Checks Specification.md`
- `docs/pbs/specs/6.2. Host ABI Binding and Loader Resolution Specification.md`