)]}'
{
  "commit": "54c3bdc8ad643f3d8692cfd9d738ce2aed935b3f",
  "tree": "87f363899ce2d7523b9bac4fd08851304acf1de7",
  "parents": [
    "1a751916c6d506ba49b318d38675184191647bf8"
  ],
  "author": {
    "name": "Kyrylo Tkachov",
    "email": "ktkachov@nvidia.com",
    "time": "Mon Jul 06 02:42:14 2026 -0700"
  },
  "committer": {
    "name": "Kyrylo Tkachov",
    "email": "ktkachov@nvidia.com",
    "time": "Tue Aug 04 19:07:07 2026 +0200"
  },
  "message": "Run the bootstrap object comparison in parallel\n\nThe stage 2 and stage 3 object comparison runs one command per object in a\nserial shell loop.  Everything after it waits while an otherwise idle machine\ncompares thousands of objects.\n\nGenerate one make target per object and run the comparisons through $(MAKE),\nso they share the original jobserver.  Keep the generated makefile and result\nshards invocation-specific, clean them on normal and signal exits, and sort\nthe shards before creating the traditional .bad_compare diagnostic.  Files in\nthe exclusion list still only warn.  Comparator statuses other than zero or\none now report an operational error instead of being treated as equal.\n\nThe tail-based fallback for cmp implementations without byte skipping used\nfixed temporary names.  Give those files process-specific names, clean them\nwith a trap, and preserve the same status contract for tail failures and\nsignals.\n\nOn highly parallel AArch64 and x86_64 systems this reduces comparison wall\ntime by about 95%.\n\nChangeLog:\n\n\t* Makefile.tpl ([+compare-target+]): Run object comparisons through an\n\tinvocation-specific parallel sub-make.  Collect sorted failure shards\n\tand clean temporary state on exit.\n\t* Makefile.in: Regenerate.\n\t* configure: Regenerate.\n\nconfig/ChangeLog:\n\n\t* acx.m4 (ACX_PROG_CMP_IGNORE_INITIAL): Use process-specific temporary\n\tfiles and clean them on exit.  Diagnose tail failures as errors.\n\nSigned-off-by: Kyrylo Tkachov \u003cktkachov@nvidia.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f34142cc077dd9f647398b6185f2761361d16b75",
      "old_mode": 33188,
      "old_path": "Makefile.in",
      "new_id": "5cca69c3f5234042a000bf96d0a9d072771efacd",
      "new_mode": 33188,
      "new_path": "Makefile.in"
    },
    {
      "type": "modify",
      "old_id": "5891b67b69749f6c122fcc0e851cc244fb655adc",
      "old_mode": 33188,
      "old_path": "Makefile.tpl",
      "new_id": "98bd03e9a33177215cf3bad0fdddcd79051fa93b",
      "new_mode": 33188,
      "new_path": "Makefile.tpl"
    },
    {
      "type": "modify",
      "old_id": "ef5468bdd3560aed133cc31c943e36ea57c7bd9a",
      "old_mode": 33188,
      "old_path": "config/acx.m4",
      "new_id": "5547cbeb9b8fdabe28568dac71d63d58ceb63744",
      "new_mode": 33188,
      "new_path": "config/acx.m4"
    },
    {
      "type": "modify",
      "old_id": "ad490083741ea0d59473e6604fa7547adde69c76",
      "old_mode": 33261,
      "old_path": "configure",
      "new_id": "4db0edbdccdb5f3192b843e035d2dc3d5badaf2b",
      "new_mode": 33261,
      "new_path": "configure"
    }
  ]
}
