)]}'
{
  "commit": "d02965274841a27e85156d3b417c7c178bb4eaf1",
  "tree": "766d28cac91681e6b3d0ce4450cc970017919f58",
  "parents": [
    "0cc41d6d652bfb6fca57b2f22db9b6d965727b39"
  ],
  "author": {
    "name": "David Zbarsky",
    "email": "dzbarsky@gmail.com",
    "time": "Sun Jul 12 17:55:29 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Sun Jul 12 17:55:54 2026 -0700"
  },
  "message": "Cache rule feature lists\n\nCopybara Import from https://github.com/bazelbuild/rules_cc/pull/767\n\nBEGIN_PUBLIC\nCache rule feature lists (#767)\n\n## Summary\n\n`ctx.features` and `ctx.disabled_features` allocate a new list on every access. Cache those lists in `cc_binary`, `cc_library`, `objc_library`, and `objc_import`, then pass the cached lists through the existing feature-configuration helpers.\n\nThis reduces `ctx.features` accesses from up to five to one for `cc_binary`/`cc_test`, from up to four to one for `cc_library`, and reduces both property accesses from four to one for `objc_library` and from two to one for `objc_import`. Optional helper arguments preserve behavior for existing external callers.\n\n## Validation\n\n- `buildifier -mode\u003dcheck` on all changed Starlark files\n- `bazel test --jobs\u003d4 --test_output\u003derrors //tests/cc/common:cc_common_tests //tests/cc/common:cc_binary_configured_target_tests //tests/cc/common:cc_objc_library_configured_target_tests`\n\nCloses #767\nEND_PUBLIC\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/rules_cc/pull/767 from dzbarsky:codex/cache-rule-feature-lists bb77beecd459b49f9cd3843aabff75c1dbe139bc\nPiperOrigin-RevId: 946714345\nChange-Id: Id2e333dc8935c6b11e78327992dc79da22780f8b\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "115052afa1807d49f83cb47500b13e45539dc08e",
      "old_mode": 33188,
      "old_path": "cc/common/cc_helper.bzl",
      "new_id": "dff899ffac99c189779336f9a6a67db398bacd3b",
      "new_mode": 33188,
      "new_path": "cc/common/cc_helper.bzl"
    },
    {
      "type": "modify",
      "old_id": "3325e930ba208b05401b52e803f94dad72f227bc",
      "old_mode": 33188,
      "old_path": "cc/private/rules_impl/cc_binary_impl.bzl",
      "new_id": "9cac1e64f4d49d08bced660c8900e6943b323093",
      "new_mode": 33188,
      "new_path": "cc/private/rules_impl/cc_binary_impl.bzl"
    },
    {
      "type": "modify",
      "old_id": "2005486ef501a775c7862510331899d504c4abc9",
      "old_mode": 33261,
      "old_path": "cc/private/rules_impl/cc_library_impl.bzl",
      "new_id": "48d742d3cf4ad8b49c8d7d58e2ca515dec2533ea",
      "new_mode": 33261,
      "new_path": "cc/private/rules_impl/cc_library_impl.bzl"
    },
    {
      "type": "modify",
      "old_id": "b49719355513521a9e6b30c4682c90dd53ad51ab",
      "old_mode": 33188,
      "old_path": "cc/private/rules_impl/objc_compilation_support.bzl",
      "new_id": "3182d691596d6d58142c8180daa53e1fcb66525f",
      "new_mode": 33188,
      "new_path": "cc/private/rules_impl/objc_compilation_support.bzl"
    },
    {
      "type": "modify",
      "old_id": "d36efaab80363c9df989246431057a746e2f435a",
      "old_mode": 33188,
      "old_path": "cc/private/rules_impl/objc_library.bzl",
      "new_id": "ccd44c50d2335a2a27ff942124c534c6f199735c",
      "new_mode": 33188,
      "new_path": "cc/private/rules_impl/objc_library.bzl"
    },
    {
      "type": "modify",
      "old_id": "3683c7c293e50c2072b76d040550de9f90f942b3",
      "old_mode": 33188,
      "old_path": "cc/private/rules_impl/objc_semantics.bzl",
      "new_id": "9f914f884f427e8e6896be4e2051848e24ad7349",
      "new_mode": 33188,
      "new_path": "cc/private/rules_impl/objc_semantics.bzl"
    }
  ]
}
