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.