wiki:ReleaseOverview/1.4.10

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 of DatabaseError when an operation is attempted which can't be completed because it involves a database which close() was previously called on. DatabaseClosedError is a subclass of DatabaseError so existing code catching DatabaseError will still work as before. Fixes #772, reported by Germán M. Bravo. Patch from Vaibhav Kansagara.
  • DatabaseNotFoundError: New exception class thrown instead of DatabaseOpeningError when the problem is the problem is "file not found" or similar. DatabaseNotFoundError is a subclass of DatabaseOpeningError so existing code catching DatabaseOpeningError will still work as before. Fixes #773, reported by Germán M. Bravo. Patch from Vaibhav Kansagara.
  • Query: Make &=, |= and ^= on Query 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: Support query &= ~query2 better - this now is handled exactly equivalent to query = query & ~query2 and gives query AND_NOT query2 instead of query AND (<alldocuments> AND_NOT query2).
  • QueryParser: Now uses &=, |= and ^= to produce flatter query trees. This fixes problems with running out of stack space when handling Query object trees built by abusing QueryParser 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 when replace_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 of select(). poll() is specified by POSIX.1-2001 so should be widely available by now, and it allows watching any fd (select() is limited to watching fds < FD_SETSIZE). For any platforms which still lack poll() we now workaround this select() limitation when a high numbered fd needs to be watched (for example, by trying a non-blocking read or write and on EAGAIN 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, and key2text can also handle these.
  • Pipe input to pdftotext, pdfinfo and dpkg. 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 detect iconv() 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++11 std::get_time() function. We use strptime() directly where it's available as some older C++11 compilers seem to lack std::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 constant Xapian.BAD_VALUENO. The previous Java wrapping as function Xapian.getBAD_VALUENO() is still supported for compatibility with existing code.

Perl

  • C++ constant Xapian::BAD_VALUENO is now wrapped as Perl constant Xapian::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 constant Xapian::BAD_VALUENO. The previous PHP wrapping as function Xapian::BAD_VALUENO_get() is still supported for compatibility with existing code.

PHP7

  • C++ constant Xapian::BAD_VALUENO is now wrapped as PHP constant Xapian::BAD_VALUENO. The previous PHP wrapping as function Xapian::BAD_VALUENO_get() is still supported for compatibility with existing code.
  • configure: Check for php-config7.3 and php-config7.2 as well as php-config7.1, php-config7.0 and php-config.

Ruby

  • C++ constant Xapian::BAD_VALUENO is now wrapped as Ruby constant Xapian::BAD_VALUENO. The previous Ruby wrapping as function Xapian::BAD_VALUENO() is still supported for compatibility with existing code.
  • We now recommend using String#encode instead of the Iconv class, since the latter is no longer included with Ruby.
Last modified 5 years ago Last modified on 11/02/19 23:02:16
Note: See TracWiki for help on using the wiki.