)]}'
{
  "commit": "b03080ff6aafdeaf8b3152138e9af3b090cbae77",
  "tree": "510018694da8249cf14c51d75f6fef4a53509067",
  "parents": [
    "03e3dfff74c82d5bb01b5e2437ed2055a1227f1b"
  ],
  "author": {
    "name": "vadikmironov",
    "email": "77026200+vadikmironov@users.noreply.github.com",
    "time": "Mon Nov 09 21:03:37 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 09 21:03:37 2026 +0000"
  },
  "message": "fix(toolchains): prefer non-debug builds from runtime manifests (#4442)\n\nRuntime manifests added with\n`python.override(add_runtime_manifest_urls \u003d ...)` or\n`add_runtime_manifest_files` can list python-build-standalone debug\n(`Py_DEBUG`) builds; the upstream `SHA256SUMS` does. It is sorted by\nname, so for each platform the `debug-full` archive comes before the\noptimized `full` one. The first entry for a platform key wins and the\nsort ignores the build flavor, so:\n\n- `--@rules_python//python/config_settings:py_pbs_distribution\u003dfull`\n  selects the debug archive. With PBS 20261026 that is every `-full`\n  key, 132 of them for 3.11 to 3.16.0a1.\n- In releases that ship free-threaded runtimes only as `full` archives\n  (for example 20241016 and 20250115), the free-threaded keys get the\n  debug archive under the default distribution too.\n\nA debug archive has a different layout (`include/python3.14d`,\n`libpython3.14d.so`, `python_d.exe`) that the runtime repo does not\nhandle. For example, a `cc_library` on `current_py_cc_headers` fails\nwith `Python.h: No such file or directory`.\n\nRank debug builds (`-debug` and `+debug` flavors) last when sorting\nparsed runtime manifest entries, so non-debug archives are preferred\nwhenever available.\n\nRelated to #1823.\n\n---------\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: Richard Levasseur \u003crichardlev@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "14025a625a754d6764aedd6aa1fff5a1b63d5883",
      "new_mode": 33188,
      "new_path": "news/manifest-no-debug-builds.fixed.md"
    },
    {
      "type": "modify",
      "old_id": "04b604a82367c6918b2e082126185fcfe21894d5",
      "old_mode": 33188,
      "old_path": "python/private/pbs_manifest.bzl",
      "new_id": "8a849eae24b44cf91ee3c7910129479aded979c9",
      "new_mode": 33188,
      "new_path": "python/private/pbs_manifest.bzl"
    },
    {
      "type": "modify",
      "old_id": "8c9176aeb2f9cc514c46565033dc2c2d0e3e7794",
      "old_mode": 33188,
      "old_path": "tests/python_bzlmod_ext/parse_runtime_manifest_tests.bzl",
      "new_id": "a073037b8bf9c9909dcf3b03e46971dc7c2fff01",
      "new_mode": 33188,
      "new_path": "tests/python_bzlmod_ext/parse_runtime_manifest_tests.bzl"
    },
    {
      "type": "modify",
      "old_id": "682afa1a8ed885136dec23ca4c6e39970e302739",
      "old_mode": 33188,
      "old_path": "tests/python_bzlmod_ext/runtime_manifests_tests.bzl",
      "new_id": "557ea9415645d9147b361286981609d84e04f297",
      "new_mode": 33188,
      "new_path": "tests/python_bzlmod_ext/runtime_manifests_tests.bzl"
    }
  ]
}
