)]}'
{
  "commit": "3ae5a173c54ab64339ad4a6c57557896b8bad6f9",
  "tree": "6c0b925fbbb52627e688c6642d7958e7433119f5",
  "parents": [
    "5f2c678916ce2890e51333e0b684eb443e8848ed"
  ],
  "author": {
    "name": "Xuehai Pan",
    "email": "XuehaiPan@pku.edu.cn",
    "time": "Tue Feb 10 13:14:07 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Feb 09 21:14:07 2026 -0800"
  },
  "message": "Add fallback implementation of `PyCriticalSection_BeginMutex` for Python 3.13t (#5981)\n\n* Add failback implementation of `PyCriticalSection_BeginMutex` for Python 3.13t\n\n* Add comment for Python version\n\n* Use `_PyCriticalSection_BeginSlow`\n\n* Add forward declaration\n\n* Fix forward declaration\n\n* Remove always true condition `defined(PY_VERSION_HEX)`\n\n* Detect musllinux\n\n* Add manylinux test\n\n* Use direct mutex locking for Python 3.13t\n\n`_PyCriticalSection_BeginSlow` is a private CPython function not exported\non Linux. For Python \u003c 3.14.0rc1, use direct `mutex.lock()`/`mutex.unlock()`\ninstead of critical section APIs.\n\n* Empty commit to trigger CI\n\n* Empty commit to trigger CI\n\n* Empty commit to trigger CI\n\n* Run apt update before apt install\n\n* Remove unnecessary prefix\n\n* Add manylinux test with Python 3.13t\n\n* Simplify pycritical_section with std::unique_lock fallback for Python \u003c 3.14\n\n* Fix potential deadlock in make_iterator_impl for Python 3.13t\n\nRefactor pycritical_section into a unified class with internal version\nchecks instead of using a type alias fallback. Skip locking in\nmake_iterator_impl for Python \u003c 3.14.0rc1 to avoid deadlock during\ntype registration, as pycritical_section cannot release the mutex\nduring Python callbacks without PyCriticalSection_BeginMutex.\n\n* Add reference for xfail message",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a0965fa813ea972a40845bebb2e88bfcd8f4098e",
      "old_mode": 33188,
      "old_path": ".github/workflows/ci.yml",
      "new_id": "03cb0238cdadbf6a15415d38906b2f7b3c07a71d",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci.yml"
    },
    {
      "type": "modify",
      "old_id": "56d92e277915d9ec685b8de15a2f04a12944d120",
      "old_mode": 33188,
      "old_path": ".github/workflows/reusable-standard.yml",
      "new_id": "6e22d0f38be159f7e65ac805515d36f042cd3240",
      "new_mode": 33188,
      "new_path": ".github/workflows/reusable-standard.yml"
    },
    {
      "type": "modify",
      "old_id": "b9b0f08f2761a008a33d93fca8c8af21f718c6f3",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/internals.h",
      "new_id": "b681529325f82c1ac61d6d2bd0187248c6f639e2",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/internals.h"
    },
    {
      "type": "modify",
      "old_id": "f88fc202724418ed09f74062fe908d303022943e",
      "old_mode": 33188,
      "old_path": "include/pybind11/pybind11.h",
      "new_id": "0f31262c47c1391c8f6815440a3fb33e31fc41b1",
      "new_mode": 33188,
      "new_path": "include/pybind11/pybind11.h"
    },
    {
      "type": "modify",
      "old_id": "8c06178307c7a87adbbda7aaceb57803f34f03d3",
      "old_mode": 33188,
      "old_path": "tests/env.py",
      "new_id": "790a0108fca4d7afb039d18fe14ed5e1dcfb3057",
      "new_mode": 33188,
      "new_path": "tests/env.py"
    },
    {
      "type": "modify",
      "old_id": "56d303a36e2abc85639544a247465fe7a7c370b4",
      "old_mode": 33188,
      "old_path": "tests/test_multiple_interpreters.py",
      "new_id": "65b27331912db66bee7a0f8adf677058cf09efbc",
      "new_mode": 33188,
      "new_path": "tests/test_multiple_interpreters.py"
    }
  ]
}
