)]}'
{
  "commit": "b143f6cdb6f15020da434220d20eccbfcdde6b9e",
  "tree": "e1522e47c8a58a3b832ea9d5587e9e6c2c5e850b",
  "parents": [
    "ef7892d7f289e245773ff870acbabefd0b230184"
  ],
  "author": {
    "name": "Henry Schreiner",
    "email": "HenrySchreinerIII@gmail.com",
    "time": "Sat Oct 03 13:56:10 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Oct 03 13:56:10 2026 -0400"
  },
  "message": "[feat/precompile-macro-infra] feat(cmake): opt-in precompiled static library, starting with pytypes.h (#6132)\n\n* feat(cmake): opt-in precompiled pybind11 static library, starting with pytypes.h\n\nSplit the out-of-line pytypes.h definitions into pytypes-inl.h (fmtlib/\nCLI11 style): inline by default, compiled once into a per-project static\nlibrary when PYBIND11_PRECOMPILED is defined. Infrastructure:\n\n- pybind11_precompile() creates the lazy pybind11::precompiled STATIC\n  library from the installed or in-tree src/ sources; PRECOMPILE /\n  NO_PRECOMPILE keywords on pybind11_add_module and a global\n  PYBIND11_PRECOMPILE switch select it per target.\n- A link-time guard symbol encodes PYBIND11_INTERNALS_VERSION,\n  Py_GIL_DISABLED, PYBIND11_SIMPLE_GIL_MANAGEMENT, and\n  PYBIND11_DETAILED_ERROR_MESSAGES, so a configuration mismatch is one\n  readable undefined symbol.\n- src/ is installed to share/pybind11/src (wheel stays pure);\n  src/pybind11_combined.cpp is a single-TU build for non-CMake use.\n- Tests: PYBIND11_TEST_PRECOMPILE builds the whole suite against the\n  library, two new test_cmake_build cases, packaging file lists, tidy\n  preset, and a 3-platform CI job.\n\nAssisted-by: ClaudeCode:claude-fable-5\n\n* fix(tidy): keep the tidy preset header-only\n\nIn precompiled mode the -inl.h definitions are intentionally\nnon-inline, so misc-definitions-in-headers fires on every one. The\nheader-only tidy build already analyzes all -inl.h bodies via the\nbottom-of-header includes.\n\nAssisted-by: ClaudeCode:claude-fable-5\n\n* fix(cmake): compile the precompiled library with the interpreter ABI macros\n\npybind11::pybind11 only carries headers; Py_GIL_DISABLED lives on\nPython::Module via pybind11::module. Without it the library is\nABI-mismatched on free-threaded builds, and on Windows the pyconfig.h\nautolink pragma in its objects requests pythonXY.lib instead of\npythonXYt.lib.\n\nAssisted-by: ClaudeCode:claude-fable-5",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0aa06c1b2f38c2a901f60464e78ed5c801b03192",
      "old_mode": 33188,
      "old_path": ".github/workflows/ci.yml",
      "new_id": "4b300bd13c95cc65c2b4b0ab60aee5d02dac9c41",
      "new_mode": 33188,
      "new_path": ".github/workflows/ci.yml"
    },
    {
      "type": "modify",
      "old_id": "65f794a49db08cc5ccf399f82ce393b553b0e79e",
      "old_mode": 33188,
      "old_path": "CMakeLists.txt",
      "new_id": "b65529c9b0ed59c4dabfb8d3714757861ddc4ab9",
      "new_mode": 33188,
      "new_path": "CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "09138db364a83888b793dafd7bcc680458e6570f",
      "old_mode": 33188,
      "old_path": "docs/Doxyfile",
      "new_id": "d0c184ccc0610033c5345e276987266a5cb3457c",
      "new_mode": 33188,
      "new_path": "docs/Doxyfile"
    },
    {
      "type": "modify",
      "old_id": "1a0db1fe42aa3799db1a67ea10501029e2f89306",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/common.h",
      "new_id": "f65f69abc03411bf4a9ec2253779e3848c284530",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/common.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ce2c80321d4ffd53d5f7a9c17b388884885a36fc",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/internals-inl.h"
    },
    {
      "type": "modify",
      "old_id": "ffb6635e246688f0afd05a36f5155c012e74bfc7",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/internals.h",
      "new_id": "764fe174f2d07c9df8bc571b6a5a74000df8951a",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/internals.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f2eea1070fc12b50232f3bbaec2b2cd799c1eca5",
      "new_mode": 33188,
      "new_path": "include/pybind11/pytypes-inl.h"
    },
    {
      "type": "modify",
      "old_id": "13a6ebaa4d83a68d26fc850fc2e233a8fd766753",
      "old_mode": 33188,
      "old_path": "include/pybind11/pytypes.h",
      "new_id": "71cc31b044d4f45995241665b9997f63e6c2f641",
      "new_mode": 33188,
      "new_path": "include/pybind11/pytypes.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "86a35495072a5ca8ca00da49c640e6740edbcc02",
      "new_mode": 33188,
      "new_path": "src/internals.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "751b0b1dbe1c713db1b854ddefe25b95761df3db",
      "new_mode": 33188,
      "new_path": "src/pybind11_combined.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c0d655da96052457d6441a9cfc9133dbc16d1cde",
      "new_mode": 33188,
      "new_path": "src/pytypes.cpp"
    },
    {
      "type": "modify",
      "old_id": "d6415b98bc65e4d997b8644606412e65b910e1a4",
      "old_mode": 33188,
      "old_path": "tests/CMakeLists.txt",
      "new_id": "c23e7668e17b8d7f5d12c983644ef3a1c40cd410",
      "new_mode": 33188,
      "new_path": "tests/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "164611db34c498ee4e38bbf039e2db45ef883479",
      "old_mode": 33188,
      "old_path": "tests/extra_python_package/test_files.py",
      "new_id": "b02892a738fa9e6c662f60702392c7640bc5cf42",
      "new_mode": 33188,
      "new_path": "tests/extra_python_package/test_files.py"
    },
    {
      "type": "modify",
      "old_id": "a4d25448e5c28d8762a0fb57d6605b1fb451399c",
      "old_mode": 33188,
      "old_path": "tests/test_cmake_build/CMakeLists.txt",
      "new_id": "33a78a6b1d9054ef0174926e54395a692ca86faf",
      "new_mode": 33188,
      "new_path": "tests/test_cmake_build/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "268aebc0cee1d1e08e0ee41746fd4ca63cfdbbf5",
      "new_mode": 33188,
      "new_path": "tests/test_cmake_build/installed_precompile/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "02e8c0f089cad80d5b4e52cc4eff364b1955ff7e",
      "new_mode": 33188,
      "new_path": "tests/test_cmake_build/subdirectory_precompile/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "d75fb675205dd0f1425f07841ff2a0fbd52d5509",
      "old_mode": 33188,
      "old_path": "tools/pybind11Common.cmake",
      "new_id": "0073d3634d24ec0b8d48b99c3dfdfa4338c99183",
      "new_mode": 33188,
      "new_path": "tools/pybind11Common.cmake"
    },
    {
      "type": "modify",
      "old_id": "f52b2fb891331a251de14c7a90425b2d2356e214",
      "old_mode": 33188,
      "old_path": "tools/pybind11Config.cmake.in",
      "new_id": "abcd43e199b78a32917dba1a073b88b9760d2741",
      "new_mode": 33188,
      "new_path": "tools/pybind11Config.cmake.in"
    },
    {
      "type": "modify",
      "old_id": "b0fe20768d34f384611ffef2eefdd85826a64a51",
      "old_mode": 33188,
      "old_path": "tools/pybind11NewTools.cmake",
      "new_id": "175268d11316bb9263dcd7b48151313761be4516",
      "new_mode": 33188,
      "new_path": "tools/pybind11NewTools.cmake"
    },
    {
      "type": "modify",
      "old_id": "81faee7d8bd854cb9319ac8a8f64789ccf29cc3a",
      "old_mode": 33188,
      "old_path": "tools/pybind11Tools.cmake",
      "new_id": "9a7e5c6217a15b7c56b0524e5c491f84aa3b8ecd",
      "new_mode": 33188,
      "new_path": "tools/pybind11Tools.cmake"
    }
  ]
}
