)]}'
{
  "commit": "8c3b4a090b006076a8c25ece32dd6f4c676dda07",
  "tree": "d205f80bcaaa0087be67303398c51bd0f7408b4d",
  "parents": [
    "10ba5c1aa14e01be1cfacb322136e22751617d26"
  ],
  "author": {
    "name": "Jukka Lehtosalo",
    "email": "jukka.lehtosalo@iki.fi",
    "time": "Sat Apr 16 13:07:04 2022 +0100"
  },
  "committer": {
    "name": "Jukka Lehtosalo",
    "email": "jukka.lehtosalo@iki.fi",
    "time": "Sat Apr 16 18:08:40 2022 +0100"
  },
  "message": "[mypyc] Implement optional tracing of ops\n\nIf mypyc.irbuild.ll_builder.TRACING is set to True, print information\nabout ops being executed to stdout while the compiled program is run.\nThis can be useful for debugging and performance analysis.\n\nOnly those ops generated in the main irbuild pass which have a line\nnumber will be included in the trace. This seems sufficient to make\nthis feature useful, but it may make sense to include additional ops\nin the future.\n\nI\u0027ve already used this to successfully fix a tricky code generation\nbug.\n\nExample trace from a simple program (it prints `hello` and appends\nto a list):\n```\n[trace] t:9::Call(bar)\n[trace] t:6:bar:CallC(CPyObject_GetAttr)\n[trace] t:6:bar:CallC(_PyObject_Vectorcall)\nhello\n[trace] t:7:bar:Call(foo)\n[trace] t:2:foo:CallC(PyList_New)\n[trace] t:3:foo:CallC(PyList_Append)\n[trace] t:3:foo:ComparisonOp\n```\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "57baa8dbf5748582d0eae2c730d57c0d8bcf36f4",
      "old_mode": 33188,
      "old_path": "mypyc/irbuild/builder.py",
      "new_id": "b93179ee449a3a18a099db0106e44b9b8d78dd02",
      "new_mode": 33188,
      "new_path": "mypyc/irbuild/builder.py"
    },
    {
      "type": "modify",
      "old_id": "98a69d92406d8ebd5540e1f0d0960f10be4a779b",
      "old_mode": 33188,
      "old_path": "mypyc/irbuild/ll_builder.py",
      "new_id": "779830fd3026747650ff6e92b08706c4e3cb05b0",
      "new_mode": 33188,
      "new_path": "mypyc/irbuild/ll_builder.py"
    },
    {
      "type": "modify",
      "old_id": "4c0f91a5707ecfcdd1cd102ee2ecfa684c5fe9b4",
      "old_mode": 33188,
      "old_path": "mypyc/lib-rt/CPy.h",
      "new_id": "1a9e4c6e6d4c9e7e1e72f4d075a9ab1f2453126b",
      "new_mode": 33188,
      "new_path": "mypyc/lib-rt/CPy.h"
    },
    {
      "type": "modify",
      "old_id": "dcce89d907201633686cce6285ddfcf650bc7fc6",
      "old_mode": 33188,
      "old_path": "mypyc/lib-rt/misc_ops.c",
      "new_id": "1ff29c2831c91b3fc62cacd9a529b185ad50f98a",
      "new_mode": 33188,
      "new_path": "mypyc/lib-rt/misc_ops.c"
    },
    {
      "type": "modify",
      "old_id": "cfdbb8a0f78d782430a70ce0b60556bda860787a",
      "old_mode": 33188,
      "old_path": "mypyc/primitives/misc_ops.py",
      "new_id": "cc3b2c4612d80ff0a32ca6f66556c1a243f19551",
      "new_mode": 33188,
      "new_path": "mypyc/primitives/misc_ops.py"
    }
  ]
}
