Skip to content

Checking API, ABI & bytecode stability in pre-merge CI #120

@ncoghlan

Description

@ncoghlan

Spotting ABI compatibility breaks, bytecode compatibility breaks, and public API additions in maintenance patches is currently still reliant on human code review, and it's unfortunately pretty easy to miss the negative implications of seemingly innocent low level changes.

However, there are tools available that should allow us to automate at least some of those checks in Travis CI and Appveyor.

This is a tracking issue to start collecting some of the items we'd need in order to be able to do effective checks for all of these items for the maintenance branches, and for the stable ABI on the development branch.

  • Bytecode magic number stability checking: https://bugs.python.org/issue29514
  • Document the compatibility expectations somewhere in the developer guide (or in PEP 387?)
  • Export public C API symbols for given X.Y.0 release (autotools build toolchain)
  • Export public C API symbols for given X.Y.0 release (MSVC build toolchain)
  • Check currently exported symbol list against reference list for maintenance branches
  • Export public C API symbols for given Py_LIMITED_API setting (autotools build toolchain)
  • Export public C API symbols for given Py_LIMITED_API release (MSVC build toolchain)
  • Check Py_LIMITED_API exported symbol lists against reference lists for all branches
  • Add release process step to export the symbol lists when entering X.Y.0 release candidate phase
  • As above, but using libabigail to look for ABI incompatibilities (e.g. struct size changes, function signature changes)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions