[Python-Dev] Tweak to PEP 523 for storing a tuple in co_extra

Yury Selivanov yselivanov.ml at gmail.com
Sat Sep 3 18:03:17 EDT 2016



On 2016-09-03 12:27 PM, Brett Cannon wrote:
> Below is the `co_extra` section of PEP 523 with the update saying that 
> users are expected to put a tuple in the field for easier simultaneous 
> use of the field.
>
> Since the `co_extra` discussions do not affect CPython itself I'm 
> planning on landing the changes stemming from the PEP probably on Monday.

Tuples are immutable.  If you have multiple co_extra users then they 
will have to either mutate tuple (which isn't always possible, for 
instance, you can't increase size), or to replace it with another tuple.

Creating lists is a bit more expensive, but item access speed should be 
in the same ballpark.

Another question -- sorry if this was discussed before -- why do we want 
a PyObject* there at all?  I.e. why don't we create a dedicated struct 
CoExtraContainer to manage the stuff in co_extra?  My understanding is 
that the users of co_extra are C-level python optimizers and profilers, 
which don't need the overhead of CPython API.

This way my work to add an extra caching layer (which I'm very much 
willing to continue to work on) wouldn't require another set of extra 
fields for code objects.

Yury



More information about the Python-Dev mailing list