mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
(see https://github.com/python/cpython/issues/98608) This change does the following: 1. change the argument to a new `_PyInterpreterConfig` struct 2. rename the function to `_Py_NewInterpreterFromConfig()`, inspired by `Py_InitializeFromConfig()` (takes a `_PyInterpreterConfig` instead of `isolated_subinterpreter`) 3. split up the boolean `isolated_subinterpreter` into the corresponding multiple granular settings * allow_fork * allow_subprocess * allow_threads 4. add `PyInterpreterState.feature_flags` to store those settings 5. add a function for checking if a feature is enabled on an opaque `PyInterpreterState *` 6. drop `PyConfig._isolated_interpreter` The existing default (see `Py_NewInterpeter()` and `Py_Initialize*()`) allows fork, subprocess, and threads and the optional "isolated" interpreter (see the `_xxsubinterpreters` module) disables all three. None of that changes here; the defaults are preserved. Note that the given `_PyInterpreterConfig` will not be used outside `_Py_NewInterpreterFromConfig()`, nor preserved. This contrasts with how `PyConfig` is currently preserved, used, and even modified outside `Py_InitializeFromConfig()`. I'd rather just avoid that mess from the start for `_PyInterpreterConfig`. We can preserve it later if we find an actual need. This change allows us to follow up with a number of improvements (e.g. stop disallowing subprocess and support disallowing exec instead). (Note that this PR adds "private" symbols. We'll probably make them public, and add docs, in a separate change.) |
||
|---|---|---|
| .. | ||
| cpython | ||
| internal | ||
| abstract.h | ||
| bltinmodule.h | ||
| boolobject.h | ||
| bytearrayobject.h | ||
| bytesobject.h | ||
| ceval.h | ||
| codecs.h | ||
| compile.h | ||
| complexobject.h | ||
| datetime.h | ||
| descrobject.h | ||
| dictobject.h | ||
| dynamic_annotations.h | ||
| enumobject.h | ||
| errcode.h | ||
| exports.h | ||
| fileobject.h | ||
| fileutils.h | ||
| floatobject.h | ||
| frameobject.h | ||
| genericaliasobject.h | ||
| import.h | ||
| intrcheck.h | ||
| iterobject.h | ||
| listobject.h | ||
| longobject.h | ||
| marshal.h | ||
| memoryobject.h | ||
| methodobject.h | ||
| modsupport.h | ||
| moduleobject.h | ||
| object.h | ||
| objimpl.h | ||
| opcode.h | ||
| osdefs.h | ||
| osmodule.h | ||
| patchlevel.h | ||
| py_curses.h | ||
| pybuffer.h | ||
| pycapsule.h | ||
| pydtrace.d | ||
| pydtrace.h | ||
| pyerrors.h | ||
| pyexpat.h | ||
| pyframe.h | ||
| pyhash.h | ||
| pylifecycle.h | ||
| pymacconfig.h | ||
| pymacro.h | ||
| pymath.h | ||
| pymem.h | ||
| pyport.h | ||
| pystate.h | ||
| pystats.h | ||
| pystrcmp.h | ||
| pystrtod.h | ||
| Python.h | ||
| pythonrun.h | ||
| pythread.h | ||
| pytypedefs.h | ||
| rangeobject.h | ||
| README.rst | ||
| setobject.h | ||
| sliceobject.h | ||
| structmember.h | ||
| structseq.h | ||
| sysmodule.h | ||
| traceback.h | ||
| tracemalloc.h | ||
| tupleobject.h | ||
| typeslots.h | ||
| unicodeobject.h | ||
| warnings.h | ||
| weakrefobject.h | ||
The Python C API ================ The C API is divided into three sections: 1. ``Include/``: Limited API 2. ``Include/cpython/``: CPython implementation details 3. ``Include/internal/``: The internal API Information on changing the C API is available `in the developer guide`_ .. _in the developer guide: https://devguide.python.org/c-api/