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-failChecker is C11 (cperf-lint). Former Python prototype removed.
Pins
Cloned for the 2026-10-22 redesign (g3f).
| Tree | Commit | Size | Lint g3c → g3f (default) |
|---|---|---|---|
| quickjs | 7d1c13c shallow | 7.8M | 0 → 2 cp-strlen-in-cond |
| lua | 8cb93ba shallow | 2.7M | 0 → 0 |
| gcc (sparse) | 152e0cc | 176M | 5 → 7 (cp-strlen-in-cond:2 cp-alloc-hot:5) |
| sqlite | 0498915 sparse | 14M | 0 → 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
| Tree | Status |
|---|---|
| quickjs | done (2× cp-strlen-in-cond TP) |
| gcc sparse | done (cp-strlen-in-cond TP + cp-alloc-hot mix) |
| sqlite | done (clean on default) |
| V8 | deferred (C++ / clang AST) |
Secondary
| Tree | Status |
|---|---|
| lua | done (clean) |
| redis / libuv / musl | later |
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.