-
-
Notifications
You must be signed in to change notification settings - Fork 31.8k
[C API] Add explicit support for Cython to the C API #89410
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
As the C API has evolved it has grown features in an ad-hoc way, driven by the needs to whoever has bothered to add the code. Maybe we should be a bit more principled about this. Specifically we should make sure that there is a well defined interface between CPython and the other major components of the Python ecosystem. This issue deals specifically with Cython. I will leave it to someone who know more about Numpy to open an issue for Numpy. Matching Cython issue: cython/cython#4382 This issue is an attempt to stop the annual occurrence of bugs like https://bugs.python.org/issue43760#msg393401 |
I disagree. All that is doing is locking in the current poor interface. We do need to extend the C API for these uses, yes. But we need an API that addresses Cython's needs directly and at a higher level. For example, Cython often wants to insert a frame into the call stack for debugging and introspection. Rather than have Cython laboriously create a Python frame with fake code object, etc., it would make much more sense for us to offer an API to insert a "native" frame into the stack and update the line number. E.g. something like: int PushNativeFrame(const char *filename);
void PopNativeFrame(void);
int CurrentNativeFrame_SetLineNumber(int lineno); We might even want to use such an API ourselves in some modules. |
I agree with that. |
I agree with Mark. Instead of exposing internal details in low-level API we should add more high-level API to satisfy concrete needs. It will give us more freedom of changing internals in future. |
My first attempt: Add PyThreadState_EnterTracing() and PyThreadState_LeaveTracing() It adds an abstraction on accesses to PyThreadState.tracing and PyThreadState.cframe.use_tracing members. |
I created bpo-46836: "[C API] Move PyFrameObject to the internal C API". |
I closed #107076 as a duplicate of this issue. |
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
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: