# Releases of sigsum-c

## What is a release?

A release of sigsum-c version X.Y.Z corresponds to a git tag of the
form vX.Y.Z. The version number with major X, minor Y and patch-level
Z is intended to match semantic versioning requirements for the
library API. I.e., the major number is incremented on large or
disruptive changes, the minor number is incremented when API features
are added in a backwards compatible manner, and the patch-level is
incremented for releases that only fix bugs.

The tag should be signed by the person making the release.

## Release information

New releases are announced on the [sigsum-announce][] mailing list,
with a summary of user-visible changes documented in the [NEWS][]
file.

[NEWS]: ./NEWS
[sigsum-announce]: https://lists.sigsum.org/mailman3/postorius/lists/sigsum-announce.lists.sigsum.org/

## Binary (ABI) compatibility, or lack thereof

When building a shared library, libsigsum.so, ABI compatibility
between versions matter. Binary compatibility is separate from the
semantic versioning of the library API. E.g., it may happen that a
future release extends the API in a backwards compatible way, but the
changes are implemented in a way that breaks ABI compatibility. That
said, patch-level releases should avoid ABI breaks if at all possible.

The library soname is bumped on incompatible ABI changes, and symbol
versioning is used as well. The details on how this will be handled
for future releases are not yet determined. ABI breaks and other ABI
issues are documented in the NEWS file for each release.
