85 lines
2.6 KiB
Markdown
85 lines
2.6 KiB
Markdown
# PR-09.6 - ISA-Scoped Intrinsic Registry as Single Source of Truth
|
|
|
|
## Briefing
|
|
|
|
Hoje o mapeamento `canonicalName@version -> finalId` ainda e mantido em dois lugares (compiler e runtime), com teste de paridade.
|
|
Isso reduz risco, mas ainda nao elimina dual-authoring.
|
|
|
|
## Motivation
|
|
|
|
### Dor atual que esta PR resolve
|
|
|
|
1. Fonte duplicada para IDs finais de intrinsic.
|
|
2. Risco operacional de drift entre compiler e runtime.
|
|
3. Evolucao de intrinsics depende de sincronizacao manual.
|
|
|
|
## Target
|
|
|
|
Definir um artefato unico, versionado e vinculado ao profile ISA para o registry de intrinsics:
|
|
|
|
1. artefato canonico de registry (`intrinsic-registry-v1`),
|
|
2. ownership normativo no boundary ISA/profile,
|
|
3. consumo por compiler e runtime a partir da mesma fonte.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-08.5` (paridade compiler-runtime existente)
|
|
2. `PR-09.7` (normalizacao de consumo no compiler)
|
|
|
|
## Scope
|
|
|
|
1. Definir formato normativo do artefato (CSV/TOML/JSON) no boundary ISA.
|
|
2. Definir local canonico e versionamento do artefato.
|
|
3. Definir contrato de evolucao:
|
|
- adicao de intrinsic,
|
|
- deprecacao,
|
|
- compatibilidade de IDs.
|
|
4. Definir gate de paridade contra consumidores.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao alterar semantica de opcode `INTRINSIC`.
|
|
2. Nao redesenhar toda a arquitetura de builtins do runtime nesta PR.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Criar documento de formato canonico do registry:
|
|
- chave canonica,
|
|
- versao canonica,
|
|
- final id,
|
|
- constraints de unicidade.
|
|
2. Declarar ownership do artefato no profile ISA.
|
|
3. Definir pipeline de validacao:
|
|
- parser estrito,
|
|
- check de unicidade de identity e final id,
|
|
- check de ordenacao deterministica.
|
|
4. Definir workflow de manutencao para adicao de intrinsic.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. Existe uma unica fonte versionada para IDs finais de intrinsic.
|
|
2. Runtime e compiler referenciam formalmente essa fonte.
|
|
3. Processo de evolucao de intrinsics fica deterministico e auditavel.
|
|
|
|
## Tests
|
|
|
|
1. Testes de parser/validacao do artefato canonico.
|
|
2. Testes de paridade de consumidores contra o artefato.
|
|
3. Gate de CI que falha em divergia do mapping.
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md`
|
|
2. `docs/general/specs/15. Bytecode and PBX Mapping Specification.md`
|
|
3. `docs/pbs/specs/6.1. Intrinsics and Builtin Types Specification.md`
|
|
4. `docs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md`
|
|
5. Runtime specs correspondentes (ajuste posterior no repo runtime).
|
|
|
|
## Open Questions
|
|
|
|
1. Local canonico final do artefato: `runtime` (recomendado) ou `shared-metadata` dedicado. runtime
|