)]}'
{
  "commit": "8428fd7c496dfdd44cdf1b2529441d0d3eaff74d",
  "tree": "f80aeb5851ce0a8ed8219e4684ec0ee3712047ad",
  "parents": [
    "1d35d26b48291a665a3977a26d4ed911cf02ad97"
  ],
  "author": {
    "name": "재욱",
    "email": "haensol976520@gmail.com",
    "time": "Sun Jun 21 02:24:32 2026"
  },
  "committer": {
    "name": "재욱",
    "email": "haensol976520@gmail.com",
    "time": "Sun Jun 21 02:27:39 2026"
  },
  "message": "Keep the digit-separator feature off the default hot path\n\nPR #369\u0027s \"performance-neutral\" claim did not hold: the default\n(no-separator) parse was ~70% larger in the hot frame (parse_number_string\ninlined into from_chars: 833 -\u003e 1414 x86/arm64 instructions), because\n\n  1. parse_number_string is force-inlined (always_inline), and the runtime\n     dispatch inlined BOTH the has_separator\u003d\u003dtrue and \u003d\u003dfalse instantiations\n     into the default caller -- dragging the entire separator-aware scanner\n     into the hot frame; and\n  2. the runtime separator branch survived in from_chars() even though a\n     default-constructed parse_options provably has no separator, because the\n     thin from_chars_caller forwarder was not inlined, so the compile-time\n     \u0027\\0\u0027 was lost across the call boundary and the branch (plus two calls)\n     could not be folded away.\n\nFixes:\n  * FASTFLOAT_NOINLINE + a cold parse_number_string_with_separator trampoline\n    so the separator instantiation stays strictly out of line; the default\n    caller only ever materializes the has_separator\u003d\u003dfalse code.\n  * Force-inline from_chars_caller::call (all three specializations) so the\n    separator branch constant-folds away on the common from_chars() path.\n\nNet: the default hot frame returns to 844 instructions (vs 833 on main; the\n+11 is the unrelated parse_number_string refactor and is unchanged by this\ncommit). The separator path is unaffected and all tests pass.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9626ad8adff9442e68479960303953cdad333d07",
      "old_mode": 33188,
      "old_path": "include/fast_float/float_common.h",
      "new_id": "c1fc86b89eb641ca190bcc7ea4aaf7245514ece7",
      "new_mode": 33188,
      "new_path": "include/fast_float/float_common.h"
    },
    {
      "type": "modify",
      "old_id": "b0529e19835841b4a5ae31c4237b03b33327408b",
      "old_mode": 33188,
      "old_path": "include/fast_float/parse_number.h",
      "new_id": "d05895fffaeeb3d7b37b88be8c41063fb154b38d",
      "new_mode": 33188,
      "new_path": "include/fast_float/parse_number.h"
    }
  ]
}
