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.>