[Xapian-discuss] Versions of languages to support in Xapian 1.4.x

Olly Betts olly at survex.com
Thu Jun 28 08:14:06 BST 2012


I'd like to solicit feedback on the versions of languages we should aim
to support in Xapian 1.4.x.  I can't say for sure when 1.4.0 will be
released, but I suspect at least 6 months from now.

Our rule of thumb is not to expend effort supporting versions of things
which aren't supported by their development teams, but some of the
longer-lived distros take on support for older versions, so things are not
always quite as clear cut as that might suggest.

We can also have a different hard minimum to the recommended minimum.

The oldest currently supported Ubuntu LTS (hardy) goes out of support in
April 2013, so I think it's reasonable to disregard that for 1.4.x, like
we did for breezy with Xapian 1.2.x.  Anyone still running it by then is
likely to have a very conservative mindset.

GCC
===

Xapian 1.0 required at least GCC 2.95.3 (but not GCC 2.96).

Xapian 1.2 has a hard minimum requirement of GCC 3.1 (which allowed us
to remove a few workarounds for older versions), but we recommend using
at least 4.1.

Xapian 1.3.x currently has 3.1 as a hard minimum, but recommends at
least 4.3.

Aside from it not being so easy to test with anything before GCC 4.3,
there don't seem to be very compelling reasons to pick a particular hard
minimum.  Requiring C++11 support might be nice, but I think that's too
aggressive a target currently.  So I'm tempted to leave this as it is.

Other C++ compilers
===================

Recent clang seems to actually produce a working Xapian, but I'm not
sure when it started worked (older versions produced code which
seg-faulted when handling exceptions).  I've not tried any other
compilers very recently.  Feedback welcome.

C#
==

I don't really know enough about Mono to set a useful minimum version.

Portable.net seems essentially dead now, and I don't think anyone has
tested Xapian with it for years, so I think it's not useful to mention.

Java
====

The README in xapian-bindings notes you need "Java 2 (i.e. JDK 1.2)" to
get JNI, but I know that's really ancient now.  I don't know what a sane
minimum version is.

Lua
===

Currently we claim in 1.3.x to support Lua 5.1 and newer, and have
tested recently with 5.1 and 5.2, which seems reasonable.  There's not
been a 5.0 release for 6 years, while 5.1.5 was released 2012-02-17.

So I'm thinking "5.1 and newer".

Perl
====

1.3.x says "The bindings here probably need Perl 5.8 or later."  You
need at least 5.8.7 if you want to use Xapian and the Perl threads
module.  Perl upstream only maintain 5.14 and newer, but that seems
rather aggressive - e.g. Debian stable has 5.10.1 and Ubuntu hardy
5.8.8.

5.10 seems a reasonable minimum, or perhaps 5.8.7.

PHP
===

1.3.x requires "PHP >= 5.2 (older versions are no longer supported by
the PHP developers)".  It seems the supported minimum upstream is now
5.3, so perhaps that's a good minimum.  5.4 doesn't actually fully work
currently (subclassing Xapian classes in PHP fails).

We could add namespace support for 5.3 and newer, but I think we'd
want to offer the current API as an alternative for at least a
transitional period, so that doesn't actually require us to drop 5.2
support.

But overall, I'm thinking "5.3 and newer".

Python
======

1.3.x requires "Python 2.4 or later", but 2.6 is the oldest supported
by the Python developers, and is now "security fixes only".  Apparently
raising the requirement to 2.6 might make adding Python 3 support
simpler too.

If/when we get Python 3 support finalised, the obvious choices for the
minimum to support are 3.1 (security fixes until June 2014) or 3.2
(since few distros have 3.1 - Ubuntu lucid seems to be the only one).

Ruby
====

1.3.x currently says:

	Requires Ruby 1.8 or later.  With Ruby 1.9.0, the testsuite
	fails due to a bug in the test/unit module, but applications
	using the bindings should work fine.  With Ruby 1.9.1, the
	testsuite passes.

It seems 1.8 is still alive, but I don't know if a particular point
release would make a sensible minimum - it seems 1.8.5 and older are
no longer supported (and even Ubuntu hardy has 1.8.6):

http://bugs.ruby-lang.org/projects/ruby-18/wiki/ReleasePlan

So "1.8.6 and newer" seems good.

Tcl
===

Currently 1.3.x says:

	Requires Tcl 8.1 or later (Tcl 8.0 could be made to work
	without too much work, but versions 8.3 and earlier are no
	longer supported by the Tcl developers, so it doesn't make
	sense for us to expend effort to support them).

That seems to be true still, and Ubuntu lucid and natty have 8.4 as
the default version of Tcl.  I'm thinking we declare 8.4 as the minimum,
but note that 8.1 and newer may well still work (because of Tcl's stubs
mechanism).

Cheers,
    Olly



More information about the Xapian-discuss mailing list