Hacker News new | ask | show | jobs
by rep_movsd 1045 days ago
Why is that array not const in the Cpython code?
2 comments

Because every Python object also contains a reference count (which needs to be modified whenever the object is passed around), a `const PyObject*` is effectively useless.
But we’re talking about an integer cache. It’s full of singletons; Why do they need to have reference counts?
This special casing just had not been implemented yet. But as it is an interesting optimization, more so with multi-interpreter or no-GIL Python, the developers will actually introduce immortal objects in Python 3.12 to avoid counting references on some objects (PEP 683 has been accepted):

https://peps.python.org/pep-0683/

That wouldn't make a difference in this case, would it? I suppose it would mean that the code would be UB, but in practice it'd just work the same.