[subinterpreters] Add --experimental-isolated-subinterpreters build option #84694
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
assignee = None closed_at = <Date 2020-10-31.22:59:17.920> created_at = <Date 2020-05-05.13:13:51.880> labels = ['expert-subinterpreters', 'build', '3.10'] title = '[subinterpreters] Add --experimental-isolated-subinterpreters build option' updated_at = <Date 2020-10-31.22:59:17.920> user = 'https://github.com/vstinner'
activity = <Date 2020-10-31.22:59:17.920> actor = 'vstinner' assignee = 'none' closed = True closed_date = <Date 2020-10-31.22:59:17.920> closer = 'vstinner' components = ['Build', 'Subinterpreters'] creation = <Date 2020-05-05.13:13:51.880> creator = 'vstinner' dependencies =  files =  hgrepos =  issue_num = 40514 keywords = ['patch'] message_count = 6.0 messages = ['368141', '368156', '368159', '368172', '369401', '370745'] nosy_count = 3.0 nosy_names = ['vstinner', 'eric.snow', 'corona10'] pr_nums = ['19926', '20228'] priority = 'normal' resolution = 'fixed' stage = 'resolved' status = 'closed' superseder = None type = None url = 'https://bugs.python.org/issue40514' versions = ['Python 3.10']
The text was updated successfully, but these errors were encountered:
I propose to add a temporary build --experimental-isolated-subinterpreters build option to configure for developers who want to hack on isolated subinterpreters. The intent is to speedup bpo-40512 development by making some practice compromises, to have more time to properly design the real fixes.
For example, tuple, dict and frame have free lists which are shared by subinterpreters. A practical solution is to simply disable them at build time to avoid the need to have per-interpreter free lists.
Another example is pymalloc which is shared by all subinterpreters and rely on the unique global interpreter lock (GIL) to protect its internal states. A practical solution is to disable it and force the usage of libc malloc() function instead.
Some compromosises cannot be the default since they have a significant negative impact on performances. So I propose to add a temporary build option until all these small issues will be fixed.
--with-experimental-isolated-subinterpreters option name is very long on purpose: to advertize that you must not use it, unless you fully understand its purpose :-)
…-93185) This was added for bpo-40514 (pythongh-84694) to test out a per-interpreter GIL. However, it has since proven unnecessary to keep the experiment in the repo. (It can be done as a branch in a fork like normal.) So here we are removing: * the configure option * the macro * the code enabled by the macro
… (GH-93306) (cherry picked from commit caa279d) This was added for bpo-40514 (gh-84694) to test out a per-interpreter GIL. However, it has since proven unnecessary to keep the experiment in the repo. (It can be done as a branch in a fork like normal.) So here we are removing: * the configure option * the macro * the code enabled by the macro Automerge-Triggered-By: GH:ericsnowcurrently
Part of #95913 Forward port of #93306, which was a backport of #93185, to address #84694 This adds the What's New entry for the removal of the subinterpreter-related env variable, build-time flag, etc. As @ericsnowcurrently was author of the original changes, I added him as a co-author to the commit. This addition to the Python 3.11 What's New document were only made to the Python 3.11 branch during the backport process, and not added to the version in `main`. Forward-porting it ensures the docs retain these additions for the future, rather than being lost in a legacy Python versions, allows it to be be edited as part of #95913 , and avoids merge conflicts with routine back-ports of PRs touching it. I've pulled in the addition exactly as-is with no modifications; any editing will be done in future PRs (and therefore can be reviewed and backported accordingly). The one other such addition is forward-ported in #98344