Deferred Interning (CGO'27) · E1: --intern-mode={deferred,locked} attribution baseline
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 14
- Forks
- 2
- Avg merge
- 12h 42m
- Merged PRs (30d)
- 61
Description
Paper: Deferred Interning: Deterministic, Lock-Free Parallel Compilation — CGO 2027 R2, deadline 2026-09-10 AoE.
Measurement plan:vx-review/parallel-frontend-paper/MEASUREMENT_PLAN.md· Vx tracking: hiraditya/Vx.1#300 · cross-repo index: hiraditya/vx-review#5
E1 of the CGO 2027 R2 measurement plan (vx-review/parallel-frontend-paper/MEASUREMENT_PLAN.md). The plan calls this make-or-break: the paper's headline depends on the outcome — speedup-attribution headline if deferred interning wins by a clear margin, determinism-first headline if it does not.
It is also the plan's only build item. Everything else is instrumentation or harness.
Why
The dry run (400 modules, 3,200 fns, 83,200 GIDs) shows 4.57× at 8 threads with byte-identical output. That number currently attributes to nothing, because there is no alternative design to attribute it against. Without a locked baseline the paper can claim "our parallel frontend is fast," which reviewers read as "compared to your own single-threaded self."
Scope
Add --intern-mode={deferred,locked}.
-
locked: one globalMutex<HashMap<GidKey, u32>>interned at instantiation time -
lockedreplaces, rather than supplements: no thread-local arena, noLOCAL_DEFERRED_BIT(src/gid.rs:52), no reconciliation barrier, no SIMD patch pass -
deferredis today's path (src/pipeline.rs:284), unchanged and the default - both modes must produce identical output streams — that equivalence is what makes the comparison meaningful
Measurement
- same corpus, threads ∈ {1,2,4,8,16,32,64}, ≥10 reps, median + IQR
- wall-clock per phase;
speedup(deferred) / speedup(locked) - lock-contention profile for
locked(perf lock, mutex wait time) — the paper needs to show where it dies, not just that it does
Blocks: the paper's framing decision. Run this before writing the abstract.
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 vx-review/parallel-frontend-paper/MEASUREMENT_PLAN.md, then inspect src/pipeline.rs:284 and src/gid.rs:52 to understand the existing deferred path. Implement and compare both modes across the specified thread counts and repetitions, including perf lock profiling for locked mode. Done means deferred remains the default and both modes produce identical output streams without deferred machinery in locked mode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100