2.8 KiB
2.8 KiB
PR-08.3 - Qualified Entrypoint Identity (No Name-Only Resolution)
Briefing
A selecao de entrypoint no backend ainda filtra apenas por callableName.
Em projetos multi-modulo isso amplia risco de ambiguidade e cria acoplamento desnecessario a nomes globais.
Motivation
Dor atual que esta PR resolve
- Ambiguidade de entrypoint quando existem callables homonimos.
- Diagnostico tardio por nome sem contexto de modulo.
- Divergencia potencial entre contrato de frontend e selecao real no backend.
Target
Evoluir o contrato para entrypoint qualificado e deterministico:
entryPointCallableName+entryPointModuleId(ouentryPointCallableId),- resolucao backend por identidade qualificada,
- politicas de erro claras para mismatch/ausencia.
Dependencies
Prerequisitos diretos:
PR-08.2(ModuleId no contrato IRBackend).PR-05.3(politica deterministica de indexacao efunc_id=0).
Scope
- Expandir
FrontendSpece handoff FE para declarar entrypoint qualificado. - Atualizar
IRBackendpara carregar declaracao qualificada de entrypoint. - Atualizar
LowerToIRVMServicepara selecionar entrypoint por identidade qualificada. - Preservar fallback de compatibilidade durante migracao (com warning deterministico).
Non-Goals
- Nao alterar semantica de
func_id=0. - Nao mudar contrato de manifesto de cartridge nesta PR.
- Nao introduzir multiple entrypoints por linguagem.
Method
O que deve ser feito explicitamente
- Introduzir estrutura de entrada qualificada (ex.:
EntrypointRef(moduleId, callableName)). - Popular estrutura no frontend PBS a partir do modulo de
frame. - Modificar
orderFunctionspara usar referencia qualificada. - Em caso de fallback por nome, emitir diagnostico de deprecacao controlado.
- Adicionar testes para:
- homonimos em modulos distintos,
- entrypoint valido qualificado,
- entrypoint ausente com erro estavel.
Acceptance Criteria
- Selecao de entrypoint nao depende apenas de nome.
- Homonimos em modulos distintos nao geram ambiguidade quando entrypoint qualificado existe.
func_id=0continua pertencendo ao entrypoint declarado.- Rebuilds equivalentes mantem func ordering deterministico.
Tests
:prometeu-compiler:prometeu-frontend-api:test:prometeu-compiler:prometeu-build-pipeline:test --tests *LowerToIRVMServiceTest*- Testes de integracao com dois modulos contendo
frame.
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
- Melhor contrato final:
EntrypointRef(moduleId, callableName)ouCallableIdglobal direto?