prometeu-studio/docs/pbs/pull-requests/PR-05.0.4-callable-shape-and-signature-interning.md
2026-03-24 13:42:29 +00:00

1.9 KiB

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.