67 lines
2.1 KiB
Markdown
67 lines
2.1 KiB
Markdown
# PR-19.5 - PBS Semantics for Global Dependency Graph and Cycle Validation
|
|
|
|
## Briefing
|
|
|
|
Depois da superficie semantica local de `global`, PBS precisa implementar o ordering deterministico e a deteccao de ciclos entre globals usando o kernel compartilhado `DependencyGraphAnaliser`.
|
|
|
|
Esta PR fecha a parte de semantica que transforma leituras em initializers no graph canonico de globals.
|
|
|
|
## Target
|
|
|
|
Implementar:
|
|
|
|
1. nos canonicos de globals por owner module,
|
|
2. edges derivadas de leitura de globals em initializers,
|
|
3. ordering deterministico independente de source-file order,
|
|
4. diagnostico de ciclo entre globals.
|
|
|
|
## Dependencies
|
|
|
|
Prerequisitos diretos:
|
|
|
|
1. `PR-19.2`
|
|
2. `PR-19.4`
|
|
|
|
## Scope
|
|
|
|
1. Construir o graph semantico de globals.
|
|
2. Resolver alias/import para owner canonico.
|
|
3. Reusar `DependencyGraphAnaliser` como kernel estrutural.
|
|
4. Emitir diagnostico de ciclo com caminho canonicamente util quando possivel.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao validar ainda `[Init]` / `[Frame]`.
|
|
2. Nao implementar init sintetico de modulo.
|
|
3. Nao implementar lowering.
|
|
|
|
## Method
|
|
|
|
1. Modelar cada global como no canonico `(module, global_name)` ou equivalente interno estavel.
|
|
2. Criar edge quando initializer depende do valor materializado de outro global.
|
|
3. Usar ordering deterministico para fixar ordem de materializacao.
|
|
4. Manter source-file order fora da semantica.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. Ordering de globals e estavel e independe de ordem textual de arquivos.
|
|
2. Imports e aliases nao quebram identidade canonica do storage owner.
|
|
3. Ciclos intra-modulo e inter-modulo sao detectados como compile-time error.
|
|
4. Diagnostics apontam para globals reais, nao para estrutura sintetica.
|
|
|
|
## Tests
|
|
|
|
1. Fixtures positivas para dependency chains intra e inter-modulo.
|
|
2. Fixtures que provem mesma ordem mesmo com source-file order trocada.
|
|
3. Fixtures negativas para ciclos simples e ciclos via import/alias.
|
|
|
|
## Affected Artifacts
|
|
|
|
1. semantica de globals PBS
|
|
2. `DependencyGraphAnaliser` consumers
|
|
3. testes de dependency ordering/cycle diagnostics
|
|
|
|
## Open Questions
|
|
|
|
1. Nenhuma. A integracao com module/project init fica para `PR-19.6`.
|