gh-143253: Add libabigail suppression file for internal types#143254
Merged
hugovk merged 4 commits intopython:mainfrom Jan 12, 2026
Merged
gh-143253: Add libabigail suppression file for internal types#143254hugovk merged 4 commits intopython:mainfrom
hugovk merged 4 commits intopython:mainfrom
Conversation
Changes to internal structs in Include/internal/pycore_*.h cause false positive ABI violations in make check-abidump because these types are transitively reachable from public APIs like PyInterpreterState. The internal struct layout is not part of the public ABI contract. This adds a suppression specification file that filters out types defined in pycore_*.h files using a regex pattern, and explicitly suppresses PyInterpreterState, _PyRuntimeState, and PyThreadState which are public typedefs aliasing internal structs. The Makefile is updated to pass the suppression file to abidiff.
Member
Author
Yhg1s
approved these changes
Jan 6, 2026
| # Suppress types defined directly in internal headers (pycore_*.h) | ||
| # Regex matches filenames NOT starting with "pycore_", so pycore_* types are suppressed. | ||
| [suppress_type] | ||
| source_location_not_regexp = ^([^p]|p[^y]|py[^c]|pyc[^o]|pyco[^r]|pycor[^e]|pycore[^_]) |
Member
There was a problem hiding this comment.
So weird that there isn't a source_location_regexp and so we have to play these stupid double-negation games.
encukou
reviewed
Jan 7, 2026
Member
There was a problem hiding this comment.
The _PyRuntime variable is defined in pylifecycle.c, and not accessed through a pointer, so it needs its own entry.
Could you add me to CODEOWNERS?
I can't add a suggestion for that so I sent a PR: pablogsal#120
Otherwise LGTM! (I expect it'll need some adjustments in the future.)
@hroncok / @befeleme: for Fedora you'll want to be stricter; don't use this suppressions fule & run abidiff directly rather than make check-abidump
savannahostrowski
approved these changes
Jan 9, 2026
hugovk
approved these changes
Jan 12, 2026
reidenong
pushed a commit
to reidenong/cpython
that referenced
this pull request
Jan 12, 2026
…ython#143254) Co-authored-by: Petr Viktorin <encukou@gmail.com>
thunder-coding
pushed a commit
to thunder-coding/cpython
that referenced
this pull request
Feb 15, 2026
…ython#143254) Co-authored-by: Petr Viktorin <encukou@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes to internal structs in Include/internal/pycore_*.h cause false
positive ABI violations in make check-abidump because these types are
transitively reachable from public APIs like PyInterpreterState. The
internal struct layout is not part of the public ABI contract.
This adds a suppression specification file that filters out types
defined in pycore_*.h files using a regex pattern, and explicitly
suppresses PyInterpreterState, _PyRuntimeState, and PyThreadState
which are public typedefs aliasing internal structs. The Makefile
is updated to pass the suppression file to abidiff.