Brittleness #9: global topology registry (per-compilation isolation)
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 14
- Forks
- 2
- Avg merge
- 12h 42m
- Merged PRs (30d)
- 61
Description
Topologies are registered in process-global state at parse time, so a topology declared while compiling one program leaked into the next when several are compiled in one process (test binary, build server, LSP).
Partially landed (5e43900): arch::reset_topology_registry() restores the built-in baseline; the driver calls it at the start of each compilation. Closes the sequential-reuse leak. Unit test reset_clears_custom_topologies_but_keeps_builtins; additive registry tests share a mutex.
Still open: a fully thread-isolated per-compilation registry (concurrent in-process compiles still share one global) — thread a registry through parser → typechecker → codegen instead of the LazyLock global.
Tracked in docs/discussions/implementation_plans/brittleness_hardening.md (item 9).
Status: partially landed; remainder open.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with docs/discussions/implementation_plans/brittleness_hardening.md item 9, then trace the driver and the parser → typechecker → codegen path around arch::reset_topology_registry() and the LazyLock registry. The remaining work is complete when concurrent in-process compilations use isolated topology registries without sharing custom declarations, while built-ins remain available.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100