)]}'
{
  "commit": "136dc5cbd011fe5efe053dd291cd23148d424e7d",
  "tree": "fadd07a06e438eb3acd36071e4b9d717ff48da3d",
  "parents": [
    "0336744add8c620802ba450ca205956299d60052"
  ],
  "author": {
    "name": "Son Luong Ngoc",
    "email": "sluongng@gmail.com",
    "time": "Thu Jul 16 08:41:30 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jul 16 02:41:30 2026 -0400"
  },
  "message": "compilepkg: skip duplicate cgo compile (#4645)\n\nCoverage+cgo packages currently spend extra CPU in compilepkg because\nnogo needs original cgo-generated Go sources, not the\ncoverage-instrumented files passed to the compiler. The old path called\ncgo2 a second time to produce those sources. That second call also\nrecompiled every generated and user C-family source, linked the cgo\nprobe, and ran dynimport even though compilepkg discarded the object\noutputs.\n\nSplit cgo source generation from the compile/link phase and add a\ngenerate-only path for the nogo copy. Normal cgo compilation still uses\nthe full path, while the coverage+nogo pass writes generated Go sources\nfrom a separate cgo_nogo work directory and reuses the real\n_cgo_imports.go when available.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "345851ed6a57be6ad5a0098d9afec754226096c6",
      "old_mode": 33188,
      "old_path": "go/tools/builders/cgo2.go",
      "new_id": "580ba6ce2a127fae0cb4af39f8251688078d0289",
      "new_mode": 33188,
      "new_path": "go/tools/builders/cgo2.go"
    },
    {
      "type": "modify",
      "old_id": "e2b0be5461b41c43d8311ccdacd464fb356f7953",
      "old_mode": 33188,
      "old_path": "go/tools/builders/compilepkg.go",
      "new_id": "a1782d478a2161a8ea066d6afef52b95b214bb3c",
      "new_mode": 33188,
      "new_path": "go/tools/builders/compilepkg.go"
    }
  ]
}
