)]}'
{
  "commit": "266085205d0c4b085a3840c67e3c6204cd5f8b4b",
  "tree": "f45bdd4515623d8f70a1370344933d66227c1535",
  "parents": [
    "f2595883805ef6156b22899894e62e3673f456ce"
  ],
  "author": {
    "name": "Adam Cozzette",
    "email": "adamc@aspect.build",
    "time": "Thu Jul 16 21:29:47 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 16 21:29:47 2026 -0700"
  },
  "message": "feat: use bazel-lib run_binary\u0027s native stdout/stderr/exit_code_out/s… (#2921)\n\n…ilent_on_success support\n\nBump bazel_lib to 3.5.0, which added\nstdout/stderr/exit_code_out/silent_on_success attributes to run_binary\n(via its spawn_binary wrapper toolchain). js_run_binary now passes these\nstraight through instead of reimplementing capture itself via\nJS_BINARY__* env vars, which lets us delete the corresponding\nbuffering/capture logic from the js_binary launcher script. chdir is\nleft untouched since it has bindir-relative semantics that don\u0027t map\ndirectly onto run_binary\u0027s execroot-relative chdir attribute.\n\nOne thing to note is that these features all depend on `spawn_binary`,\nwhich is a prebuilt Go executable provided by bazel-lib. I think this is\nOK because capturing output is inevitably going to require some kind of\nwrapper, and `spawn_binary` is simpler and cheaper than bash. Getting\nthis support out of our wrapper script should help us move toward\nremoving our reliance on bash.\n\n---\n\n### Changes are visible to end-users: no\n\n### Test plan\n\n- Covered by existing test cases\n\n---------\n\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2b47c33b29b18bcf1f2c34dbb8cb8ecb25300478",
      "old_mode": 33188,
      "old_path": "MODULE.bazel",
      "new_id": "317af3c9b8cbbf6cb702031f813c05b1abf39dd0",
      "new_mode": 33188,
      "new_path": "MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "932e4cc4dd19cea571365a6740a04a7f9bbbd20f",
      "old_mode": 33188,
      "old_path": "js/private/js_binary.sh.tpl",
      "new_id": "82f9286c90aa56ec4fe0dccf3f8a7e00a493fc11",
      "new_mode": 33188,
      "new_path": "js/private/js_binary.sh.tpl"
    },
    {
      "type": "modify",
      "old_id": "448170c8fe7fbdd95fb2a0477ab4f367d7f3fc4c",
      "old_mode": 33188,
      "old_path": "js/private/js_run_binary.bzl",
      "new_id": "65b3e94350955bafc2e6e8b98362701ee6444584",
      "new_mode": 33188,
      "new_path": "js/private/js_run_binary.bzl"
    },
    {
      "type": "modify",
      "old_id": "e50f7a4178ccf74e6e8e31b5617ee5a8e18f6424",
      "old_mode": 33188,
      "old_path": "js/private/test/snapshots/launcher.sh",
      "new_id": "e382710e46bd87e68815d8e187f3ef469226ad51",
      "new_mode": 33188,
      "new_path": "js/private/test/snapshots/launcher.sh"
    }
  ]
}
