[zeromq-dev] libzmq dylib versioning

Martin Lucina mato at kotelna.sk
Fri Sep 23 16:04:56 CEST 2011


ph at imatix.com said:
> On Thu, Sep 22, 2011 at 2:38 PM, Mikko Koppanen
> <mikko.koppanen at gmail.com> wrote:
> > On Thu, Sep 22, 2011 at 6:51 PM, Pieter Hintjens <ph at imatix.com> wrote:
> >> OK, I've make that change and pushed it to 3-0 master.
> >
> > Thanks,
> >
> > I think 4.0 needs to be 3.0.0 in that case..?
> 
> Not really... the major ABI change was in 3.0. 4.0 keeps the same ABI,
> possibly with minor changes. The ABI in 4.0 hasn't changed afaik.
> Dropping ZMQ_DEALER changes the API but not the binary interface (i.e.
> you can load a 4.0 library and use it from 3.0 code, and will get
> error return codes, but not stack dumps).

The comment in configure.in which I put right next to the LTVER setting
will point you to
http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
which has a fairly clear step-by-step process to follow for updating the
ABI version.

I haven't been following the ABI changes closely but from what is said in
this thread libzmq 3.x should definitely be using an ABI version of 2.x. As
for libzmq 4.x, that depends on whether you're counting header files as
part of the documented interface.

When in doubt, I would follow the definition of "correct programs which ran
in the past continue to run in the future". Hence, dropping ZMQ_DEALER in
4.x implies a new ABI version of 3 since "getting an error return code"
does not mean a correct program will continue to run.

For further discussion in great detail on maintaining APIs and ABIs,
including ways on supporting multiple ABI versions in a single dynamic
library, see Ulrich Drepper's paper at
http://www.akkadia.org/drepper/dsohowto.pdf, specifically section 3.

Cheers,

-mato



More information about the zeromq-dev mailing list