Skip to content

v1.105.0

Choose a tag to compare

@github-actions github-actions released this 11 Jun 15:07
a0c4d4c

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.