Release Overview for 1.0.1

This page contains a high level description of the more notable changes made for release 1.0.1. For full details, see the NEWS files in each module:

Incompatible ABI Change

We discovered a problem with the handling of the error_string member of the Xapian::Error class which could lead to an attempt to free() already released memory. This issue was introduced in 1.0.0.

We had hoped to avoid any incompatible ABI changes before 1.1.0, but unfortunately there didn't seem to be a sane way to fix this bug without breaking ABI compatibility (and we couldn't leave a bug like this unfixed). This ABI change means you'll need to rebuild your applications against Xapian 1.0.1 to get them to use the new library version - it's not enough to just install 1.0.1 in place of 1.0.0. We'll try hard to avoid needing to break ABI compatibilty again before 1.1.0.

Remote protocol version increased

We've had to change the remote protocol incompatibly, so you should be careful about upgrading a live system as a 1.0.0 client can't talk to a 1.0.1 server, nor vice versa. In the new protocol version we've added the concept of a minor version, so in future a 1.0.X client can work with a 1.0.X+1 server if only the minor version has changed, so by upgrading servers before clients you can keep a live system working smoothly.

Iterating all terms starting with a particular string

Xapian::Database::allterms_begin() and allterms_end now take an optional prefix argument which allows easy iteration over terms starting with a particular string.

QueryParser Improvements

QueryParser wildcard expansion now uses the new prefix feature of Xapian::Database::allterms_begin() and allterms_end which means it works much more efficiently with remote databases.

Multiple boolean prefixed terms with the same term prefix are now combined with OR before such groups are combined with AND. Multiple value ranges on the same value are handled similarly.

OP_VALUE_RANGE efficiency boost

OP_VALUE_RANGE queries now run faster (~25% in our testcase).

xapian-compact runs faster

xapian-compact no longer decompresses and recompresses compressed tags, which reduced its runtime by more than 50% in our test.

omindex improvements

On platforms which provide a suitable API, omindex calls stat() (or lstat()) much less often - in our test the number of explicit calls dropped from ~21000 to ~7000.

Omega HTML parser fix

A long-standing bug (dating back to at least 0.8.2) in the handling of whitespace between certain tags by the HTML parser has been fixed.

"Simple" examples updated

The "Simple" examples in C++ and the bindings now make use of the TermGenerator and QueryParser classes, which makes them more representative of how most people will want to index and query.

Last modified 4 years ago Last modified on 26/01/16 10:10:43