)]}'
{
  "commit": "127c7783a8344ff5908ac679c92e632be556c3ad",
  "tree": "4d818b82480b2703ec1373cb22c748565123a0f0",
  "parents": [
    "60609a39ee5040513ec16671258ace4382bffcee"
  ],
  "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 06 23:41:33 2026 -0700"
  },
  "message": "Switch FFI method to cxxbridge, and add tests to ffi crate.\n\ncxxbridge gives us several valuable features:\n* Conversions over the FFI layer are type-checked\n* Avoid unsafe\n* Code is much more succinct and very easy to read\n\nBug: 528225104\nChange-Id: I931126d07d8c435ee9e9e6cfc74f80c76a6a6964\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/23680\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Matt Stark \u003cmsta@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ba6f170da796bc9f38d2b4ab37ce7b53a528a4a4",
      "old_mode": 33261,
      "old_path": "build/gen.py",
      "new_id": "6f13c8c1a10de8cd375bf9ef583ddaf97f5eb1f1",
      "new_mode": 33261,
      "new_path": "build/gen.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6adb82270c464da88b0f843b1bdb6dae25eb44b5",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/.gitignore"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "81988fccaa0eaf0c5e9d81fdecf4ca32b46756b6",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/bridge.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d56352bacddbc50c5df01f080edbb52c4b43e233",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/bridge.h"
    },
    {
      "type": "delete",
      "old_id": "3818d4c2972f2717b1bdb447210ca0b18dfe377a",
      "old_mode": 33188,
      "old_path": "src/gn/ffi/label.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "5437ebaf45bd3d5b6be7a5a5625cc51f8e021d7f",
      "old_mode": 33188,
      "old_path": "src/gn/ffi/output_file.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "f0e688bbc12f035fd23f1dceebdf37d6f04c3c57",
      "old_mode": 33188,
      "old_path": "src/gn/ffi/settings.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d101eadffb83d649f64a887345ffd0d5aee2679e",
      "new_mode": 33188,
      "new_path": "src/gn/ffi/test_with_scope.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "818fd108759fb83d4771ad6d43ea682741030aad",
      "new_mode": 33261,
      "new_path": "src/gn/ffi/update_bridge.sh"
    },
    {
      "type": "modify",
      "old_id": "0444f96f720ab9919121f82bbcda92bcdf6daeaf",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/Cargo.lock",
      "new_id": "dc75e266413534c2724dcd7a3d631cd3ac8d50b8",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/Cargo.lock"
    },
    {
      "type": "modify",
      "old_id": "dc9b615c5d2a09628858636a49b5370155887171",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/Cargo.toml",
      "new_id": "45a0c664b8ab5c25cf3c81a4e773dca09e75f3a3",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/Cargo.toml"
    },
    {
      "type": "modify",
      "old_id": "11ab9084b2bdcf3bda7e3b3595ae5b81cd68a27f",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/Cargo.toml",
      "new_id": "c740bf397348f5624018c69c6885ff4693564b9d",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/Cargo.toml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8898d2a758be8c1d127364c03e7a168bf9fbef74",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/bridge.rs"
    },
    {
      "type": "modify",
      "old_id": "df3c42b60b2e3b4feeee245be5021442c74dd1b2",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/label.rs",
      "new_id": "560377260e98bc786f8ddf35476cef25142dcd28",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/label.rs"
    },
    {
      "type": "modify",
      "old_id": "cfb5f72c3a7467868af5de39649987635fda632c",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/lib.rs",
      "new_id": "d9a9fdaa25967979b9317e2aa04fd8ad8ce07571",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/lib.rs"
    },
    {
      "type": "delete",
      "old_id": "310310d90c02e1cfa6d74684074caa2da9451078",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/opaque.rs",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "60d2cffeeecd6ff7a39bed6cd71ee2659ec9d44e",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/output_file.rs",
      "new_id": "fa05aac55120dd2ca5a266d27cc1afe15f961201",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/output_file.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8e4c85a843477554cbdaa964ffe9c820cac65bf1",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/scope.rs"
    },
    {
      "type": "modify",
      "old_id": "2eae88eb271c166b53ffc45da4d4540da8b5c5ed",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/ffi/src/settings.rs",
      "new_id": "c0f0969a7a281c5447d0554674fe0e1c50945e83",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/settings.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b3112476a053ffccef63b2222a7bb8aadd9e77f4",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/ffi/src/test_with_scope.rs"
    },
    {
      "type": "modify",
      "old_id": "0bb9752b90b0059fd1d3e221d64ecf76e91ccb76",
      "old_mode": 33188,
      "old_path": "src/gn/starlark/crates/testutils/src/eval_context.rs",
      "new_id": "b5707e16a9beefe38e858a8026a1d66151f742c4",
      "new_mode": 33188,
      "new_path": "src/gn/starlark/crates/testutils/src/eval_context.rs"
    }
  ]
}
