)]}'
{
  "commit": "085b66068af8ce82dab122a7b1c9cbc9e9ac99ea",
  "tree": "92b490f4d8e3d3ea039503602a9480adc11f6632",
  "parents": [
    "59d7cb28c1f5a014bb17ad4a8e80da2fb51a6159"
  ],
  "author": {
    "name": "Henry Schreiner",
    "email": "HenrySchreinerIII@gmail.com",
    "time": "Tue Jun 23 21:48:26 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 23 21:48:26 2026 -0400"
  },
  "message": "fix: data race on last_storage_ptr_ cache in gil_safe_call_once_and_store (#6087)\n\nUnder free-threaded CPython (Py_GIL_DISABLED) the GIL provides no mutual\nexclusion, so the plain pointer last_storage_ptr_ was read and written\nconcurrently without synchronization, a C++ data race. Make it a\nstd::atomic\u003cT *\u003e.\n\nAlso reorder get_stored() to check is_last_storage_valid() before loading\nthe cached pointer. The writer publishes the pointer before setting the\nvalidity flag, so the flag must be observed first for correct\nacquire/release ordering.\n\nAssisted-by: ClaudeCode:claude-fable-5",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "770ed49998b14bbb945aa7677ada2d3531776184",
      "old_mode": 33188,
      "old_path": "include/pybind11/gil_safe_call_once.h",
      "new_id": "af26272d4820e3eb529dff5c4850ccb1635eb237",
      "new_mode": 33188,
      "new_path": "include/pybind11/gil_safe_call_once.h"
    }
  ]
}
