New submission from Eric Snow <[email protected]>:
(also see issue #35886)
In November Victor created the Include/cpython directory and moved a decent
amount of public (but not limited) API there. This included the PyThreadState
struct. I'd like to move it into the "internal" headers since it is somewhat
coupled to the internal runtime implementation. The alternative is extra
complexity. I ran into this while working on another issue.
There are 2 problems, however, with PyThreadState which make a move potentially
challenging. In fact, they could be (but probably aren't) cause for moving it
back to Include/pystate.h.
1. the docs say: "The only public data member is PyInterpreterState *interp,
which points to this thread’s interpreter state."
2. the struct has 6 fields that are exposed (likely unintentionally) in
"stable" header files via the following macros:
# Include/object.h
Py_TRASHCAN_SAFE_BEGIN
Py_TRASHCAN_SAFE_END
Include.ceval.h
Py_EnterRecursiveCall
Py_LeaveRecursiveCall
_Py_MakeRecCheck
Py_ALLOW_RECURSION
Py_END_ALLOW_RECURSION
I'm not sure how that factors into the stable ABI (PyThreadState wasn't ever
guarded by Py_LIMITED_API). However, keep in mind that Victor already moved
PyThreadState out of the "stable" headers in November.
I'm fine with sorting out the situation with the macros if that's okay to do.
Likewise the promised field ("interp") should be solvable one way or another
(e.g. remove it or use a private struct).
...or we could do nothing or (if the change in Novemver is a problem) move it
back to Include/pystate.h.
----------
components: Interpreter Core
messages: 335122
nosy: eric.snow, ncoghlan, vstinner
priority: normal
severity: normal
status: open
title: Move PyThreadState into Include/internal/pycore_pystate.h
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue35949>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com