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-configscript 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-delvenow defaults to escaping document values it outputs, as they can contain binary data.
- Fix leak in binary
std::stringtypemaps, which are use for document values and serialised data.
- 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.
- 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
hextobinwhich converts a hex string to a binary string.
- New actions
valuepackedwhich assist adding date values for sorting and date range filtering.
- New OmegaScript commands:
$sort: does a string sort on an
$cond: multi-way conditional inspired by LISP's COND, which provides a neater way to write a cascade of
$switch: multi-way conditional which provides an even neater way to write a cascade of
$subid: report the subdatabase name and the docid in that subdatabase.
$unprefix: expose the existing code inside omega for splitting up a term.