[geos-devel] Versioning scheme,
binary compatibilities and future of GEOS
strk at refractions.net
strk at refractions.net
Sun Dec 11 20:00:27 EST 2005
After a friendly discussion with FrankW on #mapserver I finally
took a decision about next GEOS releases layout.
The important point is:
No efforts will be taken to keep the C++ library
binary interface compatible between releases.
The corollary is:
All love goes to the C interface, which will be
carefully kept binary compatible between releases.
C++ library soname will be bound to full GEOS release version,
actually advertising that *every* new release of it is
binary-incompatible with *every* other release.
[ see -release flag of libtool ]
C library soname will keep using the libtool versioning
scheme INTERFACE_{CURRENT,AGE,REVISION} to encode
binary compatibility.
[ see -version-info flag of libtool ]
Release versioning would then be unbound from library
versioning and will be able to hold its own meaning.
A simple proposal for this meaning could be:
- MAJOR: increments when substantial changes
take place (not well defined)
- MINOR: increments when new stuff is added
(either in C lib or outside it - consider
swig languages), reset on higher increments
- MICRO: as usual, bug fixes++, reset on higher increments.
Using the above layout next major release of GEOS would
be composed as follows:
Release version: GEOS-3.0.0 (new versioning scheme)
C lib soname: libgeos_c.so.1 (compatible with GEOS-2.2.x)
C++ lib soname: libgeos.so.3.0.0 (compatible with itself)
If this convinces all of you as well (or a good part of you, or
noone talks and I take it for good), the only thing left before
we release GEOS-3.0.0 is taking a closer look at the following:
- GEOS_FIRST_INTERFACE and GEOS_LAST_INTERFACE #defines
in geos/version.h (I think they should be removed)
- geos-config --version output (I think it should print
release version)
- geos-config --libs (currently adds a -lgeos, might add -lgeos_c
instead, but I'm unsure about consequences for users - apart
feeling warned about troubles).
- geos.m4 setting of GEOS_LIBS (see above item)
- PostGIS support for the new GEOS versioning scheme
(1.1.0 will hook on the C api, but 1.0 branch might
require a bit of attention in the GEOS transition)
Comments and/or moral support highly welcome :P
--strk;
/"\ ASCII Ribbon Campaign
\ / Respect for low technology.
X Keep e-mail messages readable by any computer system.
/ \ Keep it ASCII.
More information about the geos-devel
mailing list