Skip to content

Add a struct, slot & function for checking an extension's ABI #137210

Description

@encukou

Feature or enhancement

See discussion: https://discuss.python.org/t/module-slot-for-checking-abi-compatibility/96443/

The checks we can do using C API are limited, but would still be useful, e.g. for the case of mixing up GIL-ful and free-threaded extensions/builds.

I propose adding:

  • PyABIInfo struct with:
    • abiinfo_major_version
    • abiinfo_minor_version
    • flags which can be set to:
      • PyABIInfo_DEFAULT_FLAGS
      • PyABIInfo_STABLE
      • PyABIInfo_INTERNAL
      • PyABIInfo_FREETHREADED
      • PyABIInfo_GIL
    • build_version
    • abi_version
  • int PyABIInfo_Check(PyABIInfo *info, const char *module_name)
  • PyABIInfo_VAR(NAME) macro that defines a suitable PyABIInfo variable
  • Py_mod_abi, a module slot that causes a PyABIInfo_Check call

C API WG vote pending: capi-workgroup/decisions#72

Linked PRs

Activity

  1. added a commit that references this issue on Sep 5, 2025
  2. encukou commented on Sep 5, 2025

    @encukou
    MemberAuthor

    Keeping open for a touch-up; see #137212 (comment)

  3. added a commit that references this issue on Sep 8, 2025
  4. added 2 commits that reference this issue on Sep 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions