)]}'
{
  "commit": "33ec12e91829c0b2604f3588d00bf473b698ce57",
  "tree": "75fe62999269fcf46f637758c938673daf78af59",
  "parents": [
    "a3f83224894652964b8f89ebf12c93cb2fea42b0"
  ],
  "author": {
    "name": "Leonardo de Moura",
    "email": "leomoura@amazon.com",
    "time": "Thu Mar 26 16:54:17 2026 -0700"
  },
  "committer": {
    "name": "Leonardo de Moura",
    "email": "leomoura@amazon.com",
    "time": "Thu Mar 26 16:54:17 2026 -0700"
  },
  "message": "perf: add `etaReduceWithCache` for efficient eta reduction with explicit cache\n\n`etaReduceWithCache` takes and returns a `HashMap ExprPtr Expr` cache\nexplicitly, enabling the canonicalizer to thread a single cache across\nmultiple expressions. The traversal eta-reduces lambdas eagerly: if a\nlambda is eta-reducible, it visits the reduced form directly instead of\ndescending into the binder types.\n\n`etaReduceAll` is now a thin wrapper around `etaReduceWithCache`.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c7c5951a64cf527fe65f500a88f7d8cd8fa3a36",
      "old_mode": 33188,
      "old_path": "src/Lean/Meta/Sym/Eta.lean",
      "new_id": "62714d6476ae89edcbb55de11cea0f4cc95be0e3",
      "new_mode": 33188,
      "new_path": "src/Lean/Meta/Sym/Eta.lean"
    }
  ]
}
