Mark Shannon
Mark Shannon
My guess is that https://github.com/python/cpython/pull/122620 is to blame. Specifically removing this deopt https://github.com/python/cpython/pull/122620/files#diff-729a985b0cb8b431cb291f1edb561bbbfea22e3f8c262451cd83328a0936a342L2221 If a value is `NULL`, then the usual invariants on keys might not apply to that key....
I don't see a good reason why interning strings should make them immortal. The two things, immortality and interning, are separate concepts. Why were interned strings changed to be immortal...
The immortal objects PR seems to allow interned, but not immortals strings: https://github.com/python/cpython/pull/19474/files#diff-6be7f081fe6c5e9cbc89323a00399b291d1cda855bcb4c6eeaee0fac89c2f8ddR105 so it is a bit surprising that they aren't supported.
It might also be worth making the distinction between "interpreter immortal" and "process immortal" strings, as the latter can be shared between multiple interpreters.
Why do all interned strings need to be immortal? Strings where there is potentially high contention on the refcount need to be immortal, to allow scaling. But that only implies...
> Since interned strings that are tied to code objects are effectively immortal *effectively* means "almost all, almost all of the time". Strings interned compiling a namedtuple, we be effectively...
It was fixed by #117120
I don't see a good reason why the globals must be a dictionary in some places, but not in others that appear very similar. If we are going to be...
This PR mores than doubles the size of PEP 667. That seems excessive. Despite that, the actual changes to `eval` and `exec` are not made explicit. The impact on `eval`...
Now that the eval_breaker is part of the thread state, here's an alternative approach that might work. `tstate->tracing` only needs one bit, so use the low bit in the version...