Add "unstable" frame stack api · Issue #91371 · python/cpython (original) (raw)
We need to provide an API to create, swap and free frame stacks for greenlets.
Since this is primarily for greenlets (and any other stackful coroutines libraries that want to use it) it will be "unstable".
In this case, by "unstable" I mean:
- Starts with an underscore
- Gets PyAPI_FUNC annotations, so we don't strip the symbols from the executable
- Undocumented, except for comments that say it is unstable.
The API will be:
typedef struct _frame_stack {
_PyStackChunk *current_chunk;
PyObject **top;
PyObject **limit;
int chunk_size;
} _PyFrameStack;
PyAPI_FUNC(void) _PyFrameStack_Init(_PyFrameStack *fs, int chunk_size);
PyAPI_FUNC(void) _PyFrameStack_Swap(_PyFrameStack *fs);
PyAPI_FUNC(void) _PyFrameStack_Free(_PyFrameStack *fs);