You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The HAVE_PROTOTYPES macro disappeared recently (commit e4f7327c). While it's not used in Python proper, it seems to be used by some third-party packages. Removing it seems short-sighted. Without it, the pillow package fails to build, because it requires ANSI prototypes and no longer thinks Python provides them.
If it shows up in other libraries, let's see if they can also remove them. The alpha period is the right time for this, and we can always restore later on if it's really necessary.
From what I can tell, the oldest Python that no longer needs this macro is 2.0: if a compiler can't handle prototypes, it can't compile Python.h from 2.0 onwards. So if your library (somehow!) supports Python 2.0 up to 3.16, it's fine with these removals.
Python 1.6 is the last release that needs this macro. So if your library (somehow!!!) supports Python 1.6 up to 3.16, then the macro is needed. I doubt there are any, and we don't need to support them :)
Activity
smontanaro commentedon Oct 28, 2026
@methane @emmatyping
hugovk commentedon Oct 28, 2026
Don't worry about Pillow, we've (this week!) already removed
HAVE_PROTOTYPESandSTDC_HEADERS, they were added 30 years ago and are no longer needed.If it shows up in other libraries, let's see if they can also remove them. The alpha period is the right time for this, and we can always restore later on if it's really necessary.
smontanaro commentedon Oct 28, 2026
Thanks @hugovk. So I should be able to just reference the Pillow repo for the time being?
Keith-S-Thompson commentedon Oct 28, 2026
I don't see a commit e4f7327c. The relevant commit seems to be b26fc41.
hugovk commentedon Oct 29, 2026
Yes, I think so. Prototypes are C89, long required: https://peps.python.org/pep-0007/#c-standards
From what I can tell, the oldest Python that no longer needs this macro is 2.0: if a compiler can't handle prototypes, it can't compile
Python.hfrom 2.0 onwards. So if your library (somehow!) supports Python 2.0 up to 3.16, it's fine with these removals.Python 1.6 is the last release that needs this macro. So if your library (somehow!!!) supports Python 1.6 up to 3.16, then the macro is needed. I doubt there are any, and we don't need to support them :)