Release Overview for 1.4.22
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.
glass backend
- Fix bug in recovery from
WritableDatabase::commit()
failing
If renaming to switch the new version file live fails (e.g. due to the disk being full) we discard the changes, try to write and switch to a different new version file with an increased revision (on failure of this too we close the database), then throw
DatabaseError
.
Unfortunately the roll-back of state is not complete, and if we successfully switch to the different new version file then that bad state persists on disk.
In order for this bug to manifest, repeating essentially the same operation which just failed needs to succeed which seems more likely to be a happen when using a filing system which has more sophisticated freespace handling (the reporter was using btrfs), though it's possible with any FS if another process frees up disk space in the small window between the two operations.
Thanks to Uwe Kleine-König for reporting and especially for coming up with an easy way to reproduce.
Omega =
- omindex:
- Add
--date-terms
and--no-date-terms
options. - Extract page/sheet count for OpenDocument text documents and spreadsheets.
- Extract created date and keywords for MS XML formats.
- Add
- scriptindex: Fix handling of an unterminated final line in input file.
- Add OmegaScript commands to report value slot bounds.
- Add OmegaScript
$sortableunserialise{}
command.
Lua
- When passing a Lua function for a Xapian functor object, the wrapper
object was leaked in most cases (except for
Xapian::StemImplementation
).
Perl
- Fix testsuite and docs for Perl 5.36.0 change.
Prior to Perl 5.36.0 retrieving the string value of an integer could set the flag read by
SvPOK()
, but that's no longer the case in Perl 5.36.0 and later.
We already document the need to explicitly stringify numeric values passed where a string is needed, so just add the missing stringification to the testcase and document that it's required in more places when using Perl 5.36.0 and later.
PHP8
- Add support for PHP8 (PHP 8.0, 8.1 and 8.2 should all work).
The PHP bindings are now implemented entirely in C++ code using PHP's C extension API, and the
xapian.php
wrapper file no longer exists. This change means smaller and faster bindings. See the documentation for a recommended way to write code which works with both PHP7 and PHP8 bindings.
To add PHP8 support we've had to drop support for PHP7. PHP7.4 reached end of life on 2022-11-28 so hopefully this isn't a problem for too many people, but if you need support for PHP7 please use xapian-bindings <= 1.4.21.
Fixes #817, reported by Ryan Schmidt.
- We now set the version in the metadata of the PHP module to the xapian-bindings version (previously it was unversioned).
Python2
- Drop support for Python 2.6. We need to use SWIG 4.1.0 for PHP8 support, but that no longer supports Python 2.6 so we have to raise the minimum Python 2 version to Python 2.7.
The last Python 2.6 release was in 2013 so hopefully this isn't a problem for anyone, but if you still need to use Python 2.6 please use xapian-bindings <= 1.4.21.
Python3
- Drop support for Python 3.2. We need to use SWIG 4.1.0 for PHP8 support, but that no longer supports Python 3.2 so we have to raise the minimum Python 3 version to Python 3.3.
The last Python 3.2 release was in 2014 so hopefully this isn't a problem for anyone, but if you still need to use Python 3.2 please use xapian-bindings <= 1.4.21.
Ruby
- Fix new Ruby 3.2 warning "undefining the allocator of T_DATA class swig_runtime_data" (fixed by the change to using a newer SWIG version).