)]}'
{
  "commit": "ca14a831a82342fe28e372a8d25ee4fe31b920e4",
  "tree": "4ee171b998ac695e441ec8cd1c975f7d08f22a65",
  "parents": [
    "0817afa577428da457b6482c027d7202cd01fcbf"
  ],
  "author": {
    "name": "Takuto Ikuta",
    "email": "tikuta@google.com",
    "time": "Thu Oct 08 18:55:34 2026 +0900"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Oct 15 05:03:29 2026 -0700"
  },
  "message": "Stop forwarding private hard_deps on Rust targets\n\nPreviously, Rust targets (e.g. rust_library, rust_proc_macro) forwarded\nhard_deps from both public_deps and private deps to their dependents\nbecause Target::all_headers_public() defaults to true.\n\nHowever, Rust targets do not have C/C++ public headers, and downstream\nRust targets already have direct dependencies on upstream .rlib/.rmeta\nfiles. Private dependencies of a Rust target (such as Cargo build script\nexecution actions or internal rust_bindgen actions) are only needed to\ncompile the Rust target itself, while any generated C++ headers exposed\nto dependents (e.g. cxxbridge or Crubit headers) are placed in\npublic_deps.\n\nThis change introduces ResolvedTargetData::OnlyForwardsPublicHardDeps()\nand applies it to Rust targets in addition to check_includes_strict\ntargets, so that Rust targets only forward hard_deps from public_deps to\ndependents while still including private hard_deps in their own\ncompilation input dependencies.\n\nIn a Chromium Linux build, this eliminates 377 .harddeps phony rules and\n2,587 .harddeps dependency edges (including std.harddeps and 3p Cargo\ncrate build script outputs propagating into downstream C++ targets).\n\nBug: 563098656\nChange-Id: If74076cba64281db575afea5b84f61c25f29bb09\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/27321\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nCommit-Queue: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d19a3aaa3eb47a4b01e0ce58effbb03bff2c6f29",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_writer.cc",
      "new_id": "5e9c136e2a7f0c04eaffdfa6d6e09866aa262a2e",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_writer.cc"
    },
    {
      "type": "modify",
      "old_id": "2986903fa504ff7c2363e1c0a5b68de7107ef1cc",
      "old_mode": 33188,
      "old_path": "src/gn/ninja_target_writer_unittest.cc",
      "new_id": "1db594aa4739bb70a765aa02faae9487ac27e6d4",
      "new_mode": 33188,
      "new_path": "src/gn/ninja_target_writer_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "f492986d7fd7114e192f054f2012e098a1cbcfa4",
      "old_mode": 33188,
      "old_path": "src/gn/resolved_target_data.cc",
      "new_id": "72758c3e48317645a55a1704ad9ab1eb0a1b64ec",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data.cc"
    },
    {
      "type": "modify",
      "old_id": "5922afe91403a69590b0404ff74dad839386dc22",
      "old_mode": 33188,
      "old_path": "src/gn/resolved_target_data.h",
      "new_id": "e498479c25a4b75a170090a2691a0aff8f0526d6",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data.h"
    },
    {
      "type": "modify",
      "old_id": "0361411d05d471eae8ca80e7852d982853380fee",
      "old_mode": 33188,
      "old_path": "src/gn/resolved_target_data_unittest.cc",
      "new_id": "2607438617b8fe584d1a384798ff58e59d67fbf0",
      "new_mode": 33188,
      "new_path": "src/gn/resolved_target_data_unittest.cc"
    }
  ]
}
