Release Overview for 1.4.10
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.
C++ API
DatabaseClosedError: New exception class thrown instead ofDatabaseErrorwhen an operation is attempted which can't be completed because it involves a database whichclose()was previously called on.DatabaseClosedErroris a subclass ofDatabaseErrorso existing code catchingDatabaseErrorwill still work as before. Fixes #772, reported by Germán M. Bravo. Patch from Vaibhav Kansagara.
DatabaseNotFoundError: New exception class thrown instead ofDatabaseOpeningErrorwhen the problem is the problem is "file not found" or similar.DatabaseNotFoundErroris a subclass ofDatabaseOpeningErrorso existing code catchingDatabaseOpeningErrorwill still work as before. Fixes #773, reported by Germán M. Bravo. Patch from Vaibhav Kansagara.
Query: Make&=,|=and^=onQueryobjects opportunistically append to an existing query with a matching query operator which has a reference count of 1. This provides an easy way to incrementally build flatter query trees.
Query: Supportquery &= ~query2better - this now is handled exactly equivalent toquery = query & ~query2and givesquery AND_NOT query2instead ofquery AND (<alldocuments> AND_NOT query2).
QueryParser: Now uses&=,|=and^=to produce flatter query trees. This fixes problems with running out of stack space when handlingQueryobject trees built by abusingQueryParserto parse very large machine-generated queries.
Glass backend
- We no longer flush all pending positional changes when a postlist, termlist
or all-terms is opened on a modified
WritableDatabase. Doing so was incurring a significant performance cost, and the first of these happens internally whenreplace_document(term, doc)is used, which is the usual way to support non-numeric unique ids. We now only flush pending positional changes when committing. Reported and diagnosed by Germán M. Bravo.
Remote backend
- Use
poll()where available instead ofselect().poll()is specified by POSIX.1-2001 so should be widely available by now, and it allows watching any fd (select()is limited to watchingfds < FD_SETSIZE). For any platforms which still lackpoll()we now workaround thisselect()limitation when a high numbered fd needs to be watched (for example, by trying a non-blocking read or write and onEAGAINsleeping for a bit before retrying).
omindex
- Index
.apxland.kthfiles as Apple Keynote. The.apxlextension is used for the XML files inside.keybundles/directories which hold the text content of the presentation, and by handling them we can index .key directories more usefully. It seems they are also sometimes found by themselves. Keynote themes have a.kthextension, andkey2textcan also handle these.
- Pipe input to
pdftotext,pdfinfoanddpkg. These tools all support piping an input file on stdin, which can be a little more efficient when we already have the file open (e.g. to determine its type using libmagic, or to calculate its checksum).
build system
- Use
AM_ICONVto detecticonv()which should handle non-system install of GNU libiconv properly. Fixes #775, reported by Ryan Schmidt.
portability
- Provide fall-back
strptime()implementation for platforms which don't provide it, using the C++11std::get_time()function. We usestrptime()directly where it's available as some older C++11 compilers seem to lackstd::get_time()(GCC 4.8 for example). This is used by the parsedate action, which was added in 1.4.6.
Java
- C++ constant
Xapian::BAD_VALUENOis now wrapped as Java constantXapian.BAD_VALUENO. The previous Java wrapping as functionXapian.getBAD_VALUENO()is still supported for compatibility with existing code.
Perl
- C++ constant
Xapian::BAD_VALUENOis now wrapped as Perl constantXapian::BAD_VALUENO. The previous Perl wrapping as variable$Xapian::BAD_VALUENOis still supported for compatibility with existing code.
PHP
- C++ constant
Xapian::BAD_VALUENOis now wrapped as PHP constantXapian::BAD_VALUENO. The previous PHP wrapping as functionXapian::BAD_VALUENO_get()is still supported for compatibility with existing code.
PHP7
- C++ constant
Xapian::BAD_VALUENOis now wrapped as PHP constantXapian::BAD_VALUENO. The previous PHP wrapping as functionXapian::BAD_VALUENO_get()is still supported for compatibility with existing code.
- configure: Check for
php-config7.3andphp-config7.2as well asphp-config7.1,php-config7.0andphp-config.
Ruby
- C++ constant
Xapian::BAD_VALUENOis now wrapped as Ruby constantXapian::BAD_VALUENO. The previous Ruby wrapping as functionXapian::BAD_VALUENO()is still supported for compatibility with existing code.
- We now recommend using
String#encodeinstead of theIconvclass, since the latter is no longer included with Ruby.
Last modified
7 years ago
Last modified on 02/11/19 23:02:16
Note:
See TracWiki
for help on using the wiki.
