They’re definitely related, but I think this is a common misconception people have, that one implies the other, which isn’t true in my experience.
If we said “you can adjust minor or patch according to semver within a ROS release”, that says nothing about ABI stability.
Imagine there’s a class with a bug in it, and you fix the bug by changing logic that exist in the
.cpp file, but also you add a
bool to the class declaration in the
.hpp to keep track of some state. This would fix the bug and according to semver would not break API and therefore could be a patch version update only, but it would still break ABI because the size of the class changed. Now you might be able to fix the same bug without adding a member to the class in the
.hpp file, and that would be the same fix, but without breaking ABI. As far as semver is concerned they’re both patch version changes and are otherwise equivalent, it doesn’t care if it is ABI stable or not.