)]}'
{
  "commit": "a01694dacd8e8bbbd019e8b87dbc7bc7173cb7f1",
  "tree": "a026db0562c786ac6833ef32b544862e3953239e",
  "parents": [
    "a7048327ed7c6bb83c8c41d50f6d8c5470b6ad71"
  ],
  "author": {
    "name": "Sam Gross",
    "email": "colesbury@gmail.com",
    "time": "Fri Jan 30 17:20:27 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jan 30 17:20:27 2026"
  },
  "message": "gh-120321: Make gi_yieldfrom thread-safe in free-threading build (#144292)\n\nAdd a FRAME_SUSPENDED_YIELD_FROM_LOCKED state that acts as a brief\nlock, preventing other threads from transitioning the frame state\nwhile gen_getyieldfrom reads the yield-from object off the stack.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8c410e9e2083407fd491138fadf84e9f12aa8d82",
      "old_mode": 33188,
      "old_path": "Include/internal/pycore_frame.h",
      "new_id": "50908f2cb7a1d296ce3d8480893efd0a6eba99e3",
      "new_mode": 33188,
      "new_path": "Include/internal/pycore_frame.h"
    },
    {
      "type": "modify",
      "old_id": "c4e007e744ce0f72683aa6e5c844af56fc9599e6",
      "old_mode": 33188,
      "old_path": "Include/internal/pycore_lock.h",
      "new_id": "e31d8b4e5c68c92db555ee89a45087baeb261f18",
      "new_mode": 33188,
      "new_path": "Include/internal/pycore_lock.h"
    },
    {
      "type": "modify",
      "old_id": "3e04c344a0d66fc41174e9c1a07a0518c6807ac6",
      "old_mode": 33188,
      "old_path": "Lib/test/support/threading_helper.py",
      "new_id": "cf87233f0e2e938a9f2e7d7906844ca009416432",
      "new_mode": 33188,
      "new_path": "Lib/test/support/threading_helper.py"
    },
    {
      "type": "modify",
      "old_id": "11f59301bcd51ddda235cbfb40db83878fd60cbf",
      "old_mode": 33188,
      "old_path": "Lib/test/test_free_threading/test_generators.py",
      "new_id": "2b41e28896f5a8b10bec61cd48f6cf77a2ece3a9",
      "new_mode": 33188,
      "new_path": "Lib/test/test_free_threading/test_generators.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "052ed07c123bcf1d2e1ee2fec17131be322b05b2",
      "new_mode": 33188,
      "new_path": "Misc/NEWS.d/next/Core_and_Builtins/2026-01-27-17-49-43.gh-issue-120321.Vo7c9T.rst"
    },
    {
      "type": "modify",
      "old_id": "fcdb9017a35f5b2be44b87c2762bb345c2f2fcd2",
      "old_mode": 33188,
      "old_path": "Objects/genobject.c",
      "new_id": "5ff4618255c852f9664b84674751733cf40bc6aa",
      "new_mode": 33188,
      "new_path": "Objects/genobject.c"
    },
    {
      "type": "modify",
      "old_id": "04ae7b4d86f9d0684e44f24fefa2c112d8fb4713",
      "old_mode": 33188,
      "old_path": "Python/ceval.c",
      "new_id": "c59f20bbf1e803a1d6d6ab061877a2da65036e2d",
      "new_mode": 33188,
      "new_path": "Python/ceval.c"
    },
    {
      "type": "modify",
      "old_id": "1cbeb18d02c082e41fa3034a6092054d53c68541",
      "old_mode": 33188,
      "old_path": "Python/ceval_macros.h",
      "new_id": "b127812b4bf703cf7d45be597656533a179fe8cc",
      "new_mode": 33188,
      "new_path": "Python/ceval_macros.h"
    },
    {
      "type": "modify",
      "old_id": "12b5ebc89aeec78341f6e8a53172c8e934ce22fb",
      "old_mode": 33188,
      "old_path": "Python/lock.c",
      "new_id": "ad97bfd93c8495ae7b27297a274e90253f7e1301",
      "new_mode": 33188,
      "new_path": "Python/lock.c"
    }
  ]
}
