Release Overview for 1.4.6

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.


  • MSet::snippet(): We were only escaping output for HTML/XML in some cases, which would potentially allow HTML to be injected into output (this has been assigned CVE-2018-0499).
  • Now supports building using MSVC using the standard build system. MSVC 2015 or later is required for decent C++11 support. Both 32- and 64-bit builds are now supported.
  • API classes now support C++11 move semantics when using a compiler which we are confident supports them.
  • Added Indonesian stemming algorithm and stopword list.
  • Fix glass freelist bug when changes to a new database which didn't modify the termlist table were committed. In this corner case, a block which had been allocated to be the root block in the termlist table was leaked. This was largely harmless, except that it was detected by Database::check() and caused it to report an error. Reported by Antoine Beaupré and David Bremner.
  • Fix glass freelist bug with cancel_transaction(). The freelist wasn't reset to how it was before the transaction, resulting in leaked blocks. This was largely harmless, except that it was detected by Database::check() and caused it to report an error.
  • Improve the glass backend's per-term wdf upper bound for terms which occur in more than one document, which will tend to allow matches to short-cut sooner and so complete faster.
  • The installed xapian-config script is now cleaned up by removing code to handle use before installation. This extra code contained build paths which meant the build wasn't bit-for-bit reproducible unless the same build directory name was used.
  • xapian-delve now defaults to escaping document values it outputs, as they can contain binary data.

Java Bindings

  • Fix leak in binary std::string typemaps, which are use for document values and serialised data.

Python Bindings

  • Now support building with sphinx >= 1.7 (while still working with < 1.7).


  • When indexing HTML check for the HTML5 doctype or legacy doctype declaration and use default charset UTF-8 if either is present. Previously we always used ISO-8859-1, which is correct for older HTML versions, but not for HTML5.
  • scriptindex:
  • Deprecate allowing spaces around = in scripts. This was never documented as supported, and leads to a missing argument quietly swallowing the next action rather than using an empty value or giving an error.
  • New action hextobin which converts a hex string to a binary string.
  • New actions parsedate and valuepacked which assist adding date values for sorting and date range filtering.
  • New OmegaScript commands:
  • $sort: does a string sort on an OmegaScript list, with u (unique) and r (reverse) options.
  • $cond: multi-way conditional inspired by LISP's COND, which provides a neater way to write a cascade of $if checks.
  • $switch: multi-way conditional which provides an even neater way to write a cascade of $if{$eq{X,VALUE1},$if{$eq{X,VALUE2},...}}.
  • $subdb and $subid: report the subdatabase name and the docid in that subdatabase.
  • $termprefix and $unprefix: expose the existing code inside omega for splitting up a term.
Last modified 6 years ago Last modified on 02/07/18 07:31:42
Note: See TracWiki for help on using the wiki.