Olly Betts
2012-Jun-28 07:14 UTC
[Xapian-discuss] Versions of languages to support in Xapian 1.4.x
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
James Aylett
2012-Jun-28 11:11 UTC
[Xapian-discuss] Versions of languages to support in Xapian 1.4.x
On 28 Jun 2012, at 08:14, Olly Betts <olly at survex.com> wrote:> I'd like to solicit feedback on the versions of languages we should aim > to support in Xapian 1.4.x.For python I'd say 2.6 and 3.2. A ruby guy here says most people should be on 1.9.3 -- my understanding of ruby is that 1.8 and 1.9 were sufficiently concurrent that you have a similar situation to python. Apparently 1.9.2 is buggy, so supporting 1.9.1 (and 1.8.6 or maybe by then 1.8.7) seems sensible.> 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.J2SE 5 was September 2004, so older than that really doesn't make sense. Java SE 6 was December 2006 and is still supported, which 5 isn't. 5 supported Windows 95/98/ME but Java 6 worked at least for a while. I'd say recommended minimum 6 but we should keep the hard minimum at whatever works, which is presumably still JDK2 / J2SE 2.0 from 1998. Most of the changes since then I *believe* are language and library level with JNI remaining as is... J
Dan Colish
2012-Jul-02 15:29 UTC
[Xapian-discuss] Versions of languages to support in Xapian 1.4.x
> 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.I'm wondering how we can really set a minimum requirement that we cannot test with. I know that OSX 10.6 still uses 4.2 so that might be one spot to cut off at. IMHO, < 4 might only be useful for OpenBSD which does have a port. They might be able to conduct some testing as well.> > 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. >It would be great if we could start building against clang, but I don't see it as a high priority. If buildbot could be configured to run a job that regularly tried to build with clang and the fixes were minor, that would be a good intro project for someone looking to get involved.>