)]}'
{
  "commit": "b533e7f78597cadbb9880429b4993745320c4a1b",
  "tree": "f4f6c43bdcd465797f6cd2ec64d8eec536df6793",
  "parents": [
    "3f0a3703c02aaff109c1d5df37be01fee784d4fc"
  ],
  "author": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Thu Apr 11 17:47:21 2024"
  },
  "committer": {
    "name": "Alan Donovan",
    "email": "adonovan@google.com",
    "time": "Thu Apr 11 17:47:21 2024"
  },
  "message": "starlark: add debug API for Locals and FreeVars\n\nThis change adds the following new API to allow debugging tools\nand built-in functions access to the internals of Function values\nand call frames:\n\npackage starlark\n\ntype Binding struct {\n       Name string\n       Pos  syntax.Position\n}\n\nfunc (fr *frame) NumLocals() int\nfunc (fr *frame) Local(i int) (Binding, Value)\n\ntype DebugFrame interface {\n    ...\n    NumLocals() int\n    Local(i int) (Binding, Value)\n}\n\nfunc (fn *Function) NumFreeVars() int\nfunc (fn *Function) FreeVar(i int) (Binding, Value)\n\nThis is strictly a breaking change, but the changed functions\n(the Local methods) were previously documented as experimental.\nThe fix is straightforward.\n\nAlso, a test of DebugFrame to write an \u0027env\u0027 function in\na similar vein to Python\u0027s \u0027dir\u0027 function.\n\nFixes #538\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ecf689f05e4117c4b19279a5438f993a9a1269c9",
      "old_mode": 33188,
      "old_path": "internal/compile/compile.go",
      "new_id": "b257d70d359bc39b0bb46c531cb94282f56e3062",
      "new_mode": 33188,
      "new_path": "internal/compile/compile.go"
    },
    {
      "type": "modify",
      "old_id": "4d71738cced86a38595d5cd096c212a881eb028c",
      "old_mode": 33188,
      "old_path": "internal/compile/serial.go",
      "new_id": "0dbae47c280898cebaf0b7ce774e900a46e39984",
      "new_mode": 33188,
      "new_path": "internal/compile/serial.go"
    },
    {
      "type": "modify",
      "old_id": "22a21240f1e5a0adfb5c017b36d1f405ea0bdec4",
      "old_mode": 33188,
      "old_path": "starlark/debug.go",
      "new_id": "bbb37b55fdb4720898aa2083cae59771d45709e5",
      "new_mode": 33188,
      "new_path": "starlark/debug.go"
    },
    {
      "type": "modify",
      "old_id": "667867118983b8e66d541fb6ec425f573dc6356b",
      "old_mode": 33188,
      "old_path": "starlark/eval_test.go",
      "new_id": "3bf35920cf7689a0b0c17b43f6ea874b8a3a85ab",
      "new_mode": 33188,
      "new_path": "starlark/eval_test.go"
    },
    {
      "type": "modify",
      "old_id": "d29e52530b410f846c28c56407520d4257bc95dc",
      "old_mode": 33188,
      "old_path": "starlark/interp.go",
      "new_id": "261077fb6a8960a352bc6aded9778ca32ea54b00",
      "new_mode": 33188,
      "new_path": "starlark/interp.go"
    },
    {
      "type": "modify",
      "old_id": "f24a3c81141c5ab82f10ffacd91ac6736d7b6143",
      "old_mode": 33188,
      "old_path": "starlark/value.go",
      "new_id": "94e200aba5cbc4ebaa02027e4d5e2d5e3d0be86e",
      "new_mode": 33188,
      "new_path": "starlark/value.go"
    }
  ]
}
