)]}'
{
  "log": [
    {
      "commit": "0625da07ece7b1a374ec0719b6f40ebe3d0950c1",
      "tree": "2213edbbe654ebfb3796fbf927b225d946cf1aba",
      "parents": [
        "f99972118649814cd21b180eab5ae84df3c5fac7"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Thu Sep 10 10:59:44 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 10 00:47:00 2026 -0700"
      },
      "message": "Improve heuristic to disambiguate recommended dependency to add.\n\nIf it still is ambiguous after applying visibility rules, we\ndisambiguate by label.\n\nChange-Id: I1a36609a24091cc4780e166532f211f26a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26420\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "f99972118649814cd21b180eab5ae84df3c5fac7",
      "tree": "e89384355bb9f15f33411b9e0ca879408a4e8463",
      "parents": [
        "e095a1af96872a6afa80ece00fdcd7f151cbdc79"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Sep 09 14:29:15 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Sep 09 01:46:55 2026 -0700"
      },
      "message": "No longer automatically add files to public.\n\nIt is more preferred to split into a source set if you have public\ndepending on a private header.\n\nConveniently, this also means that `gn check --fix` will never succeed\nand then break if you run it immediately after (which it would\npreviously do because the header that was made public may require\nsomething to be moved from deps to public_deps)\n\nChange-Id: I762a529c279232c6d7edb94bf99eecbc6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26400\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "e095a1af96872a6afa80ece00fdcd7f151cbdc79",
      "tree": "f939e9e2190baaafd48d0de8fb6ee3fa6dcba3e4",
      "parents": [
        "c0e4aae6d809a08cd402432a7d23494fc3b2a776"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Sep 09 13:52:33 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Sep 09 01:12:05 2026 -0700"
      },
      "message": "Deduplicate deps/public_deps and sources/public in gn edit\n\nWhen running `gn check --fix`, if you added a #include to both the .cc\nand the .h file, you will get the following suggestions:\n* \"add deps //dep\"\n* \"add public_deps //dep\"\n\nThis ensures that it will only get added to public_deps.\n\nAdditionally, change gn suggest to recommend adding to public_deps\ninstead of moving from deps to public_deps.\n\nChange-Id: I59074724bb5ed61a3499f1a81d2f3b356a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26380\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "c0e4aae6d809a08cd402432a7d23494fc3b2a776",
      "tree": "c9ed055e6075bf57123d2f7cf74a14cb7cbd9593",
      "parents": [
        "5df47e556efde72cc576d8a3af23b58b614345bd"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Sep 09 12:37:46 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 08 20:13:30 2026 -0700"
      },
      "message": "Preserve toolchain when generating suggestions in gn check\n\nRecord the source target on HeaderChecker::Violation so that CheckPublicHeaders\npasses the actual toolchain of the violating target to OutputSuggestions,\npreventing incorrect cross-toolchain suggestions.\n\nChange-Id: I7625f30ced367c2f8680e673fc5a5d0b6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26360\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "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"
    },
    {
      "commit": "28fc44708c4fe418a3c243931067e99e6497e3f8",
      "tree": "3761fe788ea6a2f462f5bd0d8557060dac7a9e83",
      "parents": [
        "3163718ce782913d01d204fd4199fd0195feaa6e"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Tue Sep 08 15:24:57 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 22:51:48 2026 -0700"
      },
      "message": "Support `target(target_type, name)` in `gn edit`\n\nChange-Id: Ic0b136bb5ddebb969411bc9ff56161bd6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26300\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "3163718ce782913d01d204fd4199fd0195feaa6e",
      "tree": "8ded4d1f95dec0fd7c886c0deb05091956f8662a",
      "parents": [
        "8288110acdeed00caec4b22b6427f0c0262f6888"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Mon Sep 07 12:53:05 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 17:38:02 2026 -0700"
      },
      "message": "Cache reverse dependencies for dependency exposure.\n\nThis is part of a larger process to improve the performance of\nsuggestions, but does not have change the time complexity until gn-review.googlesource.com/c/gn/+/26242 is submitted (benchmarks in that commit)\n\nChange-Id: Ic0bd366f7b2639f16a9e633dde527cec6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26281\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "8288110acdeed00caec4b22b6427f0c0262f6888",
      "tree": "5106cc05812a502d7de2295c73e8d479bd0c0b11",
      "parents": [
        "5b0f88306254204d364088e0231f35c0d9202929"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Mon Sep 07 12:29:42 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 17:27:53 2026 -0700"
      },
      "message": "Skip attempting to resolve known files as module names.\n\nThis is part of a larger process to improve the performance of\nsuggestions, but does not have change the time complexity until gn-review.googlesource.com/c/gn/+/26242 is submitted (benchmarks in that commit)\n\nChange-Id: I6e0067ca86f1e1afc6c8a828004011fd6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26260\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "5b0f88306254204d364088e0231f35c0d9202929",
      "tree": "c37ddc67ce5c1a64cac0686463b38501d1c09946",
      "parents": [
        "4f6a76b64b8279e98004f541f8e136307efe5e01"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Sep 04 17:05:59 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 17:26:15 2026 -0700"
      },
      "message": "Cache file path -\u003e target lookup in `gn suggest`.\n\nThis is part of a larger process to improve the performance of\nsuggestions, but does not have change the time complexity until gn-review.googlesource.com/c/gn/+/26242 is submitted (benchmarks in that commit)\n\nChange-Id: Ia47be0e501d26be321ad2fdc8681750b6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26240\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "4f6a76b64b8279e98004f541f8e136307efe5e01",
      "tree": "fe26053b0042bcf793cdb4e29f0c95158cff6baa",
      "parents": [
        "356ee8a865882bb3615422539ef262e32b102030"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Sep 04 12:01:52 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Sep 03 19:59:16 2026 -0700"
      },
      "message": "Make `gn edit move` idempotent.\n\n`gn check --fix` currently outputs errors when it tries to apply the\nsame move twice. This fixes move to be a no-op when it\u0027s already\napplied, similar to other commands.\n\nChange-Id: Id0b8182d3fc8e9f9d6d308951f387f766a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26220\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "356ee8a865882bb3615422539ef262e32b102030",
      "tree": "58d6ce8801e2a4de04894528fe302de0765a3ad7",
      "parents": [
        "7e0a9f67f1ebe9db9459a651d20728467fc8aa7f"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Thu Sep 03 10:14:08 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Sep 02 20:22:59 2026 -0700"
      },
      "message": "When re-running build/gen.py from ninja, preserve environment variables.\n\nThis ensures that when you run:\n```\nCXX\u003dPATH_TO_CXX build/gen.py ...\nninja -C out\n```\n\nPATH_TO_CXX is actually used when building\n\nChange-Id: Ie9b7fb149bd37181e7e1ba76024a9a806a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26180\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "7e0a9f67f1ebe9db9459a651d20728467fc8aa7f",
      "tree": "79994b5b05b1d459900d858818b3fce510225f22",
      "parents": [
        "16d3d2e28c3f2162c78f86e6295da17e0a847a97"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Sep 02 15:23:47 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Sep 02 20:09:30 2026 -0700"
      },
      "message": "Implement pretty for several more types\n\nChange-Id: I47ca96f5d8183de90cbd26e1386001536a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26201\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "16d3d2e28c3f2162c78f86e6295da17e0a847a97",
      "tree": "18a81772b906861e81e27e4a87c84175eee7c1db",
      "parents": [
        "7826279d0e70c08cd639db7c845b9eef56a76bdf"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Sep 02 11:57:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Sep 02 16:37:03 2026 -0700"
      },
      "message": "Ensure `gn edit` follows the style guide for variable ordering.\n\nInstead of just inserting new variables at the end, we now find the\nappropriate place to insert them.\n\nChange-Id: I612079782ac5861e46f80c87baefb37b6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26160\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "7826279d0e70c08cd639db7c845b9eef56a76bdf",
      "tree": "3c951c379a9ab12c75f50e9802107c1095d4341e",
      "parents": [
        "1c73f62240db1517dfd60ff193f53f2e4a52f3a5"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Sep 02 10:06:16 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 01 23:58:56 2026 -0700"
      },
      "message": "Simplify code produced by gn edit.\n\nWhen you remove entries from a list, this cleans up the list afterwards.\n\nChange-Id: I719ba89eba3cf3a25087bd48164a1cea6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26100\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "1c73f62240db1517dfd60ff193f53f2e4a52f3a5",
      "tree": "2506190c9d8f206c583b0830580e640008c68d91",
      "parents": [
        "f73e445a29d44030f1904770f37f0af6d6e0fe6d"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Tue Sep 01 12:47:03 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 01 23:32:17 2026 -0700"
      },
      "message": "Support setting expressions in `gn edit`\n\nPreviously the expressions would be converted to a string, but now they\ncan be evaluated as an expression\n\nChange-Id: Id583c8071b6e5c4b46a68a7806b3c3a56a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26060\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "f73e445a29d44030f1904770f37f0af6d6e0fe6d",
      "tree": "4adddb82b25f26faf9680713c4e3a169e18cd100",
      "parents": [
        "8e99cccde6c2b7e4e9a2076baf68b45d40f15613"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Tue Sep 01 21:00:12 2026 -0700"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 01 21:09:40 2026 -0700"
      },
      "message": "Revert \"Write to ninja files via a standard API\"\n\nThis reverts commit 8e99cccde6c2b7e4e9a2076baf68b45d40f15613.\n\nReason for revert: Speculative rollback\n\nFailure Link: https://ci.chromium.org/ui/p/chromium/builders/try/ios-simulator/2976370/overview\n\nOriginal change\u0027s description:\n\u003e Write to ninja files via a standard API\n\u003e\n\u003e This paves the way to have multiple targets in a single ninja file,\n\u003e which in turn should allow us to shard targets without degrading build\n\u003e performance.\n\u003e\n\u003e Benchmarking reveals a statistically insignificant impact on\n\u003e performance, and `siso dump` (crrev.com/c/8275910) reveals that the build graph\n\u003e is identical to before.\n\u003e\n\u003e Change-Id: I188fd8b075bb2f5cec9ff253c9220ae26a6a6964\n\u003e Reviewed-on: https://gn-review.googlesource.com/c/gn/+/25740\n\u003e Reviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n\u003e Commit-Queue: Matt Stark \u003cmsta@google.com\u003e\n\nTBR\u003dtikuta@google.com,gn-scoped@luci-project-accounts.iam.gserviceaccount.com,msta@google.com\n\nNo-Presubmit: true\nNo-Tree-Checks: true\nNo-Try: true\nChange-Id: Ia10bceec638142f3c2be2f2e7c613d84da5f8d35\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26121\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "8e99cccde6c2b7e4e9a2076baf68b45d40f15613",
      "tree": "41c656883841ed652e03b3b5418dddefcb3c8a5f",
      "parents": [
        "02564b488c094a278eabe630ec53a22ff5a98feb"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Thu Aug 20 15:09:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Sep 01 18:47:34 2026 -0700"
      },
      "message": "Write to ninja files via a standard API\n\nThis paves the way to have multiple targets in a single ninja file,\nwhich in turn should allow us to shard targets without degrading build\nperformance.\n\nBenchmarking reveals a statistically insignificant impact on\nperformance, and `siso dump` (crrev.com/c/8275910) reveals that the build graph\nis identical to before.\n\nChange-Id: I188fd8b075bb2f5cec9ff253c9220ae26a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25740\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "02564b488c094a278eabe630ec53a22ff5a98feb",
      "tree": "4adddb82b25f26faf9680713c4e3a169e18cd100",
      "parents": [
        "a99d46a9d04c770d6bb87387058e1d7b151758ce"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Tue Sep 01 15:58:33 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 31 23:44:41 2026 -0700"
      },
      "message": "Use move instead of add where suitable when suggesting fixes.\n\nIf something is in deps but should be in public_deps, we now output a\nsuggestion to move it from deps to public_deps instead of just\nsuggesting we add it.\n\nChange-Id: I09c5f35f1317ec7b39cea49ec3ef9ca56a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26080\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Junji Watanabe \u003cjwata@google.com\u003e\n"
    },
    {
      "commit": "a99d46a9d04c770d6bb87387058e1d7b151758ce",
      "tree": "17f5c66e716a5a6657e0a1220479b3b981981607",
      "parents": [
        "a6f2c97a38c6263c64a32ce7c83a45fdbe61d4e3"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Tue Sep 01 12:24:37 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 31 20:02:52 2026 -0700"
      },
      "message": "Fix EditCommandTest.ShardSubcommand\n\nThis is failing because:\n* CQ+1 passed when appplying a change to the formatter\n* I added the ShardSubcommand test which would have been affected by it\n* When I CQ+2\u0027d it, it didn\u0027t rerun the tests.\n\nChange-Id: I31990b23c450ab4c529187fbdbfb25a76a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/26040\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "a6f2c97a38c6263c64a32ce7c83a45fdbe61d4e3",
      "tree": "3e49f6754a7cdf5d9162dc71870f5f219266f7d3",
      "parents": [
        "4cf50b377b8eb25042ce517d51ceee17d678e3ab"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Mon Aug 31 16:57:33 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 31 01:10:52 2026 -0700"
      },
      "message": "Support public_inputs in gn desc\n\nThis change adds support for public_inputs in `gn desc` and\n`DescBuilder`.\n\nTargets declaring `public_inputs` (such as `action` and `group`) will\nnow include their `public_inputs` in descriptions, supporting both\nindividual queries (`gn desc \u003cout\u003e \u003ctarget\u003e public_inputs`) and JSON\nexport (`--format\u003djson` / `--ide\u003djson`).\n\nChange-Id: I2fa1925e2896c63101345f87cefd42727582ee32\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25940\nCommit-Queue: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n"
    },
    {
      "commit": "4cf50b377b8eb25042ce517d51ceee17d678e3ab",
      "tree": "870f561e5852df9ced4f72a447d87514ef6e649c",
      "parents": [
        "150a9d6ba0aa7f407aa4feeabc5f03ce9aa7e04b"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Aug 20 13:17:41 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 31 00:24:45 2026 -0700"
      },
      "message": "Update `gn format` to always insert newlines before targets.\n\nChange-Id: Ie1d0e3be4ee053d4a742bb3dfd2266b96a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25621\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "150a9d6ba0aa7f407aa4feeabc5f03ce9aa7e04b",
      "tree": "f13e212eb8712e2ac210adaef5803320993fdd14",
      "parents": [
        "d71c4a70bd2ece461a09cbd6321970b9247fdab2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Aug 28 15:01:20 2026 +0200"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 31 00:01:01 2026 -0700"
      },
      "message": "run_formatter.sh: Warn if `rustfmt` is not installed.\n\nMy workstation didn\u0027t have `rustfmt` installed, which resulted\nin weird cargo errors when running the script. This changes\nit to check for `cargo fmt --version` first before trying\nto run it, and print a warning otherwise.\n\n+ Fix a series of issues reported by shellcheck, by using\n  better quoting an array variables to manage lists.\n\nChange-Id: I7920900d33a3cdca83297d8edda78f4f3b2b3693\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25820\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\n"
    },
    {
      "commit": "d71c4a70bd2ece461a09cbd6321970b9247fdab2",
      "tree": "c2727e05c84a307950654099b8b043e03607f547",
      "parents": [
        "c1b663788ed1ecf2ffd53781c98ae2291ee002cf"
      ],
      "author": {
        "name": "Philipp Wollermann",
        "email": "philwo@chromium.org",
        "time": "Fri Jul 03 16:09:18 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sat Aug 29 20:13:26 2026 -0700"
      },
      "message": "docs: Document that copy() uses the toolchain\u0027s copy tool\n\nThe copy() target type does not have a built-in copy command; the actual\ncommand is provided by the \"copy\" tool defined by the toolchain, and GN\nerrors out if no such tool exists. This is how Chromium customizes\ncopying (e.g. hard-linking for speed), but it was not documented\nanywhere, so it was easy to assume copy() had a fixed built-in\nimplementation.\n\nAdd a \"How the copy is performed\" section to `gn help copy` explaining\nthe mechanism and showing how to override the tool, and cross-reference\nit from the \"copy\" tool description in `gn help tool`. Regenerate\nreference.md.\n\nChange-Id: I0fbd42c540411b4e15b0385f6753b6679ee23483\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23760\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nCommit-Queue: Philipp Wollermann \u003cphilwo@chromium.org\u003e\n"
    },
    {
      "commit": "c1b663788ed1ecf2ffd53781c98ae2291ee002cf",
      "tree": "56165a0c14fe95a7bff5d12b19cb3b2d9bc13f75",
      "parents": [
        "664f3e6312ed9b832b3a9757a7e6b811383826de"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 05 12:42:50 2026 +0200"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Fri Aug 28 08:24:14 2026 -0700"
      },
      "message": "standard_out.h: Add ScopedBufferedOuptut class.\n\nThis allows buffering all OutputString() outputs to a buffer\ninstead of sending this to the real stdout. This is useful\nfor tests that need to call high-level functions that do not\nreturn an Err value but instead invoke OutputString() directly.\n\nUse it here in the Commands.ApplyTypeFilter which polluted the\ntest\u0027s stderr output with Err() dumps to stderr. This will\nalso be useful in future CLs.\n\nChange-Id: I0333fa15b72149fad7d3fb8349e6cf5231038e08\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23080\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n"
    },
    {
      "commit": "664f3e6312ed9b832b3a9757a7e6b811383826de",
      "tree": "4eae8052e718337ff9a65c80db29e08d506c5e82",
      "parents": [
        "deecdc59301db96900fec68b4a067d9b70eacbb9"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Fri Aug 28 00:12:04 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Aug 27 19:14:01 2026 -0700"
      },
      "message": "Support public_inputs in group targets\n\nThis change allows `group` targets to declare `public_inputs`.\n\nWhen a target defines `public_inputs`, the files are treated as implicit\ninputs of dependent targets (direct dependents and transitively via\n`public_deps`).\n\nAllowing `public_inputs` on `group` targets makes it possible to\naggregate generated files (e.g. `*.d.ts` declaration files, tsconfig\nrefs) and export them as public inputs to downstream consumers without\ndefining dummy stamp actions or creating self-dependency cycles in\nactions.\n\nI\u0027d like to use this to simplify GN config like\nhttps://crrev.com/c/8303334/10/scripts/build/typescript/ts_library_split.gni\n\nBug: 513105742, 547522497\nChange-Id: I4cdb23f64478a268a975b4834fbc79edf0ea8a5b\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25780\nReviewed-by: David Turner \u003cdigit@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nCommit-Queue: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "deecdc59301db96900fec68b4a067d9b70eacbb9",
      "tree": "083a7689480611b11423b0bbdee60161dabf9cc9",
      "parents": [
        "07014ca3a3aa1acf2b08405a1cbbd4c996546f58"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Aug 26 16:29:01 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 26 01:10:29 2026 -0700"
      },
      "message": "Run benchmarks serially.\n\nThis prevent a benchmark from running while another benchmark was running or code is compiling, improving the quality of the benchmark.\n\nChange-Id: I4f521ae70b66eb813dfbdf4cce10d3ee6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25761\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "07014ca3a3aa1acf2b08405a1cbbd4c996546f58",
      "tree": "b4e53497920cbbe66b708313a2f4dcfbcb35fa06",
      "parents": [
        "a6473d48ff816bb67b2a24de15a93ec4f2974f40"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Aug 26 16:29:01 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 26 01:00:45 2026 -0700"
      },
      "message": "Write benchmarks to out/before and out/after instead of out/\n\nChange-Id: I681147b25ff0fe5d782664147ebae94f6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25760\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "a6473d48ff816bb67b2a24de15a93ec4f2974f40",
      "tree": "e75b11a178b74304082ed920ecba11cd843427bf",
      "parents": [
        "e10143e81668691ac4add5ede1dce137c7fe7a1e"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Thu Aug 20 15:09:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 25 21:50:59 2026 -0700"
      },
      "message": "Add jj subcommands to easily compare revisions.\n\n* `jj before-after` builds two copies of gn in parallel, before and after a change.\n* `HYPERFINE_OPTS\u003d\"--warmup 1 --runs 5\" jj compare-perf` compares the performance of those two copies of GN across 5 invocations of GN gen each.\n  * It caches the benchmarking results to improve performance, which\n    particularly helps given that \"before\" is unlikely to change.\n\nChange-Id: Iff7ef7965ebf7c1b9d2769ca23abdac36a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25720\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "e10143e81668691ac4add5ede1dce137c7fe7a1e",
      "tree": "fd5db00c05967ebf5bedd3c949e39eaa9a2234ab",
      "parents": [
        "d0aec5864e636f9f749699fd7495d18a8d73844e"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Thu Aug 20 15:09:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 25 21:50:52 2026 -0700"
      },
      "message": "Add `build/gen.py --gen ~/chromium/src\u003dout/Default`\n\nThis allows for:\n* `ninja -C out gen` to rerun `gn gen` if gn has changed.\n* `ninja -C out gen.json` to calculate the build graph generated by `gn gen`\n\nChange-Id: I9805e438abbd332d3acd9b3b54f8c4c66a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25602\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "d0aec5864e636f9f749699fd7495d18a8d73844e",
      "tree": "4d3de3197e1de614bb6ec5bc00489c30210db8e9",
      "parents": [
        "c7ffaf80713afbe5a4f4d95a605c0a98084374de"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Thu Aug 20 15:09:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 25 20:29:02 2026 -0700"
      },
      "message": "Create a trace comparison tool to evaluate the performance impact of a change.\n\nOn many occasions, it\u0027s useful to understand the performance impact of a\nchange to GN. In particular, when investigating changes like making ninja\nfiles per directory instead of per target, overall build times can be noisy\nand hard to measure reliably.\n\n`tools/compare_traces.py` compares Chrome trace logs from `gn gen --tracelog`\nruns to isolate the performance impact on specific build files and phases.\nBy averaging multiple runs and filtering out noise, it can show when a change\nreliably affects a specific part of the build even if the overall wall-clock\ndifference is small.\n\nExample - I modified gn to sleep for 5 seconds while loading\n//chrome/browser/BUILD.gn, then got the following results:\n\n$ tools/compare_traces.py --before before_1.trace before_2.trace \\\n  before_3.trace --after after_1.trace after_2.trace after_3.trace\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n GN PERFORMANCE IMPACT REPORT\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSamples:  Before: 3 run(s) | After: 3 run(s)\n\nEXECUTIVE VERDICT\n--------------------------------------------------------------------------------------\n  ⚠️  REGRESSION DETECTED: Slower by +2,420 ms (+67.6%)\n\n  • Wall-clock / run:  Before:    3,577 ± 365 ms  -\u003e  After:     5,997 ± 17 ms\n  • Total CPU / run:   Before: 64,738 ± 4,101 ms  -\u003e  After: 76,680 ± 1,848 ms\n  • Events / run:      Before:           152,059  -\u003e  After:           152,059  (Δ +0)\n\nAFFECTED GN PHASES (Ranked by impact)\n--------------------------------------------------------------------------------------\n Delta (ms)  Delta (%)      Before       After  Name\n--------------------------------------------------------------------------------------\n  +6,167 ms    +31.5%   19,584 ms   25,752 ms  BUILD.gn Execution\n     +26 ms     +4.1%      634 ms      660 ms  External Scripts\n\nAFFECTED SUBSYSTEMS (Ranked by impact)\n--------------------------------------------------------------------------------------\n Delta (ms)  Delta (%)      Before       After  Name\n--------------------------------------------------------------------------------------\n     -22 ms    -65.8%       33 ms       11 ms  //remoting/base\n\nAFFECTED BUILD FILES (Ranked by impact)\n--------------------------------------------------------------------------------------\n Delta (ms)  Delta (%)      Before       After  Name\n--------------------------------------------------------------------------------------\n  +4,940 ms  +7093.8%       70 ms    5,009 ms  //chrome/browser/BUILD.gn\n     +25 ms    +19.8%      124 ms      149 ms  //chrome/test/BUILD.gn\n     +24 ms    +84.1%       28 ms       52 ms  //components/omnibox/browser/BUILD.gn\n     -22 ms    -68.5%       32 ms       10 ms  //remoting/base/BUILD.gn\n     -21 ms    -69.8%       30 ms        9 ms  //ui/gl/mojom/BUILD.gn\n     -20 ms    -66.8%       30 ms       10 ms  //remoting/protocol/BUILD.gn\n     +10 ms    +31.7%       30 ms       40 ms  //extensions/browser/BUILD.gn\n     -12 ms    -37.8%       32 ms       20 ms  //ui/accessibility/mojom/BUILD.gn\n\nChange-Id: Ie31079d5836559d850d61692021b1e346a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25680\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "c7ffaf80713afbe5a4f4d95a605c0a98084374de",
      "tree": "5840e8b67c4dfd03e7b187be981df6673306773f",
      "parents": [
        "e0a6ab04a113b2dd039cab7c21c6f387e0d881ee"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Tue Aug 25 22:46:32 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 25 08:46:42 2026 -0700"
      },
      "message": "Allow host_os and host_cpu to be accessed in .gn files\n\nThis exposes host_os and host_cpu in the dotfile evaluation scope\nalongside gn_version.\n\nThis is derived from\nhttps://chromium-review.git.corp.google.com/c/v8/v8/+/8285754/comment/69434b1d_b71efa64/\n\nBug: 551837554\nChange-Id: Iaded5fbf5c03b00bfbc3f9915c73b34dc6e42b33\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25700\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n"
    },
    {
      "commit": "e0a6ab04a113b2dd039cab7c21c6f387e0d881ee",
      "tree": "60af3974e586850e9dd9cda0ea3f9bb9ea7d810d",
      "parents": [
        "b1da1218b1f948d86a849586e535e87147d1336e"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 19 17:41:41 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Aug 23 20:56:49 2026 -0700"
      },
      "message": "Implement `gn edit \"shard\"` subcommand\n\nAdds the `shard` subcommand to `gn edit` to split a target into\nfine-grained shard targets based on source file stems.\n\nEach shard inherits the original target\u0027s compiler flags, defines,\nvisibility, and conditionals, while stripping existing dependencies.\nThe original target is converted to a group (or specified group type)\ndepending on the newly created shards.\n\nSupports optional arguments to customize the sharded target and group types:\n  gn edit \"shard [sharded_target_type] [group_type]\" \u003clabels...\u003e\n\nChange-Id: I5aac2501746d608d5bf1789ec2caf61a6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25620\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "b1da1218b1f948d86a849586e535e87147d1336e",
      "tree": "8917bfc1a0481a27475194454f7c357f03821367",
      "parents": [
        "2fc5f9e51f5b38a6aad0ee8f8c2129582340184d"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 24 11:01:22 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Aug 23 20:03:53 2026 -0700"
      },
      "message": "Hint about --fix/--apply when running without them\n\nChange-Id: Ib2b5270734cad3739b0d09bc41cba8236a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25660\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "2fc5f9e51f5b38a6aad0ee8f8c2129582340184d",
      "tree": "1d56530a512c10035abc2f9e08b5254f3412e949",
      "parents": [
        "58933a7cdbc90f70f2381f0c72e76d29be1d43a9"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 19 13:51:43 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Aug 23 18:01:21 2026 -0700"
      },
      "message": "Add support for creating new targets in `gn edit`\n\nChange-Id: Ie07922d0822ce42b00dac7471c25cc386a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25581\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "58933a7cdbc90f70f2381f0c72e76d29be1d43a9",
      "tree": "93e53a6e9115d333aa60b2a1f2e54c8983e240a0",
      "parents": [
        "f3d7a0c85fbad4f82478bae5c08925c3d676dee1"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 19 17:41:41 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 19 22:57:07 2026 -0700"
      },
      "message": "Support cloning of nodes in the AST.\n\nThis will be useful for sharding targets.\n\nChange-Id: Ibc4f4f1cf84bf91a2cde8ead520eb4c76a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25600\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "f3d7a0c85fbad4f82478bae5c08925c3d676dee1",
      "tree": "7fce58e0b8d6c5a00f64cd8d71bcacd1f42502f7",
      "parents": [
        "2481edf51ea7789c66aede9725ff0e202dfae812"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Aug 20 13:46:00 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 19 22:52:34 2026 -0700"
      },
      "message": "Mark NOTREACHED as [[noreturn]]\n\nThis prevents compiler errors when you write NOTREACHED but do not add a\nreturn statement.\n\nChange-Id: Ic878ba3e89e1e933a1288a3972505f736a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25601\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "2481edf51ea7789c66aede9725ff0e202dfae812",
      "tree": "511201cce0efa9e4c1c1fad6a0506cce4cf98e97",
      "parents": [
        "f0be464b58d9080bd229c8c49671cc299f815761"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 17 13:02:08 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 19 00:42:26 2026 -0700"
      },
      "message": "Implement `gn check --fix`\n\nChange-Id: I5155d94bcae10a8f0b7243c7de9826ad6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25481\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "f0be464b58d9080bd229c8c49671cc299f815761",
      "tree": "75f645d673154658e4ff0271572f43f25073ae18",
      "parents": [
        "d2e84facaf423d09c2b4ca30dc0fae1182cb7d03"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 19 16:08:39 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 19 00:07:39 2026 -0700"
      },
      "message": "Fix gn suggest adding self-dependency loops.\n\nChange-Id: I9663c1fd8533418f9d3a91d3baab01816a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25580\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "d2e84facaf423d09c2b4ca30dc0fae1182cb7d03",
      "tree": "fc74d05131f04cea49ac0e2374d00f660354ca82",
      "parents": [
        "39e3f7ad147d48c89268a908fc411908f4313896"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 17 12:10:43 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 19 00:06:46 2026 -0700"
      },
      "message": "Add a `gn suggest --apply` option.\n\nChange-Id: I6e7120d3aa7fbcf90f7beeddda9abbb66a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25480\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "39e3f7ad147d48c89268a908fc411908f4313896",
      "tree": "f509262ce97548891b4e520caa88c7ca51807bc7",
      "parents": [
        "c6cffd45cc17c30acb6f8bcc0b9a0e49654aafa2"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 17 10:33:59 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 18 17:25:50 2026 -0700"
      },
      "message": "Add `gn edit` suggestions to `gn suggest`\n\nChange-Id: I9e0b7f76fa706460e7b5132df29abf906a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25401\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "c6cffd45cc17c30acb6f8bcc0b9a0e49654aafa2",
      "tree": "b084c8db53a14613fe950c974e074def564eb1a6",
      "parents": [
        "bc1914cfbd363f9be637bf0b7cb03c0428f50b15"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 17 10:03:35 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 17 21:36:37 2026 -0700"
      },
      "message": "Implement `gn edit \"rename attr attr\"`\n\nChange-Id: Ia0d2208d15dbf6ff8ff9027051583b4e6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25461\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "bc1914cfbd363f9be637bf0b7cb03c0428f50b15",
      "tree": "e495ddfba5c130de0ba2128e0ef4c07ddf192095",
      "parents": [
        "167116e0cf17474a762c2407a6d5ebd7271fcd7f"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 17 09:40:16 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 17 21:28:57 2026 -0700"
      },
      "message": "Implement `gn edit \"move attr attr value(s)\"`\n\nChange-Id: Iadb0b09205bdf7bde614fe7fcd37ae8b6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25460\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "167116e0cf17474a762c2407a6d5ebd7271fcd7f",
      "tree": "899c5b90410a2dfc0e0cfe996322939e717dc0db",
      "parents": [
        "1c79e13d17a1760d6c6401c90061411842bd4881"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Fri Aug 14 15:38:02 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 17 21:26:58 2026 -0700"
      },
      "message": "Implement `gn edit \"add attribute value(s)\"`\n\nChange-Id: I9a327e9f6e71ec2e3587ed25219e145b6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25441\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "1c79e13d17a1760d6c6401c90061411842bd4881",
      "tree": "2cc7cf6f41ef155cd3c9e94c440d0e3c62de732d",
      "parents": [
        "e8a8e0932a5e42a99e5896aa58e3b8290f4e5b8c"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 12 10:05:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 17 21:24:08 2026 -0700"
      },
      "message": "Implement `gn edit \"remove attr value(s)\"`\n\nChange-Id: Ib4e05cd443a60e16843d386565d0a35b6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25440\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "e8a8e0932a5e42a99e5896aa58e3b8290f4e5b8c",
      "tree": "9d55188b48e0d83b4682f2a845708c386b028763",
      "parents": [
        "24800a7f10f244333a7295dc320ac32a1158202f"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 12 10:05:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Aug 13 22:04:20 2026 -0700"
      },
      "message": "Refactor parse nodes to support non-const access.\n\nChange-Id: I1dd35ea155a6cd727e45a01453346dbb6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25420\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "24800a7f10f244333a7295dc320ac32a1158202f",
      "tree": "44f172fb5270b310a1f6b7c04e9eda24bc3ca958",
      "parents": [
        "0db00fc0fb75adf816104951b415769a087144c1"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 12 10:05:21 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Aug 13 21:34:17 2026 -0700"
      },
      "message": "Implement `gn edit delete` and `gn edit remove attr`\n\nChange-Id: Ib41ef3fa55e622cecd6fea3e748305ef6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25400\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "0db00fc0fb75adf816104951b415769a087144c1",
      "tree": "1719c3d790e37d1e08eb15385a6673ffdaf86412",
      "parents": [
        "d5594ca84e69ea33223e41b49ac2736b27feae33"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 10 14:13:54 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Aug 13 19:22:34 2026 -0700"
      },
      "message": "Implement `gn edit` command, and implement a simple subcommand \"set\"\n\n`gn edit` is a command heavily inspired by buildozer\n(https://github.com/bazelbuild/buildtools/blob/main/buildozer/README.md).\nIt allows programattic editing of BUILD.gn files.\n\nIt is a soft requirement for the rollout of strict deps, and has three\nprimary use cases:\n* Make AI able to edit build files more effectively\n* Make large-scale rollouts easier to perform.\n* Put the infrastructure in place for `gn check --fix` / `gn suggest --apply`\n\nBug: 528225104\nChange-Id: Ic0a83aec04a4036aa6ff7fdcf593bc716a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25281\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "d5594ca84e69ea33223e41b49ac2736b27feae33",
      "tree": "b61e8c2ca52e7fde7981dc5353c0045c806ee0ba",
      "parents": [
        "152bfad24cc836064b449a756ca8482a76cecdf9"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 10 14:13:54 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 11 22:04:31 2026 -0700"
      },
      "message": "Add features to test framework\n\n* Make binary comparison macros variadic, allowing you\n  to use them with initializer lists.\n  eg. EXPECT_EQ(..., std::vector\u003cstd::string\u003e{\"a\", \"b\"})\n* Implement a two-argument form of EXPECT/ASSERT_SUCCESS(result, expected)\n  that asserts that Result\u003cT\u003e is Ok(expected).\n* Implement both 1 and 2-argument forms of EXPECT_FAILURE\n  * 1-argument form expects that there was an error\n  * 2-argument form expects that there was an error with the message\n    containing a specific string\n* Implement a pretty-printer for Err and Result, allowing you to print\n  things like:\n  * \"Expected failure but got Ok(1)\"\n  * Expected success but got Err(\"error message\")\n\nChange-Id: I16c8bc2eb6761ff1aa3daa04a9cf85446a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25280\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "152bfad24cc836064b449a756ca8482a76cecdf9",
      "tree": "7bbcba89d90f72be457a32bba25926a202dad348",
      "parents": [
        "6b0190f746976a2e3b26ed529a9d487ae2587868"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 10 14:13:54 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 11 19:20:07 2026 -0700"
      },
      "message": "Implement a Result\u003cT\u003e type.\n\nOutput parameters are an antipattern that should be avoided in C++.\n\nThey have a minor performance overhead from the inability to use RVO,\nbut more importantly, they\u0027re extremely unergonomic to use. Unless\nyou\u0027re specifically passing a potentially non-empty object by reference,\nyou should generally avoid using them.\n\nhttps://www.dominikgrabiec.com/posts/2022/02/20/cpp_antipattern_passing_result_array_in.html\n\nGoogle3 has had absl::StatusOr and RETURN_IF_ERROR / ASSIGN_OR_RETURN\nsince I first started in 2018. With the advent of C++23, we now have\nstd::expected.\n\nThese are equivalent to rust\u0027s \"?\" operator. They significantly improve\nreadability and make it much harder to write incorrect code (eg.\nignoring the error value).\n\nSee go/totw/121 if you\u0027re a googler for more details\n\nChange-Id: If32e4c953f9cdfe4c3764eb01970d2596a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25140\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "6b0190f746976a2e3b26ed529a9d487ae2587868",
      "tree": "0093d691d94daafcb99b420e2138741ce83f842f",
      "parents": [
        "7324363900ccab92518649e9693d71a4ae71a747"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Tue Aug 11 09:12:07 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 11 19:05:26 2026 -0700"
      },
      "message": "Fix formatter on main branch\n\nChange-Id: I47e0842866f3e7864498a6cb152f45ff6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25260\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "7324363900ccab92518649e9693d71a4ae71a747",
      "tree": "821f5d56a008f86e00f1ec86a18b48cc386956f8",
      "parents": [
        "d1996a79c64e0852e9a2559bf1596376eeebdabf"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 10 16:25:35 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Aug 09 23:53:28 2026 -0700"
      },
      "message": "Fix path to build/gen.py.\n\nIt was previously hardcoded to be ../build/gen.py, which fails if, for\nexample, you write build/gen.py --out-path\u003d/tmp/gn\n\nChange-Id: I8d0b459a8ce48c6c18ed09d94d5d90b56a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25160\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "d1996a79c64e0852e9a2559bf1596376eeebdabf",
      "tree": "121a2e2e8a9ff4fb47f44ef92e763b8ef6b85a2e",
      "parents": [
        "64cfb8344ec3e8585a89a3836716a026e2771fcb"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Aug 06 11:58:53 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Aug 09 19:51:52 2026 -0700"
      },
      "message": "Add pre-upload checks into ninja targets\n\nChange-Id: Ieec9dac5a799e4b8a34d0d2c44b779aa6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/25080\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "64cfb8344ec3e8585a89a3836716a026e2771fcb",
      "tree": "be23e30c3ab40368ea79b9d9820ba7884870a780",
      "parents": [
        "925dd782d25df9a60d6402a98a1c22a5c54149a2"
      ],
      "author": {
        "name": "Zgroza Klimek",
        "email": "zgroza@chromium.org",
        "time": "Thu Jul 30 13:00:03 2026 +0200"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Aug 05 06:31:57 2026 -0700"
      },
      "message": "Add --exclude-type command-line argument\n\nIt essentially does the opposite of `--type`. It\u0027s needed for efficient\ntarget filtering in `autotest.py` in Chromium:\nhttps://chromium-review.googlesource.com/c/chromium/src/+/8139431\n\nBug: 534608615\nChange-Id: If5b2e4ab8cad5529fbc3477adaac83f86a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24520\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Zgroza (Luke) Klimek \u003czgroza@chromium.org\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n"
    },
    {
      "commit": "925dd782d25df9a60d6402a98a1c22a5c54149a2",
      "tree": "cb63e41d5f9ed776425355a650aadb3fefa4315d",
      "parents": [
        "a01a5a9b96f30a434412fc9dea903aab9de22991"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 05 12:12:46 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 04 20:11:00 2026 -0700"
      },
      "message": "Add CQ to starlark branch\n\nChange-Id: I7b232a889b11f8dd8e51b1a12e9a82046a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24861\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "a01a5a9b96f30a434412fc9dea903aab9de22991",
      "tree": "2b96f60cf693f947466d7bbaa8e682900057f497",
      "parents": [
        "f9cea148d88f2a3570fc2f81a5931f96d20194f1"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Aug 05 11:54:26 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Aug 04 20:07:23 2026 -0700"
      },
      "message": "Refactor main.star to support multiple branches.\n\nRan `lucicfg validate main.star` to validate that the changes were a\nno-op, as the generated files do not need to be updated.\n\nChange-Id: I9d526fae76deae7ed371672ab96807186a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24860\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "f9cea148d88f2a3570fc2f81a5931f96d20194f1",
      "tree": "5ebc2f1529ef02a06555622a147fc77f85bceb87",
      "parents": [
        "3a817c2e07ebff471f61ca75faeb2db56b58f0cb"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Tue Jul 21 15:42:29 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 03 23:13:29 2026 -0700"
      },
      "message": "Implement rule implementation execution.\n\nNote that I\u0027ve had to move frozen rule tests to their own tests\ndirectory. This is because I\u0027ve introduced a dependency chain:\n#[cfg(test)] rule -\u003e testutil -\u003e rule\n\nTests in the tests directory compile against rule, while tests not in\nthat directory compile against #[cfg(test)] rule, which is incompatible\nwith testutil\u0027s rule.\n\nBug: 528225104\nChange-Id: Iee3614fc522580a1114b67d7948252276a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24300\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "3a817c2e07ebff471f61ca75faeb2db56b58f0cb",
      "tree": "48c0eba77731424f92a0e3d5c6d8603d7dfd7096",
      "parents": [
        "37ab73c2fbc428d69d95b063aa4572468e0bf143"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 29 11:48:44 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 03 23:09:37 2026 -0700"
      },
      "message": "Create a simple session type and create a test for it.\n\nIt\u0027s mostly filled with todo! for implementing the more complex logic,\nbut it can load values from starlark files.\n\nBug: 528225104\nChange-Id: I72fab7d0c2691453b612f1beb39f86d16a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24580\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Richard Wang \u003crichardwa@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "37ab73c2fbc428d69d95b063aa4572468e0bf143",
      "tree": "5c71d8d8d95e1142e1d310c4387ebfde1aac1d36",
      "parents": [
        "4ac29005ff1dc3d8f34ceb9c1438e2db8c1b0888"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Fri Jul 31 15:53:31 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 03 22:42:02 2026 -0700"
      },
      "message": "Fix lifetime of starlark struct keys passed to C++.\n\nThis works fine *most* of the time, since we mostly return structs\nstored on frozen heaps, thus guarunteeing they will live as long as\nthe starlark session. But we make no guaruntee of this.\n\nBug: 528225104\nChange-Id: Ie76b00e2c10fdb4b166e1496fdae04eb6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24680\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "4ac29005ff1dc3d8f34ceb9c1438e2db8c1b0888",
      "tree": "7013739a3b117a1b49050d57286441f7d81cda2a",
      "parents": [
        "17b0057970fa2b07a20cbb4289ab78cf93565f35"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Aug 03 13:10:47 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Aug 03 19:22:42 2026 -0700"
      },
      "message": "Rename .bzl to .scl in accordance with design doc guidance.\n\nBug: 528225104\nChange-Id: I6d8d27566d32888225488c10aa82bcfe6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24700\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "17b0057970fa2b07a20cbb4289ab78cf93565f35",
      "tree": "fcb2b59068f28cfa9a91f1e4ff26f5662f39124d",
      "parents": [
        "3fd3b0624d8cba16927853600130b2c33d4e7928"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 29 21:38:37 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Aug 02 19:54:51 2026 -0700"
      },
      "message": "Split into two kinds of scopes - scopes and structs.\n\nSemantically, a \"struct\" is just a scope which only supports dot-access.\nIt has no parent scope.\nOn the other hand, a Scope has a parent, and inherits variables from it.\n\nBug: 528225104\nChange-Id: I6410068cd8e89b8ae747f1fc2583b9e16a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24541\nReviewed-by: Richard Wang \u003crichardwa@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "3fd3b0624d8cba16927853600130b2c33d4e7928",
      "tree": "7b183d4856022c38f9b23adeaba1f5986ea7a8e1",
      "parents": [
        "443fd7a3a2646068f1baaae915dd54cbf43135b6"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Fri Jul 31 14:17:37 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 30 21:39:41 2026 -0700"
      },
      "message": "Allow too many arguments lint.\n\nIt\u0027s just not a useful lint - we should rely on users to decide what to\ndo in each circumstance.\n\nBug: 528225104\nChange-Id: Id078825ea7251e2ed15da4ad340d13c86a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24620\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "443fd7a3a2646068f1baaae915dd54cbf43135b6",
      "tree": "b5c582e10a7714f15d59e78b0ac371458af272cf",
      "parents": [
        "e1cedeafbf247a1907ca36e85bc47bfad331639d"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Fri Jul 31 12:58:46 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 30 20:18:24 2026 -0700"
      },
      "message": "Fix starlark linker errors for clean builds\n\nbuild/gen.py would set CXXFLAGS when building cargo tests, which would\nallow cxx to use C++20 features. Incremental builds would then reuse\nthat, thus ensuring string_view support was added, even though it was\nnever specified in Cargo.toml.\n\nBug: 528225104\nChange-Id: Ia55e2b7aaa8729cd268193451ed126576a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24600\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "e1cedeafbf247a1907ca36e85bc47bfad331639d",
      "tree": "3282c4882a1571f78c9bcb5b2f208a38e5999961",
      "parents": [
        "46c99961442ae4b4a5fb021590aebba9d0e9b7cd"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Fri Jul 31 12:15:34 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 30 19:47:22 2026 -0700"
      },
      "message": "Fix occasional crashes when running cargo ffi tests in parallel.\n\ntest_with_scope would previously spin up one scheduler per\ntest_with_scope, and destroy them upon test completion.\n\nThis meant that sometimes, g_scheduler would be set to null after one\ntest completes, causing another to fail.\n\nBug: 528225104\nChange-Id: I89839a0ac5968281d33d72f0dd32fd326a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24560\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "46c99961442ae4b4a5fb021590aebba9d0e9b7cd",
      "tree": "a26d88326eb44df9699b0370feaeeffdf880834d",
      "parents": [
        "4e0dd78e8f0e45fa2b50ae47ab3d3aaf91572e1e"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 29 21:38:37 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 30 19:29:18 2026 -0700"
      },
      "message": "Remove several unsafes from the FFI bridge code.\n\nChange-Id: I554b0bef5869032a70997e2c5af1a37f6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24540\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "4e0dd78e8f0e45fa2b50ae47ab3d3aaf91572e1e",
      "tree": "cbaaa8234f9e24441ba83e7b3fccdb04bba14f62",
      "parents": [
        "4a060c55dcc5380837a8684949b74400e929b85e"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Jul 06 10:45:17 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 30 18:58:36 2026 -0700"
      },
      "message": "Support converting starlark::Error to gn\u0027s Err type.\n\nBug: 528225104\nChange-Id: I00102e3b74f9dcc4f6bf55692e4a8d716a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24400\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Richard Wang \u003crichardwa@google.com\u003e\n"
    },
    {
      "commit": "4a060c55dcc5380837a8684949b74400e929b85e",
      "tree": "c836838c2a5d344648589cb1e3eb8fbd4fa61f96",
      "parents": [
        "666912b6551e692c657569850f1a76e9bde062f6"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Thu Jul 30 19:30:39 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 30 06:33:12 2026 -0700"
      },
      "message": "Support source-relative paths for script_executable\n\nThis is derived from\nhttps://crrev.com/c/8160801/comment/bfc1cbdb_33949900/\n\nSupport source-relative paths starting with \"//\" for script_executable\nin the dotfile (.gn) and via the --script-executable command line flag.\n\nWhen specified with \"//\", the path is resolved relative to the source\nroot and subsequently converted into a build-dir-relative path in\nBuildSettings::SetPythonPath. This avoids hardcoding relative paths from\nthe build directory.\n\nBug: 537680330\nChange-Id: I64392fd11f021ec093d6aa3f9a3eb63d0c7223fd\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24500\nReviewed-by: Sylvain Defresne \u003csdefresne@chromium.org\u003e\nCommit-Queue: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "666912b6551e692c657569850f1a76e9bde062f6",
      "tree": "2a5da74cf7c5cf6a2a9f1bafe72f602d30691653",
      "parents": [
        "4c57ddcb664d8e432c4edbd864017e1d1cee709d"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 30 15:12:42 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 29 23:00:30 2026 -0700"
      },
      "message": "Fix UB in ffi scope function.\n\nGetCurrentScopeValues returns a map from identifiers to *copies* of\nvalues.\nSo when we take a pointer to them in ffi/scope.cc, when the function\nends, those pointers dangle.\n\nChange-Id: I6169e03d89151f1530fda54a143a2aef6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24480\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "4c57ddcb664d8e432c4edbd864017e1d1cee709d",
      "tree": "7ef5adaf310b9f58563a98e36bd491eaf41873a2",
      "parents": [
        "163c9b59b9cbf8b89349e64011f1f180eff76fb2"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 30 13:57:13 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 29 21:58:16 2026 -0700"
      },
      "message": "Clarify \"it\" in error messages.\n\nAlso add a to_string method on Err, allowing us to write proper unit\ntests on the actual error string returned.\n\nChange-Id: I0b7c3ecfa4220bd4a29ac43e8c0928be6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24460\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Richard Wang \u003crichardwa@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "163c9b59b9cbf8b89349e64011f1f180eff76fb2",
      "tree": "7e42477f43e582bb14ad95ea7d91adc15d90f146",
      "parents": [
        "2bf753aa4d9c888b2c9cc95ab4758bbc04185dd7"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 29 17:15:36 2026 -0700"
      },
      "message": "Support builtin provider types.\n\nSpecifically, we add support here for DefaultInfo,\nGnSubstititutionsInfo, and GnInputsInfo.\n\nThe latter two are only accessible through\nload(\"//builtins:providers.bzl\")\n\nBug: 528225104\nChange-Id: I22a18e7f6626c5a882b31cba45ea34ba6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24081\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Philipp Wollermann \u003cphilwo@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "2bf753aa4d9c888b2c9cc95ab4758bbc04185dd7",
      "tree": "ad5d9f693d52914dc7ea70a524edf0f718e2daff",
      "parents": [
        "2998394993e31023c4a476c2344eab0e5fe00ef6"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 29 11:48:44 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 29 03:31:59 2026 -0700"
      },
      "message": "Add --starlark to build/gen.py.\n\nWhen set, it will build GN with starlark enabled.\nFor now, since GN does not support integration with starlark, it simply\nenables the starlark tests.\n\nBug: 528225104\nChange-Id: I80a0391d8046e18f79195a50170a6bbd6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24420\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "2998394993e31023c4a476c2344eab0e5fe00ef6",
      "tree": "bd9346292c6b1327a43ef1a51907a4cb21bfa816",
      "parents": [
        "de084187cbc154d9ef5e03d833bdb5ab49ee0f65"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 22 13:40:26 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Jul 28 19:43:25 2026 -0700"
      },
      "message": "Add label and toolchain method to TargetRef trait.\n\nThis requires a significant refactor to testutils, so while I was at it\nI refactored the API of testutils to make it much cleaner.\n\nIn particular, we now store Rc\u003cSession\u003e instead of Session, allowing us\nto persist a session across multiple steps of evaluation, just like real\nscenarios (rule definition -\u003e rule impl).\n\nBug: 528225104\nChange-Id: Ibe57f137774a85477f889fff09f499436a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24221\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "de084187cbc154d9ef5e03d833bdb5ab49ee0f65",
      "tree": "fd0b87bcc5b7f285bdd5ff4f36b5c9ccd6cfcba6",
      "parents": [
        "bc381971540027e03389b31b974ea06e8e364435"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 29 09:55:15 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Jul 28 18:08:31 2026 -0700"
      },
      "message": "Run tools/run_formatter.sh\n\nChange-Id: I0138797df213b36a3c8bacd2203ca4026a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24380\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "bc381971540027e03389b31b974ea06e8e364435",
      "tree": "34d18452c72a812d4265bdeeeed3875b1abdec20",
      "parents": [
        "33a6b47111c7649d42d51534a9adeaf1cf0d948f"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 22 15:11:58 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Jul 28 17:26:39 2026 -0700"
      },
      "message": "Implement check_includes_strict parameter\n\nThis parameter allows target-level strict include checking.\nWhen enabled on a target:\n1. Public headers of this target cannot include its private deps.\n2. Dependents of this target cannot transitively include its public_deps (they must depend on them directly).\n3. Public headers of this target cannot include private headers.\n\nBug: 500845363\nChange-Id: I1000f3abcd0853c83c2a1232efa97f206a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24240\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "33a6b47111c7649d42d51534a9adeaf1cf0d948f",
      "tree": "87264ae4de059887928b8bb029bbf8d99e5f840f",
      "parents": [
        "fc56c7a0d0917f2b668714408ec22bd05736a9f5"
      ],
      "author": {
        "name": "Zgroza Klimek",
        "email": "zgroza@chromium.org",
        "time": "Fri Jul 24 16:01:17 2026 +0200"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Jul 28 07:33:22 2026 -0700"
      },
      "message": "Add option to supply multiple comma-separated types in --type\n\nThis refactors --type parsing in commands.cc to accept a comma-separated\nlist of target types.\n\nThe is needed to efficiently filter test targets in `autotest.py` script\nin Chromium: http://crrev.com/c/8139431\n\nBug: 534608615\nChange-Id: Iea625b69218583734b4ea4786788168e6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24360\nCommit-Queue: Zgroza (Luke) Klimek \u003czgroza@chromium.org\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "fc56c7a0d0917f2b668714408ec22bd05736a9f5",
      "tree": "2da6a8a579f9f60bec9d23fc413c327c5f647683",
      "parents": [
        "641ace93dd9560e75e7add0d08f77b446fbb3b78"
      ],
      "author": {
        "name": "Zgroza Klimek",
        "email": "zgroza@chromium.org",
        "time": "Fri Jul 24 13:08:21 2026 +0200"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Jul 28 06:43:52 2026 -0700"
      },
      "message": "Add support for remaining target types in gn --type\n\nSpecifically, this adds the ability to filter targets by:\n- rust_library\n- rust_proc_macro\n- bundle_data\n- create_bundle\n- generated_file\n\nThe is needed to efficiently list elements with the type rust_library\nin `autotest.py` script in Chromium: http://crrev.com/c/8143145\n\nBug: 534608615\nChange-Id: I148f78484c495c995d2373a7f51114676a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24340\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\nCommit-Queue: Andrew Grieve \u003cagrieve@google.com\u003e\n"
    },
    {
      "commit": "641ace93dd9560e75e7add0d08f77b446fbb3b78",
      "tree": "90329c7841d68716991cf2c247bcd9906c884c91",
      "parents": [
        "270735aad0feec26c61b107c053a84bfcf230f62"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 22 23:24:35 2026 -0700"
      },
      "message": "Create starlark rule crate\n\nBug: 528225104\nChange-Id: I949721873d6fe3ad7af42b8ff98bd00c6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24201\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Philipp Wollermann \u003cphilwo@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "270735aad0feec26c61b107c053a84bfcf230f62",
      "tree": "b9081bee4b42a80661a76f7de595f5a7c807dc2a",
      "parents": [
        "27a549cc1f83b223cf07e152f3e36681d5dd68fd"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 23 09:52:30 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 22 22:37:53 2026 -0700"
      },
      "message": "Simplify provider types to require freezing at the compiler level.\n\nBug: 528225104\nChange-Id: I833fe5911ebda3e7de85a27fd55dd0b56a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24280\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "27a549cc1f83b223cf07e152f3e36681d5dd68fd",
      "tree": "d7fa59505187443087b8912e9b964378391b5354",
      "parents": [
        "2de5327bfac4c9bcde7a07960d6ae344b13075b2"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 22 08:52:09 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Tue Jul 21 22:51:40 2026 -0700"
      },
      "message": "Make EvalContext have interior mutability.\n\nThis significantly simplifies the API to use EvalContext, and means that\nwe can get rid of several unsafe APIs.\n\nWe still use UnsafeCell internally for EvalContext, but since we removed\nthe sync + send traits from EvalContext, EvalContext objects are now\nguarunteed by the compiler to be accessed single-threaded, so we don\u0027t need to\nworry about UnsafeCell actually being unsafe.\n\nBug: 528225104\nChange-Id: I397b6f108728267d33cf5d000ed6c9f66a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24220\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "2de5327bfac4c9bcde7a07960d6ae344b13075b2",
      "tree": "e8cb79cdef3a44a2c837145bb77dec037b34eae3",
      "parents": [
        "62147cf8332f116b25fdd527c6ad80cbec851d47"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 20 19:56:09 2026 -0700"
      },
      "message": "Rework API to create targets.\n\nTargets creation will now follow the same API regardless of whether the\ntarget is a native GN target or a starlark target.\n\nThis requires us to pass a scope-like object to GN.\n\nBug: 528225104\nChange-Id: I8bec09858d2d500dfa9e5e9b1ed2efad6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24180\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "62147cf8332f116b25fdd527c6ad80cbec851d47",
      "tree": "1a028ee5d4d721a4b040ce60a6b0712be5cc6247",
      "parents": [
        "22c9eba8c5262cb4d2d08fe9fe258b1bde78cfc9"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Mon Jul 20 14:18:07 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 20 19:41:12 2026 -0700"
      },
      "message": "Fix lint errors\n\nChange-Id: I241999b7049292aa0b9f858603eed2706a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24160\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "22c9eba8c5262cb4d2d08fe9fe258b1bde78cfc9",
      "tree": "699e38ee14847e20d0c49859df61b0a4bfd7919b",
      "parents": [
        "566d29033b5fd7c73e5e8bbcf7ab794194df68bd"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Jul 19 16:24:53 2026 -0700"
      },
      "message": "Add support for creating ctx.attr/files/file\n\nBug: 528225104\nChange-Id: I1840043a1a2c80ade2162e197537756e6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24080\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "566d29033b5fd7c73e5e8bbcf7ab794194df68bd",
      "tree": "41eafe3b00d23022daa9a2668d097d6e8f37f29e",
      "parents": [
        "e39e7711d043a212de384b8f5f46ea8678416306"
      ],
      "author": {
        "name": "Tomasz Śniatowski",
        "email": "tomasz.sniatowski@xperi.com",
        "time": "Tue Jul 14 12:26:23 2026 +0200"
      },
      "committer": {
        "name": "Andrew Grieve",
        "email": "agrieve@google.com",
        "time": "Fri Jul 17 07:12:07 2026 -0700"
      },
      "message": "Allow testonly validations on non-testonly targets\n\nIt should be OK to have a testonly validation validate a non-testonly\ntarget. For example, a validation may itself need to depend on testonly\ntargets, and this does not affect the non-testonly target getting\nvalidated: it still has no testonly code included in it.\n\nBug: 484745924\nChange-Id: Ibe678cab77f01f72b77f0a8f1e0844f9e53b2b26\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24000\nReviewed-by: Tomasz Śniatowski \u003ctomasz.sniatowski@xperi.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n"
    },
    {
      "commit": "e39e7711d043a212de384b8f5f46ea8678416306",
      "tree": "a9a31aafe9e8187d66708d129efd721d21cc2732",
      "parents": [
        "1622487984026220eb28741f63a14856a6f5c7c5"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Thu Jul 16 17:10:27 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 16 06:36:17 2026 -0700"
      },
      "message": "Fix and improve metadata collection help documentation\n\n- Fix postorder traversal output order in metadata examples to reflect actual behavior\n- Fix typo: \u0027from dependents\u0027 -\u003e \u0027from dependencies\u0027\n- Fix typo: \u0027walk key\u0027 -\u003e \u0027data key\u0027 when describing data aggregation\n- Clarify walk_keys barrier mechanism in help text\n- Regenerate docs/reference.md via update_reference.sh\n\nBug: 535044365\nChange-Id: I1ff66afe755003f5d37f9874c05f07677a8eb051\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24120\nCommit-Queue: Andrew Grieve \u003cagrieve@google.com\u003e\nReviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n"
    },
    {
      "commit": "1622487984026220eb28741f63a14856a6f5c7c5",
      "tree": "938d71213c2948c96ca404f725f950b88615257d",
      "parents": [
        "22a4537489e8af55dc8a215538ebc1e02f6d94e3"
      ],
      "author": {
        "name": "Takuto Ikuta",
        "email": "tikuta@google.com",
        "time": "Thu Jul 16 17:20:25 2026 +0900"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 16 01:43:11 2026 -0700"
      },
      "message": "Add detailed failure messages to command_format_unittest\n\nPrint file paths, src_dir, and current_dir when base::ReadFileToString\nor base::SetCurrentDirectory fails in command_format_unittest.cc.\n\nThis is to show more information when it failed like\nhttps://ci.chromium.org/ui/p/gn/builders/try/linux/b8676135271891974161/overview\n\nChange-Id: Ic8dfccedc072d0e129145cf4edde965888d549ea\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24140\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nCommit-Queue: Takuto Ikuta \u003ctikuta@google.com\u003e\nReviewed-by: Sylvain Defresne \u003csdefresne@chromium.org\u003e\n"
    },
    {
      "commit": "22a4537489e8af55dc8a215538ebc1e02f6d94e3",
      "tree": "a9e0357302d21876e9b051bad7c2df083a574fe4",
      "parents": [
        "9cd4604a3bf6b7aee158fa48dc4135e3078d7d1e"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Thu Jul 16 00:22:22 2026 -0700"
      },
      "message": "Fix failing lint errors\n\nBug: 528225104\nChange-Id: Ifa7c4c4f9061a81d02f55a1e07de56e56a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24100\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "9cd4604a3bf6b7aee158fa48dc4135e3078d7d1e",
      "tree": "28c96caa426b50bbd3307fa57095acb855ba98d7",
      "parents": [
        "a63029b1024012eaadd216f10f5abf40d17a8d20"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 16 13:51:33 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 15 21:21:54 2026 -0700"
      },
      "message": "Run formatter.\n\nIt appears that an update to clang_format has broken CI.\n\nChange-Id: I7e5e5006a98c5b99c5577eead6852a776a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24060\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    },
    {
      "commit": "a63029b1024012eaadd216f10f5abf40d17a8d20",
      "tree": "fbd55856251fc4d316eb522cdbb1bcce9c06465e",
      "parents": [
        "80f5c8a497fa2fa909e0c355ed2a424ca06fbabe"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Jul 15 21:12:58 2026 -0700"
      },
      "message": "Create starlark providers crate\n\nBug: 528225104\nChange-Id: I6691d035e7f5b43b48a32debb3f4e8c76a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24020\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\n"
    },
    {
      "commit": "80f5c8a497fa2fa909e0c355ed2a424ca06fbabe",
      "tree": "a65de1e8fafc0b1130037c70bcc69fc6b8197211",
      "parents": [
        "28b0782b5178d3f072a8d5abbc40ac371cc2b5a2"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Jul 15 21:12:36 2026 -0700"
      },
      "message": "Create starlark args crate\n\nBug: 528225104\nChange-Id: I1ea2fa80c8b20d8af4426655b40b2a166a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23980\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Philipp Wollermann \u003cphilwo@chromium.org\u003e\n"
    },
    {
      "commit": "28b0782b5178d3f072a8d5abbc40ac371cc2b5a2",
      "tree": "001831bf3eb348c185022b68b5bfd7eab8e22646",
      "parents": [
        "d8ce0ac50ac489314dd3b65ef39b527eabb3aeed"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Jul 15 20:56:12 2026 -0700"
      },
      "message": "Refactor depset and testutils to do a few things:\n\n* Allow use of make_file and depset functions from other tests\n* Allow use of `depset` function in real production code\n* Stop running doctests that don\u0027t exist\n* Remove deref to starlark::Assert, so we don\u0027t accidentally mess with\n  invariants maintained by testutils (eg. setup_eval doesn\u0027t work\n  because it overwrites the context).\n\nBug: 528225104\nChange-Id: I2723c59ddc0497a73c70dd0ae05430656a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23960\nReviewed-by: Philipp Wollermann \u003cphilwo@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "d8ce0ac50ac489314dd3b65ef39b527eabb3aeed",
      "tree": "63b4ce161b29df568c6c2d5b21c4947be8c3d167",
      "parents": [
        "5ae53f3cdc589ce27419c4f84734d1abf2f0ac66"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 15 04:58:35 2026 -0700"
      },
      "message": "Implement GnValue FFI and starlark/rust conversions\n\nBug: 528225104\nChange-Id: Ib0c5c1c764ad6bb40f3127ea8daa1d346a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23883\nReviewed-by: Richard Wang \u003crichardwa@google.com\u003e\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "5ae53f3cdc589ce27419c4f84734d1abf2f0ac66",
      "tree": "c5d9390fac5b8bb681f0d80e8c2058585b56f01b",
      "parents": [
        "10d3ab4387f7f4ad0d3fb9d626218a6e09e71d86"
      ],
      "author": {
        "name": "BogDan Vatra",
        "email": "bogdan@kde.org",
        "time": "Wed Jul 15 07:20:16 2026 +0300"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 15 02:41:22 2026 -0700"
      },
      "message": "Enable build and usage on Sparc64\n\nChange-Id: Iae8d0cfd110f6a99a01d53d398f86de0871b4ed3\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/24040\nReviewed-by: Sylvain Defresne \u003csdefresne@chromium.org\u003e\nCommit-Queue: David Turner \u003cdigit@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n"
    },
    {
      "commit": "10d3ab4387f7f4ad0d3fb9d626218a6e09e71d86",
      "tree": "300462161ec8067197d9d180e9169b326acbf053",
      "parents": [
        "a7f3a1a7f0afe424345558c73150a6b0dd3d2b69"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 08 12:52:12 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 13 22:10:01 2026 -0700"
      },
      "message": "Replace OutputFile with StringAtom under the hood\n\nThe purpose of this is to allow OutputFile to be cheaply copied.\n\nBug: 491925153\nChange-Id: I4d42b77f31a0608f978712143d0c6e746a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23921\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "a7f3a1a7f0afe424345558c73150a6b0dd3d2b69",
      "tree": "86e4ca22fe178de12775466283ec948f9a052fbc",
      "parents": [
        "35296c89ff8a835de3946524f2901965bcaec6fd"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Wed Jul 08 12:52:12 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 13 17:25:51 2026 -0700"
      },
      "message": "Remove all mutations of OutputFile objects.\n\nThe purpose of this is to allow OutputFile to store a StringAtom, which\nrequires it to be immutable. Doing so would allow us to cheaply copy\nOutputFile objects.\n\nBug: 491925153\nChange-Id: I5c535d2d36427a9918577cc0ae5fd6246a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23920\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "35296c89ff8a835de3946524f2901965bcaec6fd",
      "tree": "244776772e2bb4e104022bf808eea93cf761bdca",
      "parents": [
        "d9e3c0c993ac222b88992007a69692d929ba06f0"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 13 17:10:20 2026 -0700"
      },
      "message": "Create starlark depset crate\n\nBug: 528225104\nChange-Id: Iee012057ff2a7fe5cc3a014a9abd52966a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23802\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Philipp Wollermann \u003cphilwo@google.com\u003e\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\n"
    },
    {
      "commit": "d9e3c0c993ac222b88992007a69692d929ba06f0",
      "tree": "fbaa486b0a6de8fafcc2ce44ff9d82d0bb776a19",
      "parents": [
        "1d866be900d27c6db5326794ffe9cfb2e45e3710"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 13 17:10:08 2026 -0700"
      },
      "message": "Create starlark loader crate\n\nBug: 528225104\nChange-Id: Ib96b3251e9d048deb65c4a29320b29f66a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23801\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Philipp Wollermann \u003cphilwo@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "1d866be900d27c6db5326794ffe9cfb2e45e3710",
      "tree": "c00bb58954ad12281ce9c91d6c89ac2224892b90",
      "parents": [
        "bbfe0f948f4ac84f671acdf6ab008a6ce1bfb257"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 13 16:56:54 2026 -0700"
      },
      "message": "Support converting attr to starlark values\n\nBug: 528225104\nChange-Id: I09b8cb5762f99fd217ffc951905328246a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23820\nReviewed-by: Cole Faust \u003ccolefaust@google.com\u003e\nReviewed-by: Philipp Wollermann \u003cphilwo@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\nReviewed-by: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "bbfe0f948f4ac84f671acdf6ab008a6ce1bfb257",
      "tree": "1e95b1b7101a6955c6eee794af2b4be6d626e518",
      "parents": [
        "868533076321adfebe4a73668847f659a8a9fab2"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 09 12:39:25 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Mon Jul 13 04:49:00 2026 -0700"
      },
      "message": "Refactor filesystem utils to clean up the code and avoid OutputFile mutation\n\nThe purpose of this is to allow OutputFile to store a StringAtom, which\nrequires it to be immutable. Doing so would allow us to cheaply copy\nOutputFile objects.\n\n* Rename Get*AsSourceDir to overloaded GetSourceDir.\n* Split GetBuildDirAsOutputFile, GetSubBuildDirAsOutputFile, and GetBuildDirForTargetAsOutputFile into:\n  * GetBuildDir overloads returning std::string.\n  * GetOutputFile overloads that create an outputfile by joining arguments together, avoiding mutation of created OutputFiles\n* Convert Target and Scope parameters in GetSourceDir/GetBuildDir/GetOutputFile from pointers to references to ensure null-safety.\n* Update all call sites across target writers and helper functions to use the new reference-based and overloaded APIs.\n\nBug: 491925153\nChange-Id: I36e7f46e0f0bbef961d9ea444832ee866a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23922\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "868533076321adfebe4a73668847f659a8a9fab2",
      "tree": "6881675ac115834fbf0a3067f75b7159a84c5eb5",
      "parents": [
        "d2f537b1e397daa13e02a8085feb32f5ad7c5dec"
      ],
      "author": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Fri Jun 05 14:22:05 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Sun Jul 12 22:18:13 2026 -0700"
      },
      "message": "Keep cxx.h up to date\n\nBug: 528225104\nChange-Id: I0fb75053057ac7b01d4973b5f49379166a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23880\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "d2f537b1e397daa13e02a8085feb32f5ad7c5dec",
      "tree": "a659cb254f9d499306e632c22d8a70e7c81b40ff",
      "parents": [
        "0e6f876eecf17830b8dd9f1db008aaf3a239966e"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 09 13:26:28 2026 +1000"
      },
      "committer": {
        "name": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
        "time": "Wed Jul 08 21:23:44 2026 -0700"
      },
      "message": "Fix command_format_unittest.cc out-of-tree builds.\n\nThe format unittests were relying on the source root being exactly one\ndirectory level up from the executable directory. This assumption fails\nwhen building with a custom or nested output directory, such as\nout/Default, or when building out-of-tree (like in /tmp/gn-release).\n\nTo resolve this robustly:\n1. build/gen.py now writes the absolute path of the repository root\n   (REPO_ROOT) to source_root.txt in the build directory.\n2. GetFormatTestDataDir() in src/gn/command_format_unittest.cc reads\n   source_root.txt to dynamically resolve the repository root and sets\n   the CWD to that location. If the file cannot be read, it fails\n   immediately via CHECK.\n\nBug: None\nChange-Id: I93d9a1642720ce912fd767e76eb414016a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23944\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n"
    },
    {
      "commit": "0e6f876eecf17830b8dd9f1db008aaf3a239966e",
      "tree": "38eb31af3334f4a70fe994ce31b3921e829daf07",
      "parents": [
        "b02bd6f4190a78abc3958c0b682cb004ca8c6e95"
      ],
      "author": {
        "name": "msta",
        "email": "msta@google.com",
        "time": "Thu Jul 09 13:49:59 2026 +1000"
      },
      "committer": {
        "name": "Matt Stark",
        "email": "msta@google.com",
        "time": "Wed Jul 08 21:12:45 2026 -0700"
      },
      "message": "Fix update_reference.sh to work with a custom output directory.\n\nChange-Id: I6af731713efdc7e3da3fda4aa23062db6a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23923\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n"
    }
  ],
  "next": "b02bd6f4190a78abc3958c0b682cb004ca8c6e95"
}
