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 ofDatabaseError
when an operation is attempted which can't be completed because it involves a database whichclose()
was previously called on.DatabaseClosedError
is a subclass ofDatabaseError
so existing code catchingDatabaseError
will still work as before. Fixes #772, reported by Germán M. Bravo. Patch from Vaibhav Kansagara.
DatabaseNotFoundError
: New exception class thrown instead ofDatabaseOpeningError
when the problem is the problem is "file not found" or similar.DatabaseNotFoundError
is a subclass ofDatabaseOpeningError
so existing code catchingDatabaseOpeningError
will still work as before. Fixes #773, reported by Germán M. Bravo. Patch from Vaibhav Kansagara.
Query
: Make&=
,|=
and^=
onQuery
objects 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 &= ~query2
better - this now is handled exactly equivalent toquery = query & ~query2
and givesquery AND_NOT query2
instead 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 handlingQuery
object trees built by abusingQueryParser
to 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 onEAGAIN
sleeping for a bit before retrying).
omindex
- Index
.apxl
and.kth
files as Apple Keynote. The.apxl
extension is used for the XML files inside.key
bundles/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.kth
extension, andkey2text
can also handle these.
- Pipe input to
pdftotext
,pdfinfo
anddpkg
. 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_ICONV
to 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_VALUENO
is 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_VALUENO
is now wrapped as Perl constantXapian::BAD_VALUENO
. The previous Perl wrapping as variable$Xapian::BAD_VALUENO
is still supported for compatibility with existing code.
PHP
- C++ constant
Xapian::BAD_VALUENO
is 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_VALUENO
is 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.3
andphp-config7.2
as well asphp-config7.1
,php-config7.0
andphp-config
.
Ruby
- C++ constant
Xapian::BAD_VALUENO
is 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#encode
instead of theIconv
class, since the latter is no longer included with Ruby.
Last modified
6 years ago
Last modified on 02/11/19 23:02:16
Note:
See TracWiki
for help on using the wiki.