XPerf
LanguagesC

cperf corpus targets

Large trees are not vendored, and the corpus is not shipped with the repo: clone it into any local directory outside the repo and pass that path to the linter. Lint with:

cd packages/cperf/cperf-lint && make
./cperf-lint <corpus-dir>/<name> --format json --no-fail

Checker is C11 (cperf-lint). Former Python prototype removed.

Pins

Cloned for the 2026-10-22 redesign (g3f).

TreeCommitSizeLint g3c → g3f (default)
quickjs7d1c13c shallow7.8M0 → 2 cp-strlen-in-cond
lua8cb93ba shallow2.7M0 → 0
gcc (sparse)152e0cc176M5 → 7 (cp-strlen-in-cond:2 cp-alloc-hot:5)
sqlite0498915 sparse14M0 → 0

Path skips unchanged (r3 + G3). New: cp-strlen-in-cond strlen-in-cond; cp-strcat-hot strcat-in-loop (off).

Corpus-ready?

yes — post-redesign G3 2026-10-22 (Asia/Shanghai). Default residuals 9 (cp-strlen-in-cond×4 TP + cp-alloc-hot×5 with 1 TP / 4 OK-idiom). FP+DOC+SKIP 0%. Honest TP from cp-strlen-in-cond (strlen in loop condition).

cp-alloc-hot/cp-realloc-grow-one stay error (G4 JSONL). cp-printf-hot/cp-strcat-hot default off. cp-strlen-in-cond default hint.

Primary

TreeStatus
quickjsdone (2× cp-strlen-in-cond TP)
gcc sparsedone (cp-strlen-in-cond TP + cp-alloc-hot mix)
sqlitedone (clean on default)
V8deferred (C++ / clang AST)

Secondary

TreeStatus
luadone (clean)
redis / libuv / musllater

Inventory

<corpus-dir>/
  quickjs/
  lua/
  gcc/            # sparse
  sqlite/         # sparse src/

Do not commit corpus sources into packages/cperf.

2026-10-23 — new hint rules, not triaged

cp-sprintf-hot, cp-fopen-hot, cp-gettime-hot, and cp-wide-bool-flags are hint. Each has a JSONL microbench and has not been through G2/G3. cp-regex-hot is hint and has JSONL (about 9.7×). None of these slugs are part of the 2026-10-22 corpus-ready verdict above.