Release Overview for 1.2.16

This page contains a high level description of the most notable changes in this release. For full details of user-visible changes, see the NEWS files in each module:

See also the full list of bug reports marked as fixed in this release.


  • Starting from this release, we're compressing source tarballs with xz instead of gzip.



  • PositionIterator,PostingIterator,TermIterator,ValueIterator: Don't segfault if skip_to() or check() is called on an iterator which is already at_end(). Reported by David Bremner.

brass and chert backends

  • Reuse a cursor for reading values from valuestreams rather than creating a new one each time. This can dramatically reduce the number of blocks redundantly reread when sorting by value. The rereads will generally get served from VM cache, but there's still an overhead to that.

build system

  • Split XAPIAN_LIBS out of XAPIAN_LDFLAGS so that -l flags for libraries configure detects are needed appear after -L flags specified by the user that may be needed to find such libraries. (fixes#626)
  • XO_LIB_XAPIAN now handles the user specifying a relative path in XAPIAN_CONFIG, e.g.: "./configure XAPIAN_CONFIG=../xapian-core/xapian-config"


  • Fix chert database check that first docid in each doclength chunk is more than the last docid in the previous chunk - previously this didn't actually work.
  • Fix database check not to falsely report "position table: Junk after position data" whenever there are 7 unused bits (7 is OK, more than 7 isn't).
  • Fix to reported block numbers for links within the B-tree.
  • Fix database consistency checking to always open all the tables at the same revision - not doing this could lead to false errors being reported after a commit interrupted by the process being killed or the machine crashing. Reported by Joey Hess in


  • quest: Add --check-at-least option.


  • Fixes for mingw, NetBSD, OpenBSD and AIX.
  • Fix failure when built with -D_GLIBCXX_DEBUG - we were modifying the top() element of a heap before calling pop(), such that the heap comparison operation (which is called when -D_GLIBCXX_DEBUG is on to verify the heap is valid) would read off the end of the data. In a normal build, this issue would likely never manifest.
  • configure: When generating ABI compatibility checks in xapian/version.h, pass $CXXFLAGS and $CPPFLAGS to $CXXCPP as they could contain options which affect the ABI (such as -fabi-version for GCC). (Fixes #622)
  • Microsoft GUIDs in binary form have reversed byte order in the first three components compared to standard UUIDs, so the same database would report a different UUID on Windows to on other platforms. We now swap the bytes to match the standard order. With this fix, the UUIDs of existing databases will appear to change on Windows (except in rare "palindronic" cases).
  • Under cygwin, use cygwin_conv_path() if using a new enough cygwin version, rather than the now deprecated cygwin_conv_to_win32_path(). Reported by "Haroogan" on the xapian-devel mailing list.

debug code

  • Fix assertion failure which sometimes happened when an OR decayed to an AND - the ordering of the subqueries by estimated termfreq may not be the same as it was when the OR was constructed, as the subqueries may themselves have decayed. Reported by Michel Pelletier.



  • Fix off-by-one when finding documents to delete which would sometimes cause omindex to fail to delete documents from the database when they weren't refound during an index update.
  • Decode dates in xlsx files.
  • Ignore extensions 'adm', 'cur', and 'ico' by default.
  • Group-readable files which are owner-readable but not world-readable should still get a "readable by owner" term added. Reported by Emmanuel Garette. build system:



  • Pass 0 instead of NULL for non-pointer parameter to av_fetch (spotted due to GCC 4.7 warning).


  • smoketest.php: If running under PHP >= 5.4, skip the tests we know will fail with a message explaining this.


  • Provide bindings version in xapian.__version__ as per PEP 396. (see #346)
  • python/docs/examples/ Use Pythonic iteration over the ESet.


  • Omit internal classes and methods from the rdocs.
Last modified 8 years ago Last modified on 26/01/16 10:10:43
Note: See TracWiki for help on using the wiki.