)]}'
{
  "commit": "7c2c06ccfcfd4b7fecbb8fe5e7a4ec0c2eb6645c",
  "tree": "8769cae5a14d8f912ccd82656c7a9de1faf49725",
  "parents": [
    "040c2b2101ba46418268511a6f236951ce382662"
  ],
  "author": {
    "name": "Twice",
    "email": "twice@apache.org",
    "time": "Tue May 05 11:22:33 2026 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue May 05 11:22:33 2026 +0800"
  },
  "message": "[MLIR][Python] Add `ConditionallySpeculatable` interface and `Pure` specifier (#195505)\n\nThis PR brings two features: the `ConditionallySpeculatable` op\ninterface and the `Pure` specifier for Python-defined ops.\n\nThe result is that you can mark an op as pure like:\n```python\nclass PureOp(\n    TestPure.Operation,\n    name\u003d\"pure\",\n    traits\u003d[Pure]  # just like in the ODS!\n):\n    a: Operand[IntegerType[32]]\n    b: Operand[IntegerType[32]]\n    res: Result[IntegerType[32]] \u003d infer_result()\n```\n\nThen this op is both `NoMemoryEffect` and `AlwaysSpeculatable`.\n\nAssisted-by: Copilot/GPT5.4",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "17a812dcd86a95eed5f93b99dc489862d64341ea",
      "old_mode": 33188,
      "old_path": "mlir/include/mlir-c/Interfaces.h",
      "new_id": "a5251dc78471fdefef0b1338d94cb379a0450d85",
      "new_mode": 33188,
      "new_path": "mlir/include/mlir-c/Interfaces.h"
    },
    {
      "type": "modify",
      "old_id": "561316d863f7516ccde81222c6f43d0c3b1b9771",
      "old_mode": 33188,
      "old_path": "mlir/lib/Bindings/Python/IRInterfaces.cpp",
      "new_id": "c4e87246bd68c1a12fb3e4c304e089783ee08a76",
      "new_mode": 33188,
      "new_path": "mlir/lib/Bindings/Python/IRInterfaces.cpp"
    },
    {
      "type": "modify",
      "old_id": "bfa9fbf3e621775d462165e8fe9192bc620deb90",
      "old_mode": 33188,
      "old_path": "mlir/lib/CAPI/Interfaces/Interfaces.cpp",
      "new_id": "35a2bd562a8a1e64814e26cec0d9641d4189d75c",
      "new_mode": 33188,
      "new_path": "mlir/lib/CAPI/Interfaces/Interfaces.cpp"
    },
    {
      "type": "modify",
      "old_id": "c2efa9bb773ccd1122218bd15d9a4213bf52293f",
      "old_mode": 33188,
      "old_path": "mlir/python/mlir/dialects/ext.py",
      "new_id": "10ac002c75d962bd6410f4a30cf40f15d6d61bab",
      "new_mode": 33188,
      "new_path": "mlir/python/mlir/dialects/ext.py"
    },
    {
      "type": "modify",
      "old_id": "d45142510a4966fc9d2b23623e3c269b9bd3c281",
      "old_mode": 33188,
      "old_path": "mlir/test/CAPI/CMakeLists.txt",
      "new_id": "3b3f15a825b38d25662a1659e0f9fdf5da6c8121",
      "new_mode": 33188,
      "new_path": "mlir/test/CAPI/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "721d68ab781b7b644a7b0cc0e13ecfe741612f25",
      "old_mode": 33188,
      "old_path": "mlir/test/CAPI/ir.c",
      "new_id": "ec0a877f830dd6890224d64cc3394f997c5efc0a",
      "new_mode": 33188,
      "new_path": "mlir/test/CAPI/ir.c"
    },
    {
      "type": "modify",
      "old_id": "cfdbeb3362735aacbbf8e8b417dd7a97e77e3170",
      "old_mode": 33188,
      "old_path": "mlir/test/python/dialects/ext.py",
      "new_id": "2c9ab4fe321a25a573473527486f5be49fdf59cb",
      "new_mode": 33188,
      "new_path": "mlir/test/python/dialects/ext.py"
    }
  ]
}
