63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
# PR-05.0.4 - Callable Shape and Signature Interning
|
|
|
|
## Briefing
|
|
|
|
O FE ainda monta chaves semanticas por concat string (`name#arity`, `signatureSurface`, `typeShape`).
|
|
|
|
Esta PR cria internacao para superfícies de assinatura/shape e remove concatenação textual como identidade primaria.
|
|
|
|
## Motivation
|
|
|
|
### Dor que esta PR resolve
|
|
|
|
1. Chave textual e fragil para evolucao de formato.
|
|
2. Custo de alocacao/hash desnecessario em caminhos quentes.
|
|
3. Risco de colisao logica por normalizacao incompleta.
|
|
|
|
## Target
|
|
|
|
Internar shapes de callable e superfícies de assinatura em tabela dedicada, com ID estavel.
|
|
|
|
## Scope
|
|
|
|
1. Estruturas de assinatura do linking e lowering.
|
|
2. `CallableSignatureRef` com suporte a referencia internada de shape.
|
|
3. Remocao gradual de `callableArityKey` e derivados string.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao altera regra de overload.
|
|
2. Nao altera formato externo de diagnostico.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Introduzir tabela de shapes (ex.: `CallableShapeTable` / `TypeSurfaceTable`).
|
|
2. Representar identidade de callable por tupla tipada (`NameId`, aridade, `ShapeId`).
|
|
3. Atualizar:
|
|
- linking (`FunctionSymbolKey`),
|
|
- FE lowering executavel (`callableIdsByNameAndArity`),
|
|
- referencias em `CallableSignatureRef`.
|
|
4. Manter conversao para string apenas para logs/debug.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. Fluxo principal de resolução de callable nao depende de concat string.
|
|
2. Determinismo de shape/signature comprovado por ID internado.
|
|
3. Nenhuma regressao de resolução de overload/documentada.
|
|
|
|
## Tests
|
|
|
|
1. Teste de internacao idempotente para shape identico.
|
|
2. Testes de distinção para shapes diferentes com mesmo nome/arity.
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/pbs/specs/13. Lowering IRBackend Specification.md`
|
|
2. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md`
|
|
|
|
## Open Questions
|
|
|
|
Sem bloqueios arquiteturais.
|