[gst-devel] Versioning of GStreamer

Thomas Vander Stichele thomas at apestaart.org
Thu May 11 02:59:03 CEST 2006


Hi,

> GStreamer's shared library is named libgstreamer-X.Y.so.A.B.C
> Y is incremented when there is an ABI/API break (interfaces changed/removed).
> X is incremented whenever Y rolls back to 0 (1.9 -> 2.0)

gstreamer gets released with version number x.y.z

The X.Y you mention in the library name are directly taken from x.y from
the above version, except in one corner case - the latest prerelease for
a stable version will already have x.(y+1) or possibly (x+1).0, to shake
out the last bugs related to bumping the major-minor.

Your rollback statement is a little confusing.  I see two ways to
interpret it:
- whenever Y threatens to become two digits (ie 10), we increase X.
this is definately not the case, GStreamer has no problems with actual
numbers as a part of the version number.
- whenever we choose to reset Y to 0, we increment X.  This is the
normal version strategy for a lot of libraries, but formulated in
reverse :) If this is the case, your examples are badly chosen because
the 1.9->2.0 is misleading and can be interpreted as before.  In any
case, what we do is "If we think GStreamer is ready to be called
1.whatever, we will increment X to 1, and reset Y to 0"

(Note that any resetting of Y to 0 will be a rare event indeed and
celebrated with barbecues, trips to Belgian bars and easter meat
orgies.)

> B is incremented when interfaces are added, but not removed
> or otherwise changed (made inline, etc). When B rolls back to 0,
> A is incremented (0.9 -> 1.0).
> 
> C is changed when the source code is changed, but there is no change
> in the public interface (e.g., bug fixes).

Due to the rollback, and the fact that library versioning is complicated
already, I prefer not to try and understand what you just wrote.
Instead, I'd prefer pointing you to configure.ac which has comments on
this, as well as the libtool manual, which explains the scheme we follow
in more detail than I can possibly manage.

As a pretty much direct consequence of the ABI/API promises we make in
stable releases, it is pretty much guaranteed that, when Y is an even
number, A will always be 0, as will C, while B gently increases as we
add API (I hope I didn't make any mistakes here).

Confused yet ?

Good luck,
Thomas





More information about the gstreamer-devel mailing list