-
-
Notifications
You must be signed in to change notification settings - Fork 61
Closed
Description
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
Labels
No labels