)]}'
{
  "commit": "755ea88213fc46818ede21a28fc2c191e2a24bcb",
  "tree": "13b6a5d5ddb79a90070397cf43cd6213a4ccfcdb",
  "parents": [
    "3007f57168dbe495a6a0a206c4ac54aca9a0d56f"
  ],
  "author": {
    "name": "David \u0027Digit\u0027 Turner",
    "email": "digit@google.com",
    "time": "Mon Mar 23 09:49:29 2026 +0000"
  },
  "committer": {
    "name": "GN LUCI",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Mar 23 09:18:36 2026 -0700"
  },
  "message": "Only run target checks in background threads during resolution.\n\nBefore this CL, Target::OnResolved() did propagate information\nfrom dependencies to finalize the instance\u0027s state, and would\nalso run several checks to report errors.\n\nThe CL separates these into Target::OnResolvedWithoutChecks()\nand Target::RunChecksAfterResolution(), then modifies the\nBuilder::ResolveItem() implementation to only call the latter\nin background threads, while keeping the call to the former\nin the main thread.\n\nThis ensures that the result of resolution is deterministic,\nthus removing a source of data races that masked the problems\ndescribed in the associated bug.\n\nThis CL does *not* fix the issue though, this will happen\nin a future CL. Benchmarking shows no statistical difference\nin `gn gen` and `gn gen --check` times for a Chrome/Android\nbuild configuration.\n\nBug: 494481832\nChange-Id: I3947709fbda2fb39ccc75c620f8b9d535e0d3d26\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/21720\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "90e3f5be90a54f11d59376d37d927a53c07cf8cf",
      "old_mode": 33188,
      "old_path": "src/gn/builder.cc",
      "new_id": "9a85e2063bfc8df69f0cc5e64137d6c46e90e601",
      "new_mode": 33188,
      "new_path": "src/gn/builder.cc"
    },
    {
      "type": "modify",
      "old_id": "927de0a56cc8a4a53892dd81fb094767fbb8fe42",
      "old_mode": 33188,
      "old_path": "src/gn/builder.h",
      "new_id": "ebff0cc3ff88669b99335e0716c144be86189ca0",
      "new_mode": 33188,
      "new_path": "src/gn/builder.h"
    },
    {
      "type": "modify",
      "old_id": "8279061945a17179e75f9b71f067c8cf05800d9a",
      "old_mode": 33188,
      "old_path": "src/gn/builder_unittest.cc",
      "new_id": "68f365e1775569626491550ca40c377aba87f25e",
      "new_mode": 33188,
      "new_path": "src/gn/builder_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "062bebad256847c26fe6f3011f788071ad5c6ae5",
      "old_mode": 33188,
      "old_path": "src/gn/target.cc",
      "new_id": "b66c636bc41c574eb9b3b7d1c2c14dbbf2c3e296",
      "new_mode": 33188,
      "new_path": "src/gn/target.cc"
    },
    {
      "type": "modify",
      "old_id": "ccd5372b13a2d5341442bcc81549578e50d2acb4",
      "old_mode": 33188,
      "old_path": "src/gn/target.h",
      "new_id": "eb9e0b971527741cde61c076eea4924a3b0767d7",
      "new_mode": 33188,
      "new_path": "src/gn/target.h"
    }
  ]
}
