)]}'
{
  "commit": "9b38c456f3f0c0f934d08230f339772e1f9ff9aa",
  "tree": "6b6faabdeb21592aa1ce5155fbda3c8e40cdb96a",
  "parents": [
    "8d6d0a890e42e2de5e6d658a70de59d439bec8cc"
  ],
  "author": {
    "name": "Joshua Haberman",
    "email": "haberman@google.com",
    "time": "Wed Oct 14 17:03:41 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 14 17:06:59 2026 -0700"
  },
  "message": "Added concurrency primitives for memory safe concurrency in free threaded Python.\n\nPython code should avoid triggering data races, but these primitives will help us guarantee that even if a program is buggy and invokes a data race, we will fail with an error rather than allow the program to SEGV or corrupt memory.\n\nThese primitives will impose some overhead even in well-behaved programs.  The worst case is if two threads are sharing a proto read-only and both threads are frequently reading the proto fields.  Our read locks will cause contention on the access guard, even though no data race is present.  Our plan for mitigating this is to introduce truly immutable types, which will be able to share safely without any locking at all.\n\nPiperOrigin-RevId: 999721561\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7c59f8d89a049ff4553acfd98d08e7b70c096041",
      "new_mode": 33188,
      "new_path": "python/google/protobuf/pyext/free_threading/access_guard.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "711689603659f0a8ee60192363b5a7d66fac27b8",
      "new_mode": 33188,
      "new_path": "python/google/protobuf/pyext/free_threading/access_guard_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "58e8984af43bdb93869b89c4b3a03d4cca72b4e7",
      "new_mode": 33188,
      "new_path": "python/google/protobuf/pyext/free_threading/guarded.h"
    }
  ]
}
