Use PyThreadState_EnterTracing()#267
Use PyThreadState_EnterTracing()#267vstinner wants to merge 1 commit intopython-greenlet:masterfrom vstinner:enter_tracing
Conversation
Add a copy of the pythoncapi_compat.h header: https://github.com/pythoncapi/pythoncapi_compat pythoncapi_compat.h provides PyThreadState_EnterTracing() and PyThreadState_LeaveTracing() to Python 3.10 and older. They function were added to Python 3.11.0a2: python/cpython@547d26a PyThreadState.cframe.use_tracing format changed again in Python 3.11.0a2 (value set to 0 or 255): python/cpython@bd627eb This change makes greenlet ready for these changes and future CPython internal changes.
|
See https://bugs.python.org/issue43760 discussion for recent CPython changes and discussions about adding new C API functions to abstract accesses to PyThreadState and PyFrameObject. I'm the author and maintainer of pythoncapi_compat. Using it, it becomes to remove the following lines from src/greenlet/greenlet_cpython_compat.hpp: But I suggest to do it in a separated change, to keep this PR as small as possible. I wrote pythoncapi_compat to help C extension maintainers to keep up with recent Python C API changes. |
|
Thanks for the heads up! Rather than vendor an entire header file, I'll probably just add only the definitions greenlet needs to the existing header as it needs them. |
|
Oh, pythoncapi_compat.h would also allow to remove another compatibility function: |
My long term plan is to ship pythoncapi_compat.h as part of Python itself and/or install it on the system, as the six module is now preinstalled or easy to install on any system. For now, I prefer to copy it in each project. |
|
If you don't want to use pythoncapi_compat.h for now, here is a different PR without it: #268 |
|
Fixed by #268 |
Add a copy of the pythoncapi_compat.h header:
https://github.com/pythoncapi/pythoncapi_compat
pythoncapi_compat.h provides PyThreadState_EnterTracing() and
PyThreadState_LeaveTracing() to Python 3.10 and older. They function
were added to Python 3.11.0a2:
python/cpython@547d26a
PyThreadState.cframe.use_tracing format changed again in Python
3.11.0a2 (value set to 0 or 255):
python/cpython@bd627eb
This change makes greenlet ready for these changes and future CPython
internal changes.