See INSTALL for instructions on configuring, building, and installing this software. See TODO for the to-do list. See HACKING for information relevant to anyone wanting to do development work on the bindings.

Supported Platforms


Most development work has been done on Linux with GCC, but the bindings should work on other Unix-like platforms and with other compilers (we’ve heard success stories for at least Mac OS X and OpenBSD, and the tinderbox builds pass “make check” on FreeBSD and NetBSD).

The Python bindings have been successfully built on Microsoft Windows using Mingw and MSVC: the PHP bindings have been successfully build on Microsoft Windows using MSVC. The other bindings may need a few build tweaks to work

  • contact us via the mailing lists if you want to get them working.

Supported Languages


Bindings for the following languages should be fully functional and ready for real world use:

Java Java bindings (built using JNI) contributed by Eric B. Ridge. See java/README for Java binding specific information.

Perl Perl XS bindings contributed by Alex Bowley and co-maintained by Olly Betts are available from CPAN (module Search::Xapian).

PHP Requires PHP 4 or 5.

Python Requires Python 2.2 or later. Python 3 probably won’t be supported by 1.0.x, but will by 1.1.x. Note that you need to configure Apache’s mod_python or mod_wsgi correctly to avoid deadlocks when using Xapian’s Python bindings - be sure to read the “Apache and mod_python/mod_wsgi” section of the Python bindings documentation.

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

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

C# Tested with Mono C# 1.0.8 and 1.1.8 and Portable.NET 0.6.12. Also tested with Mono C# 1.2.3.1 - note that for Mono runtimes from 1.2 onwards, you need to compile with gmcs (instead of mcs) or you’ll get segmentation faults at runtime. The configure script prefers to use gmcs if it is present, but you can run ‘./configure CSC=mcs’ to force use of mcs even if gmcs is also installed.

If you’re interest in getting other languages supported, see the “Adding support for other programming languages” section in the file HACKING.