)]}'
{
  "commit": "5df47e556efde72cc576d8a3af23b58b614345bd",
  "tree": "a8dc087ba3d4cd350ba7af0002b8ddfb87d1179e",
  "parents": [
    "28fc44708c4fe418a3c243931067e99e6497e3f8"
  ],
  "author": {
    "name": "Matt Stark",
    "email": "msta@google.com",
    "time": "Mon Sep 07 13:29:10 2026 +1000"
  },
  "committer": {
    "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Mon Sep 07 23:04:29 2026 -0700"
  },
  "message": "Use ReachabilityCache to improve performance of loop detection\n\nTogether with the previous optimizations, this changes the time\ncomplexity of suggestions be no longer proportional to the number of targets in the build graph.\n\nTo benchmark this, I changed the allowlist for `check_includes_strict`\nto //*, then ran `gn check`.\n\nBefore: Outputs a few errors per second. Left it running for a few\nminutes and I had no way to tell how long it was going to take, but\nprobably hours.\nAfter: Outputs 295,000 errors in 22 seconds.\n\nChange-Id: I4658aa7f612400eec44870c7dc962f176a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26242\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9a0ca03b1d449048013f5fa9fc2a234569005315",
      "old_mode": 33188,
      "old_path": "src/gn/command_suggest.cc",
      "new_id": "5009b9adbc7c9a998a904b68b7ae3012dc5d58c1",
      "new_mode": 33188,
      "new_path": "src/gn/command_suggest.cc"
    },
    {
      "type": "modify",
      "old_id": "63250580c2d107249a4566e2e4a9d52b060d9e69",
      "old_mode": 33188,
      "old_path": "src/gn/commands.h",
      "new_id": "98009eebc45930479d730ab13d8a2e8512bf1128",
      "new_mode": 33188,
      "new_path": "src/gn/commands.h"
    },
    {
      "type": "modify",
      "old_id": "0fee4b66bf9a696c3d1ea03a93fcad35c4fba862",
      "old_mode": 33188,
      "old_path": "src/gn/header_checker.h",
      "new_id": "17e2afc7481707b616396ec10e5c1196a37c1752",
      "new_mode": 33188,
      "new_path": "src/gn/header_checker.h"
    }
  ]
}
