)]}'
{
  "commit": "16300c749487c7720eac7d7253bf82f5b8f68afe",
  "tree": "a14b4b806ad9246a0947d2922432ce0471562382",
  "parents": [
    "60e831405d6b74450cb52a97df8881ca67f60373"
  ],
  "author": {
    "name": "David Zbarsky",
    "email": "dzbarsky@gmail.com",
    "time": "Mon Sep 14 11:34:11 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Mon Sep 14 11:36:01 2026 -0700"
  },
  "message": "Intern unresolved symlink targets (#31122)\n\n`UnresolvedSymlinkAction` interns its destination string in the constructor. Actions with the same destination share string storage without changing the raw target value, action key, or deferred `PathFragment` conversion.\n\nOne matched pair of partial monorepo analyses retained 3.27 million fewer strings and backing arrays, accounting for about 664 MB in the class histogram. Reported after-GC heap was 676 MB lower; analysis time and peak RSS were essentially unchanged. This is a single comparison, not a repeatability claim.\n\nValidation on upstream master: all six `UnresolvedSymlinkActionTest` cases pass, covering action keys, symlink creation, and serialization.\n\nRELNOTES: None\n\n-zbarskybot\n\nCloses #31122\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/bazel/pull/31122 from dzbarsky:codex/symlink-targets-upstream 9f444949636d5a953d7ad10c3bc8f978f79988ce\nPiperOrigin-RevId: 981263379\nChange-Id: I0e825a11a001568b5c19e83b81c8e70959bdc905\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c0d81f766d506c51f87605ff66c5d29e14bc973d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/UnresolvedSymlinkAction.java",
      "new_id": "43ab7703c966d65f7886ecbda0b0e5cc41c75dbc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/starlark/UnresolvedSymlinkAction.java"
    }
  ]
}
