2.0 KiB
Readability of the matched C — the Gen3 series
Generated by
tools/readability_progress.py --snapshot; never typed (R75). Companion todocs/levers.md, which counts the compiler-forcing levers. This one counts the two things that are wrong with the source even where no lever remains: call declarations that are FALSE, and memory read through raw pointer casts where the original had a struct. From Phase 37 the row carries the type census's columns (tools/type_census.py): all four dereference forms, the typed cast-member intermediate, the definitions and the map.
| date | label | commit | lying declarations | of which () |
of which (void) |
in a pinned body | raw cast derefs (one form, raw text) | struct member reads | raw derefs, four forms | typed cast-member | struct defs (canonical / in .c) | layouts | duplicate classes / names | map types (% sites) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-10 | P36 S102 — after the 16,759 free declaration repairs | 51028a78d |
94001 | 86701 | 7300 | 461 | 414148 | 173286 | — | — | — | — | — | — |
| 2026-09-11 | P36 close | 7a7f78e25 |
98648 | 91357 | 7291 | 33 | 411850 | 177902 | — | — | — | — | — | — |
| 2026-09-11 | P37 T1 — the type census (four forms, definitions, the map) | 23fc5d215 |
98648 | 91357 | 7291 | 33 | 411850 | 177902 | 503016 | 36681 | 7261 (1179 / 5995) | 525 | 206 / 2789 | 18760 (99.2 %) |
How to read it. A lying declaration is a call site whose in-scope declaration names fewer parameters than the callee's own definition. It is not a style problem: on this processor an argument travels in a register, so a dropped argument removes an instruction, and Phase 36 found register pins inserted to fake exactly that instruction. Raw cast derefs is the struct debt — a struct cannot be recovered from the binary, only inferred from consistent base+offset+width evidence, so this figure falls as that work lands.