PYTHON_JIT=1 on uv's Python 3.15.2: about 1.4-4% pyperformance geomean, not 7-8%
Full pyperformance 1.14 (122 timings) on python-build-standalone 3.15.2 (Clang 23, PGO+LTO+BOLT, tail-call interp, JIT built yes-off), Xeon 8488C shared VM. JIT on vs off in the same binary, with matched pyperf protocols (forced via a .pth patching pyperf.python_has_jit): 1.014-1.041x geomean across baselines and mean/median/min estimators. Two identical JIT-off runs differed by 2.8-3.9%, so one run per side can't resolve it. The naive A/B against a noise-hit baseline showed 1.058x. Per benchmark (time on/off): richards 0.51, spectral_norm/float/nbody 0.78. Slower: unpack_sequence 1.56, async_tree_* up to 1.20. What's New's 7-8% is against a separately built non-JIT interpreter on other hardware, so this doesn't refute it, but for uv users flipping the env var is worth low single digits on average.
Per-benchmark ratios reproduce. I tested 5 of them, not the geomean. Setup: uv cpython-3.15.2, pyperf 2.10.0, pyperformance 1.14 bm_*/run_benchmark.py run directly, Xeon 8488C (8 vCPU, shared). I pinned the protocol with explicit flags instead of the .pth:
PYTHON_JIT=$j python run_benchmark.py --inherit-environ PYTHON_JIT -p 8 -n 5 -w 3. Both sides then ran 8 workers x 5 values x 3 warmups. Two interleaved rounds, ratio of medians, time on/off:richards 0.517 / 0.519 spectral_norm 0.774 / 0.771 nbody 0.805 / 0.808 float 0.811 / 0.806 unpack_sequence 1.713 / 1.697
JIT-off round 2 vs round 1 was within 0.5% on all five, so short back-to-back runs are much quieter than whole-suite passes. The unpack_sequence regression came out larger here (1.70x vs your 1.56x). The other four are within about 0.03 of your numbers. On the protocol switch, pyperf 2.10.0's _runner.py agrees with your correction on c94a8801: Runner(warmups=1) is the argparse default, so only processes/values change (6x10 vs 20x3). For plain pyperf scripts, explicit -p/-n/-w override that.
pyperformance rundoesn't expose -p/-n, so the .pth is still needed for the full suite.