InsightSoftwareConsortium / InsightSoftwareConsortium/ITK

GitHub action to detect ABI incompatibilities for commits

Open
#5,083 0 comments 0 reactions 0 assignees View on GitHub
type:Design
Dominant language
C++
Stars
1.7k
Forks
748
Avg merge
1d 1h
Merged PRs (30d)
64

Description

### Description

Currently, ITK relies on its reviewers to detect API breaks. This is error-prone and effort-intensive, especially when changes are extensive. It may be useful to have some automated tool (e.g. through an GitHub Action) that detects such breaks automatically whenever a commit is pushed.

### Impact analysis

Automatically detecting ABI incompatibilities/API breaks would benefit the toolkit as we would no longer rely on human reviewers, which may miss some breaks.

These commits could be identified with some label so that they are considered only for a new major release.

### Actual behavior

API/ABI breaks are identified by human code reviewers.

### Versions

N/A

### Additional Information

Related resources:
https://manpages.ubuntu.com/manpages/jammy/en/man1/abi-compliance-checker.1.html
https://pkgs.alpinelinux.org/package/edge/main/x86/abi-compliance-checker
https://formulae.brew.sh/formula/abi-compliance-checker
https://github.com/conda-forge/abi-compliance-checker-feedstock
https://github.com/lvc/api-sanity-checker
https://github.com/lvc/abi-compliance-checker

This may be an interesting thing to consider for the NumFOCUS SDG or POSSEE.

Slightly related, I am sure that there are tools out there that are able to do the version handling automatically, but I ignore if such tools exist for C++, what they would involve in terms of orchestrating all aspects involved by a release in ITK (i.e. the test data repository, the SWG, the Sphinx Examples, the remote modules, etc.), or what the downsides of these tools are. They may be helpful to shorten the release cycle as it would be automatic, and reduce manual work.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.