)]}'
{
  "commit": "069b955631de753d4944730210c16954f0dbaf7f",
  "tree": "45ef30bbb05b52ec1b5c52b327b9eec110f34390",
  "parents": [
    "aa363b41ef2a74e9f66cea3f829b64df07ac9c7a"
  ],
  "author": {
    "name": "Leonardo de Moura",
    "email": "leomoura@amazon.com",
    "time": "Sun Nov 01 14:40:23 2026 +0000"
  },
  "committer": {
    "name": "Leonardo de Moura",
    "email": "leomoura@amazon.com",
    "time": "Sun Nov 01 14:40:23 2026 +0000"
  },
  "message": "perf: evaluate `USize`, `UInt64` and `Array.uget`/`uset` primitives in place in the interpreter\n\nThis PR makes the IR interpreter evaluate `USize`, `UInt64` and `Array.uget`/`uset` primitives in place instead of calling their boxed native wrappers. A full Mathlib build executes 3.6% fewer instructions.\n\nPreviously, each call to a primitive such as `USize.add` or `Array.uget` (e.g. the index arithmetic of every compiled `for` loop) heap-allocated boxes for its scalar arguments and result, and pushed an interpreter frame. `call` now invokes the `lean.h` function directly, respecting the IR borrow flags. Primitives are recognized by name once per process and cached in the global native symbol cache.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5501610c220d5f0f48ceea0002ecb6cd8801db99",
      "old_mode": 33188,
      "old_path": "src/library/ir_interpreter.cpp",
      "new_id": "3febbda4660e447003bff4048ac56d95703515c4",
      "new_mode": 33188,
      "new_path": "src/library/ir_interpreter.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "75c27bbe9e15ff832d9288ba7c92d81dfa9a9850",
      "new_mode": 33188,
      "new_path": "tests/elab/interp_prims.lean"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b712a59c2d3ec748996df58d866ab5454d48cd84",
      "new_mode": 33188,
      "new_path": "tests/elab/interp_prims.lean.out.expected"
    }
  ]
}
