)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "63b4b22cf9f9f2b3a047648dee103ac5918f2fee",
      "old_mode": 33188,
      "old_path": "src/gn/ffi/bridge.cc",
      "new_id": "5b94043abc1bd8238b0d114c9e769f75241aa112",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/bridge.cc"
    },
    {
      "type": "modify",
      "old_id": "b564226dc05526031a164f25866fb11adb5d1962",
      "old_mode": 33188,
      "old_path": "src/gn/ffi/scope.cc",
      "new_id": "6b3ed4dd99e52b58f63a053b8ddd0168589a6b5a",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/scope.cc"
    },
    {
      "type": "modify",
      "old_id": "fd018b016b213bba85ca91e50a5dcaedb6431182",
      "old_mode": 33188,
      "old_path": "src/gn/ffi/scope.h",
      "new_id": "c62af067a30987b13cca700881c3030f2acb6685",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/scope.h"
    },
    {
      "type": "modify",
      "old_id": "337265ae635acae0a2fbc902e71e7bf6a01cdec8",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/bridge.rs",
      "new_id": "396ed4279aac1ae57280a61479bba3c459844a8f",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/bridge.rs"
    },
    {
      "type": "modify",
      "old_id": "532346e42dad123dce20ef3ce83d10690b45c188",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/scope.rs",
      "new_id": "09d2682cc4b3144faf8fd67535ed73ea7a4f3fbc",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/scope.rs"
    },
    {
      "type": "modify",
      "old_id": "dd970e459dd206c2dae3ae803091bd26781f46d8",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/value.rs",
      "new_id": "6ef19f0c550fb76e8d0454f836a87810ec266e2e",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/value.rs"
    }
  ]
}
