Release Overview for 1.4.12

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.



  • Xapian::PostingSource: When a PostingSource without a clone() method is used with a Database containing multiple shards, the documented behaviour has always been that Xapian::InvalidOperationError is thrown. However, since at least 1.4.0, this exception hasn't been thrown, but instead a single PostingSource object would get used for all the shards, typically leading to incorrect results. The actual behaviour now matches what was documented.
  • Xapian::Document: When updating a document use a emplace_hint() to make the bulk insertion O(n) instead of O(n·log(n)), and use std::move() to avoid unnecessary copying.

remote backend

  • Fix remote protocol design bug. Previously some messages didn't send a reply but could result in an exception being sent over the link. That exception would then get read as a response to the next message instead of its actual response so we'd be out of step. Fixes #783, reported by Germán M. Bravo. This fix necessitated a minor version bump in the remote protocol (to 39.1). If you are upgrading a live system which uses the remote backend, upgrade the servers before the clients.


  • Improve API documentation for Xapian::Query class. Add missing doc comments and improve some of the existing ones. Problems highlighted by Дилян Палаузов in #790.



  • Fix typo in mimetypes used for Apple iWork documents ("apply" instead of "apple") which meant that these documents weren't actually being indexed. Patch from Bruno Baruffaldi.


  • Add date=unixutc. The existing date=unix works in localtime which is unhelpful if you want to use it on the output of parsedate since that's in UTC; date=unixutc is just like date=unix except it always works in UTC.


  • Remove documented limitation of $subdb and $subid - the implementation assumed that each omega database name corresponded to a single Xapian database, and if a database name referred to a stub database file expanding to multiple Xapian databases then they would misbehave. Such cases are now handled properly as well.



  • Fix build for changes in Sphinx 2.0 (which drops support for sphinx.main()). Fixes #778, reported by karolyi. Also reported by Gaurav Arora.
  • We now throw UnicodeEncodeError for bad Unicode string input. Previously cases such as a lone surrogate would be handled by quietly skipping the bad codepoints when converting to UTF-8 to pass to Xapian.
  • We no longer use the deprecated old-style Py_UNICODE API, which currently gives deprecation warnings and is slated to be removed in Python 4.0.


  • Add support for block iteration. All the iterator methods in the Ruby API now accept an optional block. If no block is given an array is returned so existing code will still work. Partly based on a patch in from Cong Ding.
  • Add missing wrappers for all the C++ methods returning iterators which weren't wrapped for Ruby. Fixes #777, reported by do.
Last modified 5 years ago Last modified on 25/07/19 06:13:01
Note: See TracWiki for help on using the wiki.