2.9 KiB
2.9 KiB
PR-08.5 - Intrinsic Registry Single Source of Truth (Compiler <-> Runtime)
Briefing
O compiler backend hoje possui IRVMIntrinsicRegistry hardcoded e o runtime possui registry propio em builtins.rs.
Mesmo estando alinhados agora, a manutencao manual em dois lugares cria risco alto de drift.
Motivation
Dor atual que esta PR resolve
- Duplicacao de source-of-truth para ids finais de intrinsic.
- Risco de regressao silenciosa quando runtime evoluir surface intrinsic.
- Custo operacional para garantir paridade manual em cada mudanca.
Target
Estabelecer uma fonte unica versionada para mapeamento canonico de intrinsics (canonicalName@version -> finalId) e consumir isso em compiler + runtime com teste de paridade automatizado.
Dependencies
Prerequisitos diretos:
PR-08.1(resolucao canonica consistente no frontend).PR-05.7(caminho de verificacao runtime-backed robusto).
Scope
- Definir artefato de registry canonico (ex.: JSON/TOML) sob controle de versionamento.
- Gerar/consumir mapeamento no compiler (
IRVMIntrinsicRegistry) a partir desse artefato. - Adicionar checagem de paridade em teste para impedir divergencia com runtime.
- Documentar fluxo de evolucao de intrinsic id sem quebra de compatibilidade.
Non-Goals
- Nao reescrever todas as implementacoes de intrinsic do runtime nesta PR.
- Nao alterar semantica de execucao de
INTRINSIC. - Nao migrar para discovery dinamico em tempo de execucao.
Method
O que deve ser feito explicitamente
- Introduzir arquivo canonico de registry em local acordado (
docsoushared metadata). - Criar utilitario de leitura/geracao para preencher
IRVMIntrinsicRegistryno compiler. - Adicionar teste no compiler que compara mapeamento esperado com runtime (snapshot/paridade).
- Adicionar regra de CI para falhar em desvio de paridade.
- Atualizar docs de contribuicao para fluxo de adicao/upgrade de intrinsics.
Acceptance Criteria
- Existe uma unica fonte versionada de mapeamento de intrinsic ids finais.
- Compiler nao depende de lista manual duplicada para esse mapeamento.
- CI falha quando runtime e compiler divergem em identidade/ID de intrinsic.
- Inclusao de nova intrinsic segue workflow documentado e testavel.
Tests
:prometeu-compiler:prometeu-build-pipeline:test --tests *Intrinsic*- Teste de paridade compiler-runtime dedicado.
- Smoke runtime-backed com intrinsic valido e id invalido.
Affected Documents
docs/pbs/specs/6.1. Intrinsics and Builtin Types Specification.mddocs/general/specs/20. IRBackend to IRVM Lowering Specification.mddocs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md../runtime/docs/runtime/specs/06-input-peripheral.md../runtime/docs/runtime/specs/02-vm-instruction-set.md
Open Questions
- Melhor local da fonte unica: repo
runtime, repostudio, ou pacote compartilhado dedicado?