You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Changed
The default value for ResultFloat, ResultVec, and ResultBool is now NaN instead of 0. An unrecorded sample — a run that aborts before measuring, or a result var the worker never sets — is now treated as missing and dropped by the nan-aware regression/aggregation reductions, instead of masquerading as a real 0/False measurement and dragging means toward zero. This matches the storage layer, which already initialises result arrays with NaN. Callers who want unrecorded samples to read as 0 can opt out with default=0.
For ResultBool, this means missing ≠ failure: an unrecorded repeat is dropped from the success proportion rather than counted as False. A worker that wants a crash/abort to count as a failure must explicitly record False on its failure path. The binomial standard error already divides by the per-cell count of valid (non-NaN) repeats (see 1.104.2), so missing repeats no longer understate the SE.
CACHE_VERSION is not bumped: the result-var default is not part of BenchCfg.hash_persistent(), so existing benchmark and over_time history caches are preserved. The new NaN default only applies to cache misses (newly computed cells); already-cached cells keep whatever sentinel they were stored with, so a benchmark with missing samples may transiently hold a mix of 0 (old) and NaN (new) until those cells are recomputed.