3.1 KiB
3.1 KiB
PR-08.2 - IRBackend Module Identity via Dense Table (ModuleId + ModulePool)
Briefing
moduleKey hoje e string no contrato executavel e vira identificador estrutural em multiplos pontos.
Isso funciona, mas ainda nao aproveita plenamente a infraestrutura de dense tables ja existente (ModuleTable/ModuleId) para identidade canonica de modulo no handoff FE->BE.
Motivation
Dor atual que esta PR resolve
- Identidade de modulo dependente de serializacao textual (
project:path) no contrato. - Maior risco de drift/normalizacao inconsistente entre fronteiras.
- Custo de comparacao/armazenamento pior do que id tipado em larga escala.
Target
Evoluir o contrato IRBackend para carregar identidade de modulo tipada por dense table:
ModuleIdnas entidades executaveis,modulePoolcanonico no payload,moduleKeytextual mantido apenas como campo auxiliar/debug no periodo de transicao.
Dependencies
Prerequisitos diretos:
PR-05.0.2(infra deModuleIdeModuleTable).PR-05.0.3(migração previa de ids tipados no contrato executavel).
Scope
- Introduzir
modulePoolnoIRBackende remapeamento na agregacao multi-arquivo. - Trocar referencias estruturais de modulo para
ModuleIdem executable/callable surfaces. - Adaptar sorting/canonical ordering para usar
ModuleId+ leitura canonica da tabela. - Preservar backward compatibility local durante migracao (camada de adaptacao).
Non-Goals
- Nao redefinir formato PBX nesta PR.
- Nao alterar semantica de modulo no parser/linker.
- Nao remover imediatamente todos os campos textuais de debug.
Method
O que deve ser feito explicitamente
- Adicionar
modulePool: ReadOnlyList<ModuleReference>emIRBackend. - Adicionar
moduleIdemIRBackendExecutableFunctioneCallableSignatureRef(ou equivalente de assinatura). - Atualizar
IRBackendAggregatorpara reindexar modulos viaModuleTable(dense table). - Atualizar FE PBS para emitir
moduleIdusando tabela canonica de modulos. - Atualizar BE (
LowerToIRVMService) para ordenar por identidade de modulo canonica sem dependencia de concat textual. - Incluir testes de determinismo para remapeamento multi-modulo com ids estaveis.
Acceptance Criteria
IRBackendpossui pool canonico de modulos com ids densos.- Caminho estrutural nao depende de
moduleKeystring para identidade. - Merges de
IRBackendFilepreservam reindexacao deterministica de modulo. - Funcoes equivalentes em builds equivalentes recebem ids de modulo identicos.
Tests
:prometeu-compiler:prometeu-frontend-api:test:prometeu-compiler:frontends:prometeu-frontend-pbs:test:prometeu-compiler:prometeu-build-pipeline:test- Novos testes de agregacao multi-modulo com colisao textual potencial.
Affected Documents
docs/pbs/specs/13. Lowering IRBackend Specification.mddocs/general/specs/20. IRBackend to IRVM Lowering Specification.mddocs/general/specs/15. Bytecode and PBX Mapping Specification.mddocs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md
Open Questions
- Fase de transicao deve manter
moduleKeycomo shadow field por quantas ondas?