vx-lang / vx-lang/Vx

Deferred Interning (CGO'27) · E1: --intern-mode={deferred,locked} attribution baseline

Open
#295 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

core-lang enhancement parallel-frontend
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 global Mutex<HashMap<GidKey, u32>> interned at instantiation time
  • locked replaces, rather than supplements: no thread-local arena, no LOCAL_DEFERRED_BIT (src/gid.rs:52), no reconciliation barrier, no SIMD patch pass
  • deferred is 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.