Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Feature or enhancement
The acceptedPEP 699 proposed removing the privatema_version_tag field fromPyDictObject. Note that PEP 699 supersedesPEP 509, which originally proposed the field.
Why now?
- The
ma_version_tagfield was deprecated in 3.12 and we are now working on 3.14, so I think this is in line with Python'sbackward compatibility policy from PEP 387. - Cython and PyTorch (dynamo) andNuitka have stopped using it for CPython 3.12+. I don't think
ma_version_tagever saw widespread usage. Cython was the major user mentioned in PEP 699.1 - I think the
ma_version_tagupdates have a non-negligible cost in the free-threaded build, and it's easier and simpler to remove it (if we're planning to do that anyways) than to make it more efficient - It would be convenient to use some of the version tag bits for per-thread refcounting of globals and builtins. (See Mark's comment inReference count contention with nested functions #124218 (comment)).
- If we are going to remove this in 3.14, I think doing so earlier in the development cycle is better.
Dict Watchers
Thema_version_tag field is also used for dict watchers (8 bits) and the tier2 mutation counter (4 bits). We will still want that functionality.
Linked PRs
Footnotes
I searched thetop ~7500 sdists as well. The only other actual usage I saw washttps://github.com/slezica/python-frozendict, which doesn't have a 3.11 or 3.12 C extension yet (but also functions as a pure-Python package).↩