bpo-46409: Make generators in bytecode by markshannon · Pull Request #30633 · python/cpython
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is a lie.
We don't want to expose InterpreterFrame in public headers, so we can't do the sensible thing and declare gi_frame as:
InterpreterFrame gi_frame;
as C won't allow incomplete types in structs, even as the last member.
We could improve this by breaking up the header, so the public API sees a different definition. Still a lie, but a more elegant one.
Public header:
typedef struct { _PyGenObject_HEAD(gi) } PyGenObject;
Private header:
typedef struct { _PyGenObject_HEAD(gi) InterpreterFrame gi_frame; } PyGenObject;
Probably best done in a different PR, though.