Evidence
“Pay only for what you use” is a claim, so it gets measured: against a plain-Rust control, with matched toolchain and flags, alternating paired runs, and the raw samples kept.
Read these as budgets, not guarantees. All numbers come from one machine (AMD Ryzen 5 PRO 4650U, Linux, Rust 1.96.1, release profile) with small sample counts and uncontrolled OS page caches. They exist to catch regressions and expose costs, not to rank frameworks.
Phase 1 · Pico against plain Rust
| Metric | Plain Rust | Pico | Delta |
|---|---|---|---|
| Dependency packages (excl. app) | 0 | 1 (facade) | +1 |
| Facade's own dependencies | — | 0 | — |
| Clean build, median | 232.40 ms | 269.18 ms | +36.78 ms |
| Unchanged rebuild, median | 133.48 ms | 135.15 ms | +1.67 ms |
| Comment-edit rebuild, median | 217.30 ms | 228.16 ms | +10.86 ms |
| Unstripped binary | 4,335,592 B | 4,335,592 B | 0 |
| Process wall time, median | 1.203 ms | 1.256 ms | +0.054 ms |
Process samples overlap almost entirely (plain 0.899–2.292 ms, Pico 0.898–2.257 ms). A separate allocation probe with positive controls measured zero allocations added by the facade: 0 for the empty entrypoint, identical counts for stdout and a user Box. The clean-build delta, about 16%, is the initial budget to defend.
Phase 2 · Capability resolution
An in-process microbenchmark compares direct typed access with unique resolution and explicit selection at increasing candidate counts. The tested behaviour — missing, ambiguous, selected, cyclic, and 2,048-module acyclic chains validated without stack growth — is listed on Modules.
Phase 3 · Contributions
| Metric | Result |
|---|---|
| Target assembly, two declarations | 86 ns/op median (samples 84–96 ns) |
| Runtime tree storage | 96 B for two entries, including backing capacity |
| Clean build | 1.116 s median |
| Unchanged rebuild | 61.84 ms median |
| Executable size | 4,367,280 B |
| Process wall time | 1.736 ms median |
| Internal dependencies | 2 (Core, Kernel); no facade |
Phase 4 · Processes
Projection and freeze are measured and their behaviour is covered by integration tests; see Processes. The runtime plan and the inspection output come from the same frozen resolution.
Reproduce
# from the coordinated checkout (see Getting started)
python3 rustclamp/tools/pico.py --check
python3 rustclamp/tools/pico.py --measure rustclamp/docs/evidence/reports/phase1-pico.json
python3 rustclamp/tools/check.py
Reports are versioned JSON with compiler, target, machine, source fingerprint, commands, cache conditions and raw timings. Full write-ups: rustclamp/docs/evidence.