)]}'
{
  "commit": "7a57de5980d53cd81e363a02602909176855103a",
  "tree": "10ebc72d558ebe3765f47b9ffb7b370e88571aca",
  "parents": [
    "f21c591b5801ff79544d2b594afc6eb7250c6e6f"
  ],
  "author": {
    "name": "Henry Schreiner",
    "email": "HenrySchreinerIII@gmail.com",
    "time": "Sat Oct 03 13:56:12 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Oct 03 13:56:12 2026 -0400"
  },
  "message": "[feat/precompile-tooling] docs: document the opt-in precompiled mode (#6138)\n\n* docs: document the opt-in precompiled mode\n\nAssisted-by: ClaudeCode:claude-fable-5\n\n* chore: lint the -inl.h invariants of the precompiled mode\n\ntools/check_inl_headers.py checks that each namespace-scope definition\nin an -inl.h file has PYBIND11_INLINE, and that each macro in a\npreprocessor condition is known: either the same for the library and\nthe module, or encoded in the precompiled config guard. Also document\nthat a custom PYBIND11_NAMESPACE must reach the library.\n\nAssisted-by: ClaudeCode:claude-opus-5-5\n\n* docs: note the call overhead of a non-LTO precompiled library\n\nRelease build, trivial bound functions, against an LTO header-only\nmodule: AppleClang arm64 adds 2-4 ns per call (7-11%), GCC 15 Linux\naarch64 adds 1-2 ns (1-7%). With LTO on the library, both are within a\nfew percent.\n\nAssisted-by: ClaudeCode:claude-opus-5-5",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62511523de54e436d56f7a50929aa0a0417b2e56",
      "old_mode": 33188,
      "old_path": ".pre-commit-config.yaml",
      "new_id": "d61e642f7ac8e7e282b26550e3642226c8a255d6",
      "new_mode": 33188,
      "new_path": ".pre-commit-config.yaml"
    },
    {
      "type": "modify",
      "old_id": "a6bee86ffed86f0aef1026f967504feed116dfc0",
      "old_mode": 33188,
      "old_path": "docs/compiling.rst",
      "new_id": "a81b16fead6fcc316e30e3ce803cbbbafb6e1b39",
      "new_mode": 33188,
      "new_path": "docs/compiling.rst"
    },
    {
      "type": "modify",
      "old_id": "2b89d203f3c7a3e9455fb9553ded1f9c51e61964",
      "old_mode": 33188,
      "old_path": "docs/faq.rst",
      "new_id": "8a061c812dcde1aa36c51ea79def34af2953f549",
      "new_mode": 33188,
      "new_path": "docs/faq.rst"
    },
    {
      "type": "modify",
      "old_id": "224198ce3d46dc868948fc3321f86f57858cd9be",
      "old_mode": 33188,
      "old_path": "include/pybind11/detail/internals.h",
      "new_id": "164da39b5c003369ddfe4ace053b0e457358ecb0",
      "new_mode": 33188,
      "new_path": "include/pybind11/detail/internals.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6787fb740babc655f4106a8ab17973eebc91b6ac",
      "new_mode": 33261,
      "new_path": "tools/check_inl_headers.py"
    },
    {
      "type": "modify",
      "old_id": "abcd43e199b78a32917dba1a073b88b9760d2741",
      "old_mode": 33188,
      "old_path": "tools/pybind11Config.cmake.in",
      "new_id": "d666e9cc963bd4635bc31d3be1887460511e57b0",
      "new_mode": 33188,
      "new_path": "tools/pybind11Config.cmake.in"
    }
  ]
}
