wiki:ReleaseOverview/1.4.5

Release Overview for 1.4.5

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-core

  • Add Database::get_total_length() method. Previously you had to calculate this from get_avlength() and get_doccount(), taking into account rounding issues. But even then you couldn't reliably get the exact value when total length is large since a double's mantissa has more limited precision than an unsigned long long.
  • Iterating of positions has been sped up, which means phrase matching is now faster (by a little over 5% in some simple tests).
  • Fix use after free of QueryOptimiser hint in certain cases involving multiple databases only some of which have positional information. This bug was introduced by changes in 1.4.3. Fixes #752, reported and analysed by Robert Stepanek.
  • The inmemory backend now uses binary chop instead of linear search in all places where we're searching for a term or document - we weren't taking advantage of the sorted order everywhere.
  • xapian-core.pc: Specify Libs.private which is needed for static linking, and probably also for shared libraries on platforms without DT_NEEDED or something equivalent. Fixes #751, reported by Matthieu Gautier.
  • On Hurd F_GETLK currently always fails with errno set to ENOSYS - treat this the same way as ENOLCK. This fixes the testsuite on GNU Hurd, broken since the addition of Database::locked() in 1.4.3.
  • Add missing #include "safesyssocket.h", needed on at least FreeBSD to get AF_INET and SOCK_STREAM defined. Fixes https://github.com/xapian/xapian/pull/154, reported by Po-Chuan Hsieh (alternative fix applied was suggested by James Aylett).

Java

  • Fix JNI code to be compatible with Java 6 and earlier, where the final parameter of SetByteArrayRegion() was not const. This also seems to affect GCJ (though GCJ was removed in GCC 7). The incompatibility was introduced in 1.4.4.

Lua

  • Support subclassing of RangeProcessor in Lua.

Perl

  • Add CLONE_SKIP to RangeProcessor and subclases to avoid double deletion if the Perl threads module is in use.
  • Keep references for set RangeProcessor objects, like how we do for ValueRangeProcessor and various other functor objects.

PHP

  • Keep references for set RangeProcessor objects, like how we do for ValueRangeProcessor and various other functor objects.

PHP7

  • Keep references for set RangeProcessor objects, like how we do for ValueRangeProcessor and various other functor objects.

Python3

  • Fix make check under Python 3.2, which was broken in 1.4.4 because Python 3.2 doesn't support the u'foo' syntax.
Last modified 2 years ago Last modified on 16/10/17 05:43:27