From 7890173078d185548f1f058322d8ddc3b18cfc81 Mon Sep 17 00:00:00 2001 From: Ralf Wildenhues Date: Sun, 1 Nov 2009 11:38:23 +0100 Subject: [PATCH] Improve versioning algorithm documentation. * doc/libtool.texi (Updating version info): Repeat the algorithms in different, hopefully simpler terms. * THANKS: Update. Prompted by Richard B. Kreckel. Signed-off-by: Ralf Wildenhues --- ChangeLog | 8 ++++++++ THANKS | 1 + doc/libtool.texi | 31 +++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/ChangeLog b/ChangeLog index 496911b9d..61bc746bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-11-01 Ralf Wildenhues + + Improve versioning algorithm documentation. + * doc/libtool.texi (Updating version info): Repeat the + algorithms in different, hopefully simpler terms. + * THANKS: Update. + Prompted by Richard B. Kreckel. + 2009-11-01 Ingo Weinhold (tiny change) Support for the Haiku operating system. diff --git a/THANKS b/THANKS index 03cd59275..691017d1e 100644 --- a/THANKS +++ b/THANKS @@ -145,6 +145,7 @@ Rainer Orth ro@TechFak.Uni-Bielefeld.DE Rainer Tammer tammer@tammer.net Ralf Menzel menzel@ls6.cs.uni-dortmund.de + Richard B. Kreckel kreckel@ginac.de Richard Purdie rpurdie@rpsys.net Richard Sandiford richards@transitive.com Robert Garron Robert.Garron@Access3000.net diff --git a/doc/libtool.texi b/doc/libtool.texi index 27bf221b5..482e635ca 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -2870,6 +2870,37 @@ Instead, use the @option{-release} flag (@pxref{Release numbers}), but be warned that every release of your package will not be binary compatible with any other release. +The following explanation may help to understand the above rules a bit +better: consider that there are three possible kinds of reactions from +users of your library to changes in a shared library: + +@enumerate 1 +@item +Programs using the previous version may use the new version as +drop-in replacement, and programs using the new version can also work +with the previous one. In other words, no recompiling nor relinking +is needed. In this case, bump @var{revision} only, don't touch +@var{current} nor @var{age}. + +@item +Programs using the previous version may use the new version as +drop-in replacement, but programs using the new version may use APIs not +present in the previous one. In other words, a program linking against +the new version may fail with ``unresolved symbols'' if linking against +the old version at runtime: set @var{revision} to 0, bump @var{current} +and @var{age}. + +@item +Programs may need to be changed, recompiled, relinked in order to use +the new version. Bump @var{current}, set @var{revision} and @var{age} +to 0. +@end enumerate + +@noindent +In the above description, @emph{programs} using the library in question +may also be replaced by other libraries using it. + + @node Release numbers @section Managing release information -- 2.47.2