)]}'
{
  "commit": "f1ea4556f963ec9e0ba0b56ebe308cfd935b8bad",
  "tree": "0ab7158180d9fc41c5d7df8504ca0e523aef7099",
  "parents": [
    "8428fd7c496dfdd44cdf1b2529441d0d3eaff74d"
  ],
  "author": {
    "name": "Daniel Lemire",
    "email": "daniel@lemire.me",
    "time": "Mon Jul 13 15:09:17 2026"
  },
  "committer": {
    "name": "Daniel Lemire",
    "email": "daniel@lemire.me",
    "time": "Mon Jul 13 15:10:05 2026"
  },
  "message": "Split default path into verbatim separator-free scanner\n\nPR #369 gated the digit-separator/prefix feature on a compile-time\nhas_separator flag and claimed the has_separator\u003d\u003dfalse instantiation\n\"compiles to exactly the same code as if the feature did not exist\".\nInstruction-count measurement (benchmark i/f, deterministic +/- 0.0%)\ndisproved this: routing the default path through the shared, restructured\nbody cost GCC 14 ~1.5-2.3 i/f on short doubles, a reproducible regression\non mesh/double (+0.77 i/f ASCII, +1.35 UTF-16) even as canada improved.\n\nFix: the has_separator\u003d\u003dfalse instantiation now delegates to\nparse_number_string_nosep, a verbatim copy of the original separator-free\nscanner, so the default path\u0027s codegen is byte-for-byte the pre-feature\nparser. The shared parse_number_string body becomes separator-only (the\ndead !has_separator branches are removed). The inaccurate doc comment is\ncorrected.\n\nMeasured vs pre-feature baseline (34164f5), instructions per float:\n  canada/f64 ASCII  242.32 -\u003e 238.87   (PR: 240.87)\n  canada/f64 UTF16  251.05 -\u003e 241.81   (PR: 245.79)\n  mesh/f64   ASCII  107.69 -\u003e 107.57   (PR: 108.46, +0.77 regression)\n  mesh/f64   UTF16  110.10 -\u003e 109.74   (PR: 111.45, +1.35 regression)\nAll eight fastfloat rows now match or beat both the baseline and the PR;\nthe mesh/double regression is eliminated. All 14 ctest suites pass.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "94c8450517f3297cb955632f9a5213f9f1435657",
      "old_mode": 33188,
      "old_path": "include/fast_float/ascii_number.h",
      "new_id": "83f462fb154a4902fdf1bd9dcab3119585df8920",
      "new_mode": 33188,
      "new_path": "include/fast_float/ascii_number.h"
    }
  ]
}
