-
Notifications
You must be signed in to change notification settings - Fork 8
LibraryVersions
Christoph Redl edited this page Apr 12, 2016
·
10 revisions
- For the transition from dlvhex 1.X to 2.X we renamed all libraries
- For ABI versions we use the Apache APR approach to versioning
- DLVHEX and plugins define their ABI compatibility using
DLVHEX_DEFINE_VERSION([DLVHEX_ABI],[X.Y.Z])
in configure.ac
- We are forced to use the libtool shared library versioning system for shared libraries (see below)
- Libraries are built in src/dlvhex/
- see http://www.gnu.org/software/libtool/manual/libtool.html#Versioning
- see http://www.usenix.org/publications/library/proceedings/als00/2000papers/papers/full_papers/browndavid/browndavid.pdf
- see http://www.dwheeler.com/program-library/Program-Library-HOWTO/x36.html#AEN137
- see src/dlvhex/Makefile.am
||dlvhex Release||ABI ||libdlvhexbase||libaspsolver||libdlvhex2-base||libdlvhex2-aspsolver||libdlvhex2-mlpsolver||libdlvhex2-internalplugins|| ||2.5.0 ||7.5.0||- ||- ||12.0.0 ||5.0.0 ||2.0.1 ||5.0.0 || ||2.4.0 ||7.4.0||- ||- ||11.0.0 ||5.0.0 ||2.0.1 ||4.0.2 || ||2.3.0 ||7.3.0||- ||- ||10.0.0 ||5.0.0 ||2.0.1 ||4.0.1 || ||2.2.0 ||7.2.0||- ||- ||9.0.0 ||5.0.0 ||2.0.1 ||3.0.0 || ||2.1.0 ||7.1.0||- ||- ||8.0.1 ||4.0.1 ||2.0.1 ||2.0.1 || ||2.0.0 ||7.0.0||- ||- ||7.0.0 ||3.0.0 ||1.0.0 ||1.0.0 || ||1.7.4 ||- ||6.2.0 ||2.1.0 ||- ||- ||- ||- || ||1.7.3 ||- ||6.1.0 ||2.1.0 ||- ||- ||- ||- || ||1.7.2 ||- ||6.0.0 ||2.0.0 ||- ||- ||- ||- || ||1.7.1 ||- ||6.0.0 ||2.0.0 ||- ||- ||- ||- || ||1.7.0 ||- ||5.1.0 ||1.0.0 ||- ||- ||- ||- || ||1.6 ||- ||5.0.0 ||0.0.0 ||- ||- ||- ||- ||
- ABI version X.Y.Z library version A.B.C
- there are three classes of releases:
- non-interface-changing (e.g., bugfixes in implementation, comment changes):
- increment Z and B
- backwards-compatible interface changes (e.g., class additions, method and data member additions at the end of a class):
- increment Y and A and C
- set Z and B to 0 (increment C if backwards compatible for that particular library)
- all other changes:
- increment X and A
- set Y, Z, B, and C to 0
- non-interface-changing (e.g., bugfixes in implementation, comment changes):
- there are three classes of releases: