Skip to content

Releases: mattmacy/llvm-project

clangd-patched v0.2

Choose a tag to compare

@mattmacy mattmacy released this 02 May 00:15

clangd-patched v0.2 — extends v0.1 with PCH AST pruning aggressive tier (C3) + in-memory preamble cache (C1.a).

New flags

  • --preamble-ast-pruning=off|conservative|aggressive — PCH AST pruning behind opt-in flag. Conservative ships in v0.1; aggressive ships in v0.2 (per plan v4: PreprocessingRecord-based macro usage tracking, FieldDecl::getInClassInitializer walk, full TemplateArgument referent table covering all 9 kinds + default args, Sema-superset associated-namespace seed for ADL customization points).
  • --experimental-preamble-cache — bool flag. In-memory preamble cache (C1.a, Option A from preamble-persistence plan v3). On-disk persistence (C2) deferred — release/19.x lacks IncludeStructure / PragmaIncludes / MainFileMacros / pragma marks / Diag serialization needed for round-trip materializeFromCache.

Carry-over from v0.1

  • --background-index-memory-limit=<bytes> — LRU eviction of merged background index above the cap; lazy reload from on-disk shards.
  • --max-concurrent-preamble-builds=<N> — independent throttle on concurrent preamble builds (each ~3-5 GB resident on UE TUs).

Build

  • vendor commit: 0cfce9d (off llvm 19.1.7).
  • ClangdTests: 1274/1274 passed (15.8s, 183 suites).
  • binary md5: 02664e3cc840badf8f3d1f1c9842263d
  • binary size: ~122 MB

Patch series (linear, off llvm 19.1.7 a9b3bec)

0cfce9de5  clangd: PCH AST pruning Commit 3 - aggressive tier (plan v4)
770787c2e  clangd: preamble cache C1.a - in-memory storage (Option A)
54303038b  docs: README — strip private-consumer references
1a11728d8  docs: README LURE-fork section with knob tuning + memory-control levers
a9b3becb9  clangd: PCH AST pruning Commit 2.1 - v3 plan deltas (HIGH+MED)
cb593fab4  clangd: PCH AST pruning Commit 2 - conservative reachability (v2-aligned)
396690588  clangd: PCH AST pruning Commit 1 - flag + plumbing + off-by-default no-op
56bd9a91d  clangd: add --max-concurrent-preamble-builds via PreambleThrottler
717e83554  clangd: add --background-index-memory-limit with LRU eviction

clangd-patched v0.1 (LURE-local)

Choose a tag to compare

@mattmacy mattmacy released this 01 May 21:44

LLVM 19.1.7 + 5 LURE-local patches. Built from a9b3bec (post-C2.1).

Built binary

  • clangd — 107 MB, x86_64 Linux, md5 7ab1fbdd9508e700378b0689ddcd19c1. Built with cmake -G Ninja -S llvm -B build -DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra -DLLVM_TARGETS_TO_BUILD=X86 -DCMAKE_BUILD_TYPE=Release.

Patches in this release

# Vendor SHA Description
0001 717e835 --background-index-memory-limit=N[K
0002 56bd9a9 --max-concurrent-preamble-builds=N — bounds in-flight preamble parses via PreambleThrottler. N=3 caps peak ~16-22 GB on UE-scale; -j=10 unbounded peaked at ~40 GB.
0003 3966905 PCH AST pruning Commit 1 — --preamble-ast-pruning=<off
0004 cb593fa PCH AST pruning Commit 2 — v2-aligned conservative reachability pass (seed + numbered closure steps 1-8 + type-memo).
0005 a9b3bec PCH AST pruning Commit 2.1 — v3 plan deltas: FieldDecl::getInClassInitializer() walk, full TemplateArgument referent table (all 9 kinds + default args), NestedNameSpecifier::getPrefix() chain, complete RecursiveASTVisitor enumeration, ADL customization-point seed. 5 new mutation-pin tests.

Verification

  • 9/9 PreamblePruningTest pass (42 ms total)
  • 32/32 FileSymbols/FileIndex regression-clean
  • --help reports all 3 flags

Usage

  1. Download clangd asset.
  2. chmod +x clangd && sudo install -m755 clangd /usr/local/bin/clangd-patched
  3. clangd-patched --background-index --background-index-memory-limit=10G --max-concurrent-preamble-builds=3 --preamble-ast-pruning=conservative

Aggressive tier wired but stub-only; macro filter impl deferred pending plan v4 macro-usage source revision (PreprocessingRecord-based, in flight).

Source

  • clangd-bg-index-mem-limit-impl (0001+0002)
  • clangd-pch-ast-pruning-impl-c1 (0003)
  • clangd-pch-ast-pruning-impl-c2 (0004+0005)