[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