Yeah, no (mutable) global state at the C level. It would also be good to implement multi-phase init (PEP 489), but I don't expect that to require much work itself.
-eric On Tue, Dec 14, 2021 at 4:04 PM Brett Cannon <br...@python.org> wrote: > > > > On Tue, Dec 14, 2021 at 9:41 AM Eric Snow <ericsnowcurren...@gmail.com> wrote: >> >> One of the open questions relative to subinterpreters is: how to >> reduce the amount of work required for extension modules to support >> them? Thanks to Petr Viktorin for a lot of work he's done in this >> area (e.g. PEP 489)! Extensions also have the option to opt out of >> subinterpreter support. >> >> However, that's only one part of the story. A while back Nathaniel >> expressed concerns with how making subinterpreters more accessible >> will have a negative side effect affecting projects that publish large >> extensions, e.g. numpy. Not all extensions support subinterpreters >> due to global state (incl. in library dependencies). The amount of >> work to get there may be large. As subinterpreters increase in usage >> in the community, so will demand increase for subinterpreter support >> in those extensions. Consequently, such projects be pressured to do >> the extra work (which is made even more stressful by the short-handed >> nature of most open source projects) . >> >> So we (the core devs) would effectively be requiring those extensions >> to support subinterpreters, regardless of letting them opt out. This >> situation has been weighing heavily on my mind since Nathaniel brought >> this up. Here are some ideas I've had or heard of about what we could >> do to help: >> >> * add a page to the C-API documentation about how to support subinterpreters >> * identify the extensions most likely to be impacted and offer to help >> * add more helpers to the C-API to make adding subinterpreter support >> less painful >> * fall back to loading the extension in its own namespace (e.g. use >> ldm_open()) >> * fall back to copying the extension's file and loading from the copied file >> * ... >> >> I'd appreciate your thoughts on what we can do to help. Thanks! > > > What are the requirements put upon an extension in order to support > subinterpreters? you hint at global state at the C level, but nothing else is > mentioned. Is that it? _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/BQU3PVN6MHR2P24RAUPJSWFS547W7FPM/ Code of Conduct: http://python.org/psf/codeofconduct/