> To that end, these are safe as part of a feature release:
>
> Adding a field or method to a struct/class/enum/etc.
Um, adding fields is a breaking change if you do a binary distribution.
> Z is the patch version. Changes to this indicate that internal changes were made, but that no changes (even compatible changes) were made to the API.
then, contradicting that
> Mark a thing as deprecated as soon as it is considered deprecated, even if that is a patch or minor release.
Deprecation should be considered a change to the API. I'm not going to thank you for filling up my build logs with warnings when I pull in a patch update of your library.
> Deprecation, after all, is a warning condition, not an error condition.
Um, adding fields is a breaking change if you do a binary distribution.
> Z is the patch version. Changes to this indicate that internal changes were made, but that no changes (even compatible changes) were made to the API.
then, contradicting that
> Mark a thing as deprecated as soon as it is considered deprecated, even if that is a patch or minor release.
Deprecation should be considered a change to the API. I'm not going to thank you for filling up my build logs with warnings when I pull in a patch update of your library.
> Deprecation, after all, is a warning condition, not an error condition.
No, not if you use -Werror or equivalent.