[omega] Compute date spans in days
[xapian.git] / xapian-bindings / NEWS
blob5117236037173250dcfea7485216c3311cc2aaa8
1 up to: d72a7d16fe81bf5f6e0e986b95e1d8098256ee84
3 Xapian-bindings 1.5.0 (2024-0?-??):
5 Documentation:
7 General:
9 * Update for changes to C++ API.
11 Build system:
13 * We now require a C++17 compiler to build Xapian.  This means if you're using
14   GCC you'll need at least GCC 7.0.  Compilers which haven't been updated to
15   support C++17 are no longer supported (e.g. HP's aCC and Sun's C++ compiler).
17 * Use AC_CONFIG_MACRO_DIRS, which replaces the need to specify the same
18   directory via both AC_CONFIG_MACRO_DIR and ACLOCAL_AMFLAGS.  It was added in
19   automake 1.13, so that's now the minimum required version (was 1.12.2).
21 Packaging:
23 * We no longer provide RPM spec files.  In the early days of Xapian it was
24   perhaps useful to provide them so that people could build their own RPM
25   packages, but now all mainstream distros seem to provide packages, and
26   doubtless maintain their own packaging separately.
28 Portability:
30 CSharp:
32 * Expand tests for nul and codepoints >= U+10000.  See #46.
34 Java:
36 * Expand tests for nul and codepoints >= U+10000.  See #46.
38 Lua:
40 * The Lua bindings allows passing a Lua function where the C++ API takes a
41   Xapian::StemImplementation object.  Previously this function served to
42   implement the stemmer and provide its description, with nil being passed in
43   to indicate to return a description.  This seems more annoying than helpful
44   as it forces you to implement a description (or else your code will fail in a
45   logging build of Xapian even if you never explicitly request the description
46   in your own code), so now a fixed description of "luaStemImplementation()" is
47   returned. Existing Lua stemmer implementations will continue to work, but any
48   code in them to return a description will no longer get used.
50 Perl:
52 PHP:
54 * Only PHP8 is now supported.  PHP5 has it's been out of security support
55   upstream since 2019-01-10 and PHP7 since 2022-11-28. If you haven't migrated
56   to PHP8 yet, you'll need to use Xapian <= 1.4.21 for PHP5 or PHP7 support.
58 Python:
60 * Drop support for Python 2 as it's been end-of-life upstream since 2020-01-01.
61   If you're still using it, you'll need to stick with Xapian 1.4.x.
63 Python3:
65 Ruby:
67 Tcl:
69 * Expand tests for nul.  See #46.
71 Xapian-bindings 1.4.26 (2024-07-18):
73 Documentation:
75 * README: Add link to separately maintained Guile bindings.  Patch from Arun
76   Isaac.
78 * README: Add link to separately maintained R bindings.
80 Portability:
82 * configure: NetBSD automatically pulls in library dependencies, so set
83   link_all_deplibs_CXX=no there.
85 * Use `override` for subclassing functors.  This is good practice as it gives a
86   clear compile error if we have to change the signature of an virtual method
87   on such a functor.  See #830.
89 Xapian-bindings 1.4.25 (2024-03-08):
91 General:
93 * configure: DragonflyBSD automatically pulls in library dependencies, so set
94   link_all_deplibs_CXX=no there.
96 * configure: Avoid using lt_cv_objdir, which seems to be a libtool implementation
97   detail.  We already have its value available via a documented interface.
99 Perl:
101 * Fix conversion of POD to HTML when builddir!=srcdir.
103 * Simplify uninstall-local to use the shared object extension in PERL_SO.
105 PHP8:
107 * Use PHP_SHLIB_SUFFIX as the filename extension for the compiled extension
108   module.  Previously we used the extension libtool thought appropriate for
109   the current platform.  We're not aware of a platform where the two don't
110   agree, but should they not agree we should use what PHP expects.
112 Python:
114 * Fix `make check` when builddir!=srcdir.
116 Python3:
118 * Fix `make check` when builddir!=srcdir.
120 Ruby:
122 * Fix probe for rdoc to default to using the rdoc which matches the Ruby
123   interpreter.  This was always the intention, but the code was buggy and
124   this default previously never kicked in.  This was likely to only be a
125   problem if you were overriding RUBY=/path/to/ruby but not overriding RDOC as
126   well.  Reported by Vitaly Chikunov on the xapian-devel list.
128 Xapian-bindings 1.4.24 (2023-11-06):
130 Portability:
132 * swig-depcomp: Strip CR from generated files which fixes an issue in some
133   cases when building from git on Microsoft Windows.
135 Lua:
137 * Use pkg-config for Lua flags instead of some rather ad-hoc configure probes.
138   This improves portability to platforms which require linking to a Lua
139   library, or which install the Lua headers directly without a versioned
140   containing directory.
142 PHP8:
144 * Update configure probe PHP_LIBS on cygwin.  Based on patch found in cygwin
145   packaging, authored by Yaakov Selkowitz.
147 Tcl:
149 * Fix to handle the case of tcl_pkgPath not existing, which happens on
150   Microsoft Windows builds of Tcl.
152 * run-tcl-test: Fix not to hardcode smoketest.tcl and instead run the program
153   specified on the command line.
155 * Use TCL_SHLIB_EXT for the installed extension which is what Tcl expects.
156   Previously the installed Tcl extension used the filename extension that
157   libtool thinks is right for modules on the current platform.  We're not
158   currently aware of platform where these actually differ, so this may be just
159   a latent bug.
161 * Improve configure probe for stub library to work if the tclConfig.sh we find
162   forwards to a different script, as is the case with /usr/lib/tclConfig.sh on
163   current Debian.  On Debian at least our method for finding the tclConfig.sh
164   to use doesn't find such a forwarding script, but it seems better to be
165   robust to this.
167 * Eliminate special cygwin handling which is no longer needed.
169 Xapian-bindings 1.4.23 (2023-07-07):
171 Documentation:
173 * Where we document how to build the bindings, link to the download page so
174   the reader can easily find the source to download.  Reported by John G. Heim.
176 * Update lists of debian packages to install for bindings development to
177   show be for the latest stable release and the one before (bookworm and
178   bullseye).
180 * HACKING: Fix typos in deprecation warning section
182 * HACKING: Update link to Pike bindings
184 * HACKING: Document issues caused by macOS SIP.  Fixes #732.
186 General:
188 * Add `FLAG_NGRAMS` as a preferred new alias for `FLAG_CJK_NGRAM` and
189   `SNIPPET_NGRAMS` as a preferred new alias for `SNIPPET_CJK_NGRAM`.
190   In the next release series these features have been expanded to cover many
191   more languages so the "CJK" in the name has become inaccurate as it stands
192   for "Chinese, Japanese and Korean").
194 * Avoid running pwd in makefiles since the directories we need are available in
195   automake variables.
197 CSharp:
199 * SmokeTest.cs: Fix some incorrect messages if testcases fail.
201 * Smoketest.cs: Test stemmer description.
203 Lua:
205 * Update docs for supported Lua versions.
207 Perl:
209 * Generate HTML docs for each class.
211 * Document all QueryParser FLAG_* constants.
213 * Update one place which didn't correctly indicate the current status of the
214   Perl bindings.  Fixes #523.
216 Python:
218 * Fix bug in wrapper for xapian.Query when constructing OP_WILDCARD queries.
219   A workaround for this bug which works with existing releases is to pass
220   0 for the third and fourth optional parameters like so:
222   xapian.Query(xapian.Query.OP_WILDCARD, "xyz", 0, 0)
224 Python3:
226 * Fix bug in wrapper for xapian.Query when constructing OP_WILDCARD queries.
227   A workaround for this bug which works with existing releases is to pass
228   0 for the third and fourth optional parameters like so:
230   xapian.Query(xapian.Query.OP_WILDCARD, "xyz", 0, 0)
232 Ruby:
234 * Improve documentation about __call__ methods.
236 Xapian-bindings 1.4.22 (2023-02-02):
238 Lua:
240 * When passing a Lua function for a Xapian functor object, the wrapper
241   object was leaked in most cases (except for Xapian::StemImplementation).
243 Perl:
245 * Fix testsuite and docs for Perl 5.36.0 change.
247   Prior to Perl 5.36.0 retrieving the string value of an integer could set
248   the flag read by "SvPOK()", but that's no longer the case in Perl 5.36.0
249   and later.
251   We already document the need to explicitly stringify numeric values
252   passed where a string is needed, so just add the missing stringification
253   to the testcase and document that it's required in more places when using
254   Perl 5.36.0 and later.
256 PHP8:
258 * Add support for PHP8 (PHP 8.0, 8.1 and 8.2 should all work).
260   The PHP bindings are now implemented entirely in C++ code using PHP's
261   C extension API, and the `xapian.php` wrapper file no longer exists.
262   This change means smaller and faster bindings.  See the documentation for a
263   recommended way to write code which works with both PHP7 and PHP8 bindings.
265   To add PHP8 support we've had to drop support for PHP7.  PHP7.4 reached end
266   of life on 2022-11-28 so hopefully this isn't a problem for too many people,
267   but if you need support for PHP7 please use xapian-bindings <= 1.4.21.
269   Fixes #817, reported by Ryan Schmidt.
271 * We now set the version in the metadata of the PHP module to the
272   xapian-bindings version (previously it was unversioned).
274 Python:
276 * Drop support for Python 2.6.  We need to use SWIG 4.1.0 for PHP8 support, but
277   that no longer supports Python 2.6 so we have to raise the minimum Python 2
278   version to Python 2.7.
280   The last Python 2.6 release was in 2013 so hopefully this isn't a problem for
281   anyone, but if you still need to use Python 2.6 please use xapian-bindings <=
282   1.4.21.
284 Python3:
286 * Drop support for Python 3.2.  We need to use SWIG 4.1.0 for PHP8 support, but
287   that no longer supports Python 3.2 so we have to raise the minimum Python 3
288   version to Python 3.3.
290   The last Python 3.2 release was in 2014 so hopefully this isn't a problem for
291   anyone, but if you still need to use Python 3.2 please use xapian-bindings <=
292   1.4.21.
294 Ruby:
296 * Fix new Ruby 3.2 warning "undefining the allocator of T_DATA class
297   swig_runtime_data" (fixed by the change to using a newer SWIG version).
299 Xapian-bindings 1.4.21 (2022-09-22):
301 Documentation:
303 * Consistently say "macOS" not "Mac OS X", "OS X", etc.
305 General:
307 * Update to use AX_CXX_COMPILE_STDCXX which is a replacement for
308   AX_CXX_COMPILE_STDCXX_11 (which we were using) which also supports newer C++
309   standards versions which will be useful.  For C++11 the only difference seems
310   to be that the macro now checks for attribute support - we use C++11
311   attributes so that seems a good thing.
313 Portability:
315 * Drop special handling of MACOSX_DEPLOYMENT_TARGET.  This was only relevant
316   for macOS 10.3 and (for powerpc only) 10.4, and Apple dropped support for
317   10.4 in 2009.
319 Java:
321 * Document where to install .jar on macOS. Partly addresses #774, reported by
322   Ryan Schmidt.
324 Xapian-bindings 1.4.20 (2022-07-04):
326 General:
328 * Enable -fvisibility-inlines-hidden option if the compiler supports it.
330 PHP7:
332 * Add missing reference tracking. XapianEnquire now keeps a reference to the
333   current XapianSorter object (if any).  XapianQueryParser now keeps a
334   reference to any set XapianFieldProcessor objects.  Test coverage for keeping
335   references to set functor objects is now more comprehensive.
337 * smoketest.php: Remove bogus extra null parameters.  PHP ignores these extra
338   parameters, but it's more helpful to be testing valid usage.
340 Python3:
342 * The configure probes for Python3 no longer use the deprecated distutils and
343   imp modules (both of which are slated for removal in Python 3.12).  We now
344   use sysconfig to get the directory to install the xapian module to, which may
345   result in it being installed in a different place (it should still work, but
346   if you're packaging the bindings you may need to update the list of files to
347   include in the package).
349 Xapian-bindings 1.4.19 (2021-12-31):
351 Documentation:
353 * configure: Add missing AC_ARG_VAR for all programs so that they are
354   documented in --help output, and so that autoconf knows they are "precious"
355   and preserves them if configure is rerun even when they're specified via an
356   environment variable.
358 General:
360 * Replace uses of obsolete autoconf macros, fixing warnings if configure is
361   regenerated with a recent release of autoconf.
363 Perl:
365 * Add missing wrappers for some QueryParser FLAG_* constants.
367 * Fix incorrect formatting in the processed POD documentation due to missing
368   escaping of `>` in code snippets.
370 PHP:
372 * Make configure PHP5 version check more robust.  Previously it would have
373   incorrectly accepted any (future) PHP version >= 10.0.0.
375 PHP7:
377 * configure: We now reject PHP8 since it isn't currently supported
378   by a released version of SWIG.  SWIG 4.1.0 will supports PHP8.
380 * configure: Check for php-config7.4 as well as earlier 7.x versions
381   and php-config.
383 Python3:
385 * Fix deprecation warnings with Python >= 3.9.
387 * Remove more files/dirs on "make clean".  Reported by Gaurav Arora.
389 Ruby:
391 * Fix build with Ruby 3.0 and clang. Reported by Eduard Panov on macos, where
392   clang is the default compiler.
394 * Improve markup in Ruby bindings docs.
396 Xapian-bindings 1.4.18 (2021-01-14):
398 Portability:
400 * Support macOS 11.0 - AC_CANONICAL_HOST identifies this as darwin20, which
401   wasn't caught by our glob pattern.  Patch from FX Coudert in
402   https://github.com/xapian/xapian/pull/319
404 CSharp:
406 * Wrap const std::string* parameters to accept a string or null in C#.  See #204.
408 Java:
410 * Wrap const std::string* parameters to accept a String or null in Java.
412 Perl:
414 * Fix minor documentation typo.
416 Xapian-bindings 1.4.17 (2020-08-21):
418 * No user-visible change except for bumping the version to indicate
419   compatibility with Xapian-core 1.4.17.
421 Xapian-bindings 1.4.16 (2020-06-08):
423 General:
425 * Remove code to support SVN snapshots since we stopped using SVN more than 5
426   years ago.
428 * Ignore overloads for logical ops, *, /.  These were already ignored for
429   several languages, and aren't actually usefully wrapped for any of the other
430   languages.
432 CSharp:
434 * Work around mono terminfo parsing bug in more cases.  With this, "make",
435   "make check", "make install" and "make uninstall" all work on Ubuntu 18.10.
436   Patch from Dipanshu Garg, fixes https://github.com/xapian/xapian/pull/287 and
437   #801.
439 Lua:
441 * Allow passing a Lua function as a MatchSpy.  This was supposed to be
442   supported already, but the typemaps weren't set up.
444 * On platforms where sizeof(long) is 4, SWIG was wrapping Xapian::BAD_VALUENO
445   as a negative constant in Lua, which was then rejected by a check which
446   disallows passing negative values for unsigned C++ types.  We now direct SWIG
447   to handle Xapian::valueno as double (which is what numbers in Lua usually
448   actually are) which gives us an unsigned constant, and also eliminates the
449   negative value check.
451 * Correct documentation - get_description() is wrapped as tostring() in Lua,
452   not str() as we previously claimed.
454 * Add test coverage for passing Lua function for a Stopper.
456 Perl:
458 * Resolve the remaining issues and remove the "experimental" marker:
460   + Add search_xapian_compat() function which sets up aliases in the
461     Search::Xapian namespace to aid writing code which uses either
462     Search::Xapian or this module.
464   + Allow passing Perl sub for simpler Xapian functor classes.  This fills in a
465     missing feature compared to Search::Xapian.  See #523.
467   + Remove useless PerlStopper class which was an incomplete copy of the
468     apparently non-functional Search::Xapian::PerlStopper.  We now support
469     passing a Perl sub for a Stopper object.
471   + Adjust some method names to match Search::Xapian.  Iterators now support
472     inc() (and dec() where the C++ class supports operator--) like
473     Search::Xapian, rather than increment() and prev().  Reported by Eric Wong
474     in #523.
476   + Drop undocumented and unexpected extra equals() method.
478   + Provide compatibility with ENQ_ASCENDING, etc constants.  SWIG wraps these
479     as $Xapian::Enquire::ASCENDING, which better matches the C++ API, but
480     Search::Xapian wraps this as Search::Xapian::ENQ_ASCENDING, etc so provide
481     those too for compatibility.  Reported by Eric Wong in #523.
483   + Drop stringification and int conversion overloads.  These seem more
484     confusing than helpful, and overloading stringification works badly
485     with SWIG-generated bindings.
487   + Document remaining known differences from Search::Xapian.
489 * Update recently tested versions in README.
491 * Improve documentation.
493 * Fix t/02pod.t to look for files in right directory.
495 Ruby:
497 * Don't print iterator sizes to stdout.  This was some debugging accidentally
498   left in as part of a change in 1.4.12.  Patch from Dan Callaghan.
500 Xapian-bindings 1.4.15 (2020-02-24):
502 Perl:
504 * Improve comment about App::Prove.
506 Ruby:
508 * Support Ruby 2.7.
510 Xapian-bindings 1.4.14 (2019-11-23):
512 Python:
514 * Remove broken replicationtest.py.  It's never worked reliably, and because
515   of that was disabled shortly after being added over a decade ago.
516   Unsurprisingly it's bit-rotted at least a bit since.  Nobody seems interested
517   in fixing it, so it's time to just get rid of it.  Closes #320.
519 Python3:
521 * Remove broken replicationtest.py.  It's never worked reliably, and because
522   of that was disabled shortly after being added over a decade ago.
523   Unsurprisingly it's bit-rotted at least a bit since.  Nobody seems interested
524   in fixing it, so it's time to just get rid of it.  Closes #320.
526 Xapian-bindings 1.4.13 (2019-10-14):
528 General:
530 * Omit SWIG exception handling for destructors.  Since C++11, destructors can't
531   throw by default and we don't override that default, so there's no point
532   adding exception handling code for them.
534 * Ensure doccomments.i is distributed.  If you unpacked a distribution tarball,
535   configured it and then ran "make dist" python/doccomments.i and
536   python3/doccomments.i would be missing unless you configured the tree with
537   --enable-maintainer-mode.
539 PHP:
541 * Check for php-config5.6 and php-config5.5 in configure as these versioned
542   names are used in some packages (such as those from the ondrej/php PPA).
544 PHP7:
546 * Work around build failure on Illuminos.  Fixes
547   https://trac.xapian.org/ticket/793, reported by Amitai Schleier.
549 Ruby:
551 * smoketest.rb: Use #push not #append on Array to restore compatibility with
552   Ruby < 2.5 (broken by changes in 1.4.12).
554 * Expand tabs in Ruby code since using spaces for indentation seems to be
555   preferred Ruby style.
557 * Remove trailing `;` from Ruby code.
559 Xapian-bindings 1.4.12 (2019-07-23):
561 Documentation:
563 * Update bindings HACKING document.  Reported as out of date by Niwesh Gupta.
565 CSharp:
567 * Work around mono terminfo parsing bug - older cli-sn fails with e.g.
568   TERM=xterm-256color due to: https://github.com/mono/mono/issues/6752
569   Encountered on Kubuntu 18.10 and debugged by Tejasvi Tomar.  Seems to be
570   fixed in the mono version in Debian buster.
572 Perl:
574 * Suppress warnings from older Perl headers due to use of constructs which look
575   like C++11 user-defined literals.  They're fixed in newer versions so they're
576   just noise in our build.  We were working around these in the CI build, so
577   drop that workaround as we want to make the build warning-clean for users
578   too.  Reported by daniel93 on #xapian.
580 Python3:
582 * Fix build for changes in Sphinx 2.0 (which drops support for sphinx.main()).
583   Fixes #778, reported by karolyi.  Also reported by Gaurav Arora.
585 * We now throw UnicodeEncodeError for bad Unicode string input.  Previously
586   cases such as a lone surrogate would be handled by quietly skipping the bad
587   codepoints when converting to UTF-8 to pass to Xapian.
589 * We no longer use the deprecated old-style Py_UNICODE API, which currently
590   gives deprecation warnings and is slated to be removed in Python 4.0.
592 Ruby:
594 * Add support for block iteration.  All the iterator methods in the Ruby API
595   now accept an optional block.  If no block is given an array is returned so
596   existing code will still work.  Partly based on a patch in
597   https://github.com/xapian/xapian/pull/232 from Cong Ding.
599 * Add missing wrappers for all the C++ methods returning iterators which
600   weren't wrapped for Ruby.  Fixes #777, reported by do.
602 * Suppress warnings from Ruby 2.3 headers due to use of register and
603   constructs which look like C++11 user-defined literals.  They're fixed in
604   newer versions so they're just noise in our build.  We were working around
605   these in the CI build, so drop that workaround as we want to make the build
606   warning-clean for users too.  Reported by daniel93 on #xapian.
608 * smoketest.rb: Don't leave temporary databases behind in /tmp.
610 Xapian-bindings 1.4.11 (2019-03-02):
612 CSharp:
614 * Make MatchAll and MatchNothing readonly.
616 Java:
618 * Simplify load-time setup of Query.OP_OR, etc which are provided for
619   compatibility with the original hand-written JNI bindings.
621 PHP:
623 * We now load the module for "make check" using -d extension=xapian which
624   avoids needing to turn off safe_mode and turn on enable_dl, and matches how
625   the module is usually loaded in production use.
627 PHP7:
629 * Fix access to already released memory during PHP module shutdown, which often
630   didn't cause visible problems, but could result in segmentation faults, bus
631   errors, etc.
633 * Fix generated code to compile when using a ZTS-enabled build of PHP.
635 * We now load the module for "make check" using -d extension=xapian which
636   avoids needing to turn off safe_mode and turn on enable_dl, and matches how
637   the module is usually loaded in production use.
639 Xapian-bindings 1.4.10 (2019-02-12):
641 Documentation:
643 * Use https for URLs where supported.
645 General:
647 * Wrap new DatabaseClosedError and DatabaseNotFoundError exceptions.
648   See #772 and #773.  Patches from Vaibhav Kansagara.
650 * Update expected query descriptions in tests for the xapian-core
651   change to produce flatter Query trees.
653 * Workaround Perl 5.28 -i quirk when postprocessing SWIG-generated code.
654   The commands in question are only run when maintainer-mode is enabled.
656 CSharp:
658 * C++ constant Xapian::BAD_VALUENO is now wrapped without using a getter.
659   This shouldn't affect existing user code.
661 Java:
663 * C++ constant Xapian::BAD_VALUENO is now wrapped as Java constant
664   Xapian.BAD_VALUENO.  The previous Java wrapping as function
665   Xapian.getBAD_VALUENO() is still supported for compatibility with
666   existing code.
668 * Remove redundant std::string initialisation.
670 Lua:
672 * C++ constant Xapian::BAD_VALUENO is now wrapped as a constant rather than
673   an immutable attribute.  This shouldn't affect existing user code.
675 Perl:
677 * C++ constant Xapian::BAD_VALUENO is now wrapped as Perl constant
678   Xapian::BAD_VALUENO.  The previous Perl wrapping as variable
679   $Xapian::BAD_VALUENO is still supported for compatibility with existing
680   code.
682 * Note in the POD documentation that the Error base classes which are abstract
683   in C++ don't have a new method in Perl.
685 PHP:
687 * C++ constant Xapian::BAD_VALUENO is now wrapped as PHP constant
688   Xapian::BAD_VALUENO.  The previous PHP wrapping as function
689   Xapian::BAD_VALUENO_get() is still supported for compatibility with existing
690   code.
692 * Remove code to work around a SWIG bug which was fixed in 2006.
694 PHP7:
696 * C++ constant Xapian::BAD_VALUENO is now wrapped as PHP constant
697   Xapian::BAD_VALUENO.  The previous PHP wrapping as function
698   Xapian::BAD_VALUENO_get() is still supported for compatibility with existing
699   code.
701 * configure: Check for php-config7.3 and php-config7.2 as well as
702   php-config7.1, php-config7.0 and php-config.
704 * Correct references to PHP5 in PHP7 script comments.
706 * Remove some C code which is no longer needed with PHP7.
708 Ruby:
710 * C++ constant Xapian::BAD_VALUENO is now wrapped as Ruby constant
711   Xapian::BAD_VALUENO.  The previous Ruby wrapping as function
712   Xapian::BAD_VALUENO() is still supported for compatibility with existing
713   code.
715 * We now recommend using String#encode instead of the Iconv class, since the
716   latter is no longer included with Ruby.
718 Tcl:
720 * C++ constant Xapian::BAD_VALUENO is now wrapped as a constant rather than
721   variable which can't be written to.  This shouldn't affect existing user
722   code.
724 Xapian-bindings 1.4.9 (2018-11-02):
726 PHP7:
728 * Fix to build with upcoming PHP 7.3 release, which changes array_init()
729   to not return a value instead of always returning the constant SUCCESS.
730   We were checking this return value but no longer do.
732 Xapian-bindings 1.4.8 (2018-10-25):
734 Perl:
736 * Wrap new STEM_SOME_FULL_POS constant.
738 * Add STEM_ALL_Z to qpstem export tag and POD docs.
740 * Fix Perl bindings documentation typos.
742 Python:
744 * Fix RST formatting warning during build.
746 Python3:
748 * Fix RST formatting warning during build.
750 Xapian-bindings 1.4.7 (2018-07-19):
752 Ruby:
754 * Fix -Wconversion-null warnings with newer GCC.
756 Xapian-bindings 1.4.6 (2018-07-02):
758 Documentation:
760 * Stop using "probabilistic" to mean "weighted" - we've supported other
761   families of weighting schemes since 1.3.2.
763 Packaging:
765 * Use https for tarball URLs in .spec files.  This provides protection against
766   MITM attacks on people building packages using these spec files, and is also
767   slightly more efficient as the http: URLs redirect to the https: versions
768   anyway.
770 CSharp:
772 * Use SWIG_exception() to handle exceptions.  It seems this didn't used to work
773   with older SWIG, but it does with current versions, and using it means that
774   we skip any return value translation logic when an exception has been thrown.
776 Java:
778 * Use SWIG_exception() to handle exceptions.  It seems this didn't used to work
779   with older SWIG, but it does with current versions, and using it means that
780   we skip any return value translation logic when an exception has been thrown.
782 * Fix leaks in binary std::string typemaps.  These are used for document values
783   and serialised data.
785 * Improve VPATH build.  Previously we looked for class files and java sources
786   in srcdir first, then in builddir.  That's backwards from how autotools
787   VPATH builds search for targets and prerequisites so reverse this order to
788   make handling of Java files more consistent.
790 Perl:
792 * Invoke prove via the App::Prove module.  This avoids potentially using
793   prove from a different Perl installation to perl (previously the user
794   needed to manually specify the corresponding PROVE= if they specify PERL= to
795   configure).  In particular this is useful on macOS when using Perl from
796   homebrew.
798 * Improve Perl Enquire::set_docid_order documentation by syncing improvements
799   from the C++ API docs.
801 Python:
803 * Support sphinx >= 1.7 while still working with < 1.7.  Patch from
804   James Aylett.
806 * Suppress clang -Wdeprecated-register warnings about uses register in C code
807   in Python.h.  We can't do anything about these other than suppress them.
809 Python3:
811 * Support sphinx >= 1.7 while still working with < 1.7.  Patch from
812   James Aylett.
814 * Suppress clang -Wdeprecated-register warnings about uses register in C code
815   in Python.h.  We can't do anything about these other than suppress them
816   (and they appear to have been removed in Python 3.4 and later).
818 * Remove unused MSet::__cmp__ extend method.  This was used in Python 2, but
819   Python 3 does things differently.  There doesn't seem a good reason to
820   provide comparison operations for MSet objects, and we don't for other
821   classes, so let's just drop this feature - it seems nobody has noticed it has
822   gone.
824 * Simplify generated wrapper post-processing.
826 Xapian-bindings 1.4.5 (2017-10-16):
828 Documentation:
830 * HACKING: Add details of Debian PHP7 packages to install for development.
832 General:
834 * Use a pattern match to ignore methods meant for internal use only rather
835   than having to list them all - they're consistently named to end with an
836   underscore.
838 * Stop using deprecated Xapian::percent typedef in bindings-specific code.
839   Deprecation warnings are suppressed when building the bindings (because the
840   bindings usually still need to wrap deprecated C++ features) so this probably
841   has no user-visible consequences.
843 Java:
845 * Fix JNI code to be compatible with Java 6 and earlier, where the final
846   parameter of SetByteArrayRegion() was not const.  This also seems to affect
847   GCJ (though GCJ was removed in GCC 7).  The incompatibility was introduced in
848   1.4.4.
850 Lua:
852 * Support subclassing of RangeProcessor in Lua.
854 Perl:
856 * Add CLONE_SKIP to RangeProcessor and subclases to avoid double deletion
857   if the Perl threads module is in use.
859 * Keep references for set RangeProcessor objects, like how we do for
860   ValueRangeProcessor and various other functor objects.
862 * Use RangeProcessor instead of ValueRangeProcessor in perl examples, as
863   ValueRangeProcessor is now deprecated.
865 PHP:
867 * Keep references for set RangeProcessor objects, like how we do for
868   ValueRangeProcessor and various other functor objects.
870 * Add type hints to QueryParser::add_rangeprocessor().
872 PHP7:
874 * Keep references for set RangeProcessor objects, like how we do for
875   ValueRangeProcessor and various other functor objects.
877 * Add type hints to QueryParser::add_rangeprocessor().
879 * Fix PHP7 "make check" to use right path separator.  It was using the PHP5
880   one, which in general is going to be the same but we won't have probed for
881   that unless we're also building the PHP5 bindings, which means "make check"
882   failed for PHP7 unless you also had the PHP5 bindings enabled.
884 Python3:
886 * Fix "make check" under Python 3.2, which was broken in 1.4.4 because Python
887   3.2 doesn't support the u'foo' syntax.
889 * Copy over Python2 check which aims to catch any internal functions, methods,
890   constants, etc which have accidentally been wrapped.
892 Ruby:
894 * Fix dependency generation for Ruby SWIG command (only relevant at all if
895   you configure with --enable-maintainer-mode).
897 Xapian-bindings 1.4.4 (2017-04-19):
899 General:
901 * Update tests for xapian-core changes to avoid unnecessary "0 *" in query
902   descriptions in certain cases.
904 Packaging:
906 * Ship java.i in tarball.
908 Java:
910 * Handle object serialisations and document values as Java byte[].  These will
911   usually contain binary data, so Java String doesn't work well and byte[] is a
912   much better fit.
914 * Correct various errors in java examples and documentation on how to run them.
916 * Fix java examples not to abuse doc values as fields - use the document data
917   instead.
919 * "make clean" now removes additional class files.
921 PHP7:
923 * Update version of SWIG required to >= 3.0.12 so that the code generated
924   for PHP7 no longer results in a segmentation fault on module unload with
925   PHP 7.1.  Fixes #748, reported by Victor Sakovich.
927 Python:
929 * Fix QueryParser methods add_boolean_prefix() and add_prefix() to accept a
930   string for the `grouping` parameter.  Reported by Jameson Graef Rollins in
931   https://bugs.debian.org/849722
933 * Fix configure --with-python to fail if sphinx isn't found.  Patch from
934   Patricio Paez.  Fixes #749.
936 Python3:
938 * Fix QueryParser methods add_boolean_prefix() and add_prefix() to accept a
939   string for the `grouping` parameter.  Reported by Jameson Graef Rollins in
940   https://bugs.debian.org/849722
942 Xapian-bindings 1.4.3 (2017-01-25):
944 Python:
946 * Remove compatibility code for Python < 2.5 - 1.4.x requires Python >= 2.6.
948 * Avoid unnecessary pointer indirection in XapianSWIG_anystring() helper
949   function, which should be a little more efficient and makes the Python 2
950   code more closely match the Python 3 code.
952 Ruby:
954 * "make clean" should only remove docs/xapian.rb if configure option
955   --enable-documentation was used to enable all rules to rebuild documentation.
956   Reported by Samuel Williams on xapian-discuss.
958 * Fix make rule for running rdoc for the cases where srcdir != builddir.
960 * Use 'test a = b' rather than 'test a == b' - the former is portable, the
961   latter a bashism.  In many cases the autotools will set SHELL = /bin/bash in
962   the makefiles, but if it doesn't and /bin/sh isn't bash, then this will
963   cause "make install" and "make uninstall" to fail for the Ruby bindings.
965 Xapian-bindings 1.4.2 (2016-12-26):
967 General:
969 * configure: Fail with clear error with xapian-core < 1.4.0.
971 * Work around OS X "System Integrity Protection".  We can't address the problem
972   of being unable to run tests against an uninstalled tree when the interpreter
973   is in a system directory (you have to "make install" in xapian-core for that
974   case), but we can at least make this work for interpreters which aren't in
975   system directories.
977 Java:
979 * Disable parallel make for java subdirectory as it causes random build
980   failures.  Reported by Lucas Nussbaum in https://bugs.debian.org/848733
982 * Disable automatic use of -Xcheck:jni for now as it seems to report false
983   positives with OpenJDK 8 and 9.
985 PHP:
987 * Generates smaller PHP wrappers by only emitting each unique arginfo
988   combination once (~6% saving in stripped extension module size for
989   PHP7 on x86_64 Linux).
991 * Fix to work again with a version of PHP5 built with ZTS enabled (which is the
992   default on Microsoft Windows).
994 * Add support for PHP7.
996 * Drop workaround for PHP4 from test code.
998 Python:
1000 * Handle sphinx-build being a shell script wrapper by invoking sphinx.main()
1001   from a command line Python code snippet.  Reported by Alex Dunn in
1002   https://github.com/xapian/xapian/pull/126 and solved with help from James
1003   Aylett.
1005 * Hold python reference to set RangeProcessor objects - until #714 is fixed we
1006   need to keep such a reference (as we already do for ValueRangeProcessor and
1007   several other classes).
1009 Python3:
1011 * Handle sphinx-build being a shell script wrapper by invoking sphinx.main()
1012   from a command line Python code snippet.  Reported by Alex Dunn in
1013   https://github.com/xapian/xapian/pull/126 and solved with help from James
1014   Aylett.
1016 * Hold python reference to set RangeProcessor objects - until #714 is fixed we
1017   need to keep such a reference (as we already do for ValueRangeProcessor and
1018   several other classes).
1020 Ruby:
1022 * Use more conventional Ruby variable names in the examples (Ruby convention
1023   uses underscores not camelcase) and fix comma/space transposition in a couple
1024   of places.
1026 Xapian-bindings 1.4.1 (2016-10-21):
1028 Documentation:
1030 * Fix --disable-documentation - in maintainer-mode, we still tried to make
1031   docs/index.html for most of the bindings, which failed because the rule to do
1032   so was disabled.
1034 General:
1036 * Update for additions to C++ API.
1038 * When a backend is disabled in the xapian-core we're building against, we
1039   have a stub version of any factory functions so the bindings still have
1040   something to wrap.  Update these for 1.4:
1041   + Disable stub for InMemory::open() when
1042     XAPIAN_BINDINGS_SKIP_DEPRECATED_DB_FACTORIES is defined (Perl, Python3).
1043   + Add new optional flags parameter to both overloaded forms of
1044     Remote::open_writable().
1046 Portability:
1048 * Drop compiler options that are no longer useful:
1049   + -fshow-column is the default in all GCC versions we now support
1050     (checked as GCC 4.6).
1051   + -Wno-long-long is no longer necessary now that we require C++11 where
1052     "long long" is a standard type.
1054 Java:
1056 * Use a cleaner technique to insert the Java code to load JNI library into the
1057   generated wrapper - we now use "%pragma(java) jniclasscode" instead of using
1058   Perl to post-process the generated wrapper.  Suggested by James Aylett.
1060 * Run Java tests with -Xcheck:jni if supported, which should help catch any
1061   any bugs in the JNI code.
1063 * Fix configure to find jni_md.h under Cygwin.  There doesn't seem to be an way
1064   to automatically determine the machine-dependent JNI include path, so add
1065   another case to use "win32" on Cygwin.  Reported by John Bankert on
1066   xapian-discuss.
1068 * Add more special cases to find jni_md.h on Cygwin, OS X, *BSD, AIX.
1069   There doesn't seem to be an explicit list of these directories anywhere, but
1070   grepping the OpenJDK 8 source code finds additional values "darwin" and
1071   "aix", *BSD seems to use "bsd", and Cygwin uses "win32" (reported by John
1072   Bankert on xapian-discuss).
1074 * Generate xapian.jar rather than xapian_jni.jar - the fact that JNI is
1075   involved is really just an implementation detail.
1077 * SmokeTest.java: Add simple test of subclassing FieldProcessor.
1079 Perl:
1081 * Merge Perl POD doc improvements from Search::Xapian.  The most notable
1082   improvement is a number of methods previously lacking docs now have them.
1084 * Fix typo in POD docs for Perl bindings ("outputing" -> "outputting").
1085   Reported by knowledgejunkie in #730.
1087 Python:
1089 * Fix repr() to not return None.  Reported by Stuart Prescott on IRC.
1091 * Fix Python2 bindings to work out of the box.  SWIG changed the code it
1092   generates for importing the compiled module in a recent version, and
1093   the newer code no longer works with the wrapper renamed to
1094   xapian/__init__.py.  There's currently no way to configure SWIG to produce
1095   what we need so for now we run a "fixup" script over the generated wrapper
1096   which replaces the complex import code with a single statement which does
1097   what we want.  It also strips out various unneeded code, mostly to do with
1098   handling Python 3.x (which we don't need since we have an entirely
1099   separate set of bindings for that).  Reported by James Aylett in #731.
1100   The way we were importing the bindings to generate the .pyc and .pyo
1101   files was masking this problem, so rework that as suggested by James.
1103 * Make sphinx docs dependent on SWIG wrapper.  Without this dependency,
1104   parallel builds (make -j) may attempt to schedule the sphinx doc build before
1105   the relevant wrapper has been compiled and moved into position.  This won't
1106   result in a build failure, but will silently omit API docs that sphinx
1107   would otherwise include.  Patch from James Aylett.
1109 * doxy2swig: Specify encoding when reading doxygen's XML output so UTF-8 in
1110   doxygen comments is handled.  Patch from Vivek Pal.
1112 * Specify Python2 wrapper encoding is UTF-8.  This is needed when we pick up
1113   doxygen comments from the C++ API which contain UTF-8.  For Python3, the
1114   default source encoding is UTF-8, so we don't need the equivalent change
1115   there.
1117 Python3:
1119 * Fix repr() to not return None.  Reported by Stuart Prescott on IRC.
1121 * Fix Python3 bindings to work out of the box.  SWIG changed the code it
1122   generates for importing the compiled module in a recent version, and
1123   the newer code no longer works with the wrapper renamed to
1124   xapian/__init__.py.  There's currently no way to configure SWIG to produce
1125   what we need so for now we run a "fixup" script over the generated wrapper
1126   which replaces the complex import code with a single statement which does
1127   what we want.  It also strips out various unneeded code, mostly to do with
1128   handling Python 2.x (which we don't need since we have an entirely
1129   separate set of bindings for that).  Reported by James Aylett in #731.
1130   The way we were importing the bindings to generate the .pyc and .pyo
1131   files was masking this problem, so rework that as suggested by James.
1133 * Make sphinx docs dependent on SWIG wrapper.  Without this dependency,
1134   parallel builds (make -j) may attempt to schedule the sphinx doc build before
1135   the relevant wrapper has been compiled and moved into position.  This won't
1136   result in a build failure, but will silently omit API docs that sphinx
1137   would otherwise include.  Patch from James Aylett.
1139 * Fix memory leak converting string from Python to C++.
1140   XapianSWIG_anystring_as_ptr() was failing to flag the returned value as
1141   allocated, so it wasn't being deleted.  Reported by Sean Robinson in #729.
1143 Xapian-bindings 1.4.0 (2016-06-24):
1145 Documentation:
1147 * Mark SWIG-generated Java and Perl bindings as "experimental" until we've
1148   had a chance to sort out any remaining changes we want to make.
1150 Xapian-bindings 1.3.7 (2016-06-01):
1152 Documentation:
1154 * Remove long out-dated reference to tinderbox.
1156 General:
1158 * Use SWIG 3.0.9 to generate the bindings.  There's nothing very important to
1159   us in the changes since the git snapshot we were using - mostly this means
1160   we're using a released version, which seems preferable.
1162 Tcl:
1164 * Fix segfault in tcl bindings "make check".  The location of tclConfig.sh
1165   wasn't being found, so libtclstub wasn't being linked to, which is required
1166   with Tcl >= 8.6.
1168 Xapian-bindings 1.3.6 (2016-05-09):
1170 General:
1172 * Update for changes to the C++ API.
1174 * Use WritableDatabase::commit() instead of flush() in testcases, as the
1175   latter is now formally deprecated.
1177 Java:
1179 * Fix syntax error in SmokeTest.java, introduced by the DB_BACKEND_INMEMORY
1180   change.  Noted on #xapian-discuss by Aakash Muttineni.
1182 * Update Java TODO list.
1184 * SmokeTest.java: Port over version checks from SmokeTest.cs.
1186 * Update list of recently tested JDK versions.
1188 Lua:
1190 * Note Lua bindings work with Lua 5.3.
1192 Perl:
1194 * Explicitly specify POD docs encoding as utf8.  Fixes warning in generated
1195   HTML docs.
1197 * Convert POD to HTML when building from a source tarball - the conversion
1198   code comes as standard with Perl.  In 1.3.5 we were failing to ship the HTML
1199   output, as reported by Anthony Basile.
1201 * For extra robustness, convert POD to HTML using the bundled Pod::Html module
1202   from the Perl interpreter found by configure, rather than assuming pod2html
1203   is on PATH, and the right one (this matters more now that it's not just
1204   people building from git who build these docs).
1206 * Improve Perl bindings POD documentation.
1208 * Remove workaround for Perl macro vs C++11 header.  SWIG 3.0.6 and later adds
1209   a different workaround to the generated C++ wrapper file, and we require SWIG
1210   3.0.8 for a Python fix, so we no longer need our workaround.
1212 Python:
1214 * Fix "make check" in VPATH build.  Nothing seems to have changed in our build
1215   system, so I'm guessing this is now required due to a change in the code SWIG
1216   generates.
1218 Python3:
1220 * Fix "make check" in VPATH build.  Nothing seems to have changed in our build
1221   system, so I'm guessing this is now required due to a change in the code SWIG
1222   generates.
1224 * Fix install location for python3 docs.  They were being install to the same
1225   path as the python docs - now the path includes "python3" instead of
1226   "python".
1228 Ruby:
1230 * Increase minimum Ruby version to 2.1, as older versions are no longer
1231   supported by the Ruby developers.
1233 Xapian-bindings 1.3.5 (2016-04-01):
1235 This release includes all changes from 1.2.23 which are relevant.
1237 Documentation:
1239 * Fix to install docs when not in maintainer-mode.
1241 * Note open_stub() is deprecated (most of the bindings already noted this, but
1242   now ruby and tcl do too).
1244 General:
1246 * Update for changes to the C++ API.
1248 * PostingSource is now fully wrapped for the bindings.  Fixes #499, reported by
1249   Joost Cassee.
1251 * Ship swig-depcomp and doxy2swig scripts in the source tarball.
1253 * Add installcheck-local make targets for most languages - these run the
1254   testsuites using the installed bindings.
1256 CSharp:
1258 * configure: Stop checking for obsolete mono compiler names - gmcs, smcs and
1259   dmcs were all deprecated in Mono 2.11.
1261 * configure: Strip out handling of DotGNU - it's been inactive for years, and
1262   was officially "decommissioned" in December 2012.
1264 * README: Update list of mono versions recently tested with.
1266 Lua:
1268 * smoketest.lua: Fix to work with newer lua - coercing a number to a string
1269   now appends ".0" for whole numbers.
1271 Perl:
1273 * Run pod2html with explicit --podpath=. - recent versions of pod2html seem to
1274   need this to correctly handle references to other Xapian classes.  Reported
1275   on #xapian-discuss by HowManny and abhishek_rand0wn.
1277 Python:
1279 * Run sphinx at build time.  It's an extra tool for people building from source
1280   to have to install, but its output is rather large (this change reduces our
1281   tar.xz size by ~20%), and its output includes a source-less minified copy of
1282   jquery.
1284 Python3:
1286 * Run sphinx at build time.  It's an extra tool for people building from source
1287   to have to install, but its output is rather large (this change reduces our
1288   tar.xz size by ~20%), and its output includes a source-less minified copy of
1289   jquery.
1291 * Fix handling of integer values larger than a C int by bootstraping with a
1292   newer version of SWIG.  Fixes #703, reported by Barry Warsaw.
1294 * Remove xapian.inmemory_open() - we've deprecated the corresponding C++
1295   function, and the Python3 bindings haven't yet had a stable release.
1297 Ruby:
1299 * Run rdoc at build time - it is included as part of the Ruby core
1300   distribution, so we can assume it is available if ruby is, and avoid shipping
1301   its rather large generated output in our source tarball.
1303 Xapian-bindings 1.3.4 (2016-01-01):
1305 This release includes all changes from 1.2.22 which are relevant.
1307 General:
1309 * Wrap new and changed features in C++ API.
1311 * PostingSource set_maxweight() is now accessible to the bindings.  Fixes #498,
1312   reported by Richard Boulton.
1314 * configure script now defaults to looking for xapian-config-1.3.  This is now
1315   automatically done for development series (odd middle component of the
1316   version number), but not for stable series (even middle component).  Fixes
1317   #695, reported by Jorge C. Leitão
1319 PHP:
1321 * Make PHP 5.5 the minimum officially supported version, as 5.4 has now reached
1322   EOL.
1324 * In the examples, when iterating an MSet with foreach, don't throw the docid
1325   away as $dummy, put it in $docid and use it - the code looks cleaner, and
1326   this avoids an extra call to C++ to get the docid on each iteration.
1328 Python:
1330 * Drop support for Python 2.5.
1332 Python3:
1334 * Document installation of Python 3 bindings.  Fixes #694, reported by Jorge C.
1335   Leitão.
1337 * Fix testsuite for changes in Python 3.5.  Fixes #690, patch from UsusDei.
1339 * Handle renaming of .pyo to .opt-1.pyc files due to PEP-0488.  Fixes #689,
1340   patch from UsusDei.
1342 * Fix Python 3 version check to accept 3.10.
1344 Xapian-bindings 1.3.3 (2015-06-01):
1346 This release includes all changes from 1.2.20-1.2.21 which are relevant.
1348 Documentation:
1350 * INSTALL: IRIX is past EOL so drop information about IRIX make.
1352 General:
1354 * Add DB_RETRY_LOCK as a constant to wrap.
1356 * Don't wrap Query::LEAF_* - they're for internal use in xapian-core.
1358 * Fix "make install" from a git tree configured with --disable-documentation.
1359   (Fixes #658, reported by Germán M. Bravo)
1361 * Fix "make install" when building from git with --disable-documentation.
1363 * Fix to handle a VPATH build from a tarball when the generated docs will be in
1364   $(srcdir).
1366 * Update testcases for lazy wildcard expansion change in xapian-core.
1368 * Update for addition of XAPIAN_NOEXCEPT.
1370 * Don't wrap internal methods of Xapian::Weight.
1372 Portability:
1374 * Require a compiler with good C++11 support, like xapian-core now does.
1376 * doxygen_xml.conf.in: Update to avoid warnings about obsolete tags from newer
1377   doxygen.
1379 * configure: Update check for -fvisibility to match xapian-core's.
1381 CSharp:
1383 * Fix configure test for whether $CLI can run CSharp programs - previously it
1384   would always fail, which would mean that the CSharp tests wouldn't be run on
1385   platforms where CSharp programs can't be run directly.
1387 Java:
1389 * java/docs/examples/SimpleSearch.java: Update to actually build and work.
1391 Lua:
1393 * The Lua bindings are no longer considered to be "experimental" (in reality
1394   they haven't been for some time).
1396 Perl:
1398 * Add a "LICENSE" section to the main POD.
1400 * Add 'use strict' to all testcases, and add missing instances of 'my' that
1401   this change uncovered.
1403 * Wrap new WILDCARD_LIMIT_* constants as constants.
1405 Python:
1407 * Don't release the GIL when constructing a Query object from a sequence of
1408   Query objects and/or strings.
1410 * python/smoketest.py: Add new testcase to catch any internal functions,
1411   methods, constants, etc which have accidentally been wrapped.
1413 Python3:
1415 * The Python3 bindings are no longer considered to be "experimental".
1417 * Don't release the GIL when constructing a Query object from a sequence of
1418   Query objects and/or strings.  (fixes #346)
1420 * python3/pythontest.py: Expand comment about disabling test_import_star under
1421   threads.
1423 Tcl:
1425 * Require Tcl 8.5 as older versions are no longer supported upstream, and this
1426   version added ::tcl::pkgconfig, which makes the configure tests simpler and
1427   more reliable.
1429 * Adjust precedence of the typecheck typemap for wrapping constructing a query
1430   from a Tcl list so that we disambiguate this from the new OP_WILDCARD
1431   constructor correctly.
1433 Xapian-bindings 1.3.2 (2014-11-24):
1435 This release includes all changes from 1.2.16-1.2.19 which are relevant.
1437 Documentation:
1439 * Convert HTML docs to reStructured text.  (Patch from Mayank Chaudhary)
1441 * Update for deprecation of Xapian::Chert::open().
1443 * Update for renaming of "brass" backend to "glass".
1445 * Remove SVN "$Date" placeholders as they aren't expanded by git, and the "last
1446   updated" information isn't all that informative anyway - there can still be
1447   stale information even if the file was updated very recently.
1449 General:
1451 * Releases and snapshots are now bootstrapped using a more recent version of
1452   SWIG (a git snapshot from after the 3.0.3 release).
1454 * configure: Fix SWIG version check to accept 3.x, and update the minimum
1455   accepted version to be what we actually currently want.
1457 * Wrap new C++ API features, and in particular all the new weighting schemes,
1458   the changes to opening databases, and Xapian::Snipper.
1460 * Wrap Xapian::Database::check() for the bindings ignoring the std::ostream*
1461   argument which the C++ API takes.  If opts != 0, then output is sent to
1462   stdout, otherwise no output is produced.
1464 * Object descriptions are now always valid UTF-8. (see #620)
1466 * Provide a SimpleStopper constructor which provides the ability to initialise
1467   from a stopword list in a file.  Based on patch from Assem Chelli.
1469 CSharp:
1471 * README: Note that C# bindings now need .NET 2 or later (because that's what
1472   SWIG-generated code now requires).
1474 Java:
1476 * Add testcase that FLAG_SPELLING is now wrapped in a usable way.  Patch from
1477   Anish Kanchan.  (see #616, reported by "Naveen")
1479 Lua:
1481 * Document that constants can now be accessed using CLASS.CONSTANT as well as
1482   CLASS_CONSTANT.
1484 Perl:
1486 * Move the new SWIG-based Perl bindings into a 'Xapian' module, to smooth the
1487   overlap with the hand-coded XS 'Search::Xapian' module.
1489 * Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
1490   during parallel builds.
1492 * Use croak_sv() or ERRSV if defined.
1494 PHP:
1496 * Make PHP 5.4 the minimum version we officially support, as 5.3 has now
1497   reached EOL.
1499 * Wrap Xapian iterator classes as PHP iterators - requires PHP 5.5 for full
1500   support, under PHP 5.4 you can't use `foreach ($it as $k => $c)`, but
1501   `foreach ($it as $c)` works and allows iterating through the equivalent of
1502   C++ operator* on the iterator.  (fixes#652)
1504 * Fix handling of an exception thrown from a PHP implementation of
1505   FieldProcessor::apply().
1507 * smoketest.php: Add tests of get_eset() with an ExpandDecider and with a min
1508   weight threshold.
1510 * In current PHP releases, dl() is disabled in most SAPIs, and even where
1511   available it will now only look in the configured extension directory.  The
1512   upshot is that there no longer seems to be a sane way to install the PHP
1513   bindings without being root.  Fixes #661, reported by Felix Ostmann.
1515 Python2:
1517 * The python testsuite already tested if any constants weren't marked with
1518   the CONSTANT macro in xapian-headers.i, but the resulting error didn't
1519   clearly point to the actual problem.  Now we report the names of any
1520   such constants.
1522 * In the testsuite, use the xapian.WritableDatabase constructor rather than
1523   chert_open() - that code dates back to when chert was the only disk-based
1524   backend to support valuestreams, but flint was the default backend.
1526 * Fix typo in code to keep a reference to a FieldProcessor object, reported by
1527   Germán M. Bravo in github PR59.
1529 * Generate Python API docs with Sphinx.  (Fixes #138, patch from Assem Chelli)
1531 Python3:
1533 * Python 3 support has been split off into its own subdirectory, and should now
1534   be usable.  3.2 is the minimum supported version currently.  Existing code
1535   will need updating for Python 3, and the wrapped API is necessarily different
1536   in how Unicode is handled, so we've dropped deprecated features (such as
1537   'MSet.items' and 'ESet.items') from the Python 3 bindings.  (see #346)
1539 * Fix typo in code to keep a reference to a FieldProcessor object, reported by
1540   Germán M. Bravo in github PR59.
1542 * Generate Python API docs with Sphinx.  (Fixes #138, patch from Assem Chelli)
1544 Ruby:
1546 * configure: Don't prefer ruby1.8 to ruby when looking for a ruby interpreter -
1547   these days it's more likely to ignore ruby 1.9 or 2.0 rather than avoid
1548   picking ruby 1.6.
1550 Xapian-bindings 1.3.1 (2013-05-03):
1552 This release includes all changes from 1.2.10-1.2.15 which are relevant.
1554 Documentation:
1556 * HACKING: Document Debian packages needed for each language.
1558 General:
1560 * Wrap new C++ API features.
1562 * Use new XAPIAN_NOTHROW markers in C++ API headers to avoid generating
1563   unnecessary exception handling code where we call such functions and
1564   methods.
1566 * Tweak wrapping of Query from list constructor so the needed number of
1567   elements get preallocated.
1569 * Ignore Query(Query::Internal&) constructor, which is for internal use
1570   only.
1572 * For all languages except C# and Java, wrap the functions declared in
1573   xapian/dbfactory.h by getting SWIG to parse the header.  This means we now
1574   wrap the WritableDatabase form of Xapian::Auto::open_stub() for these
1575   languages.
1577 * swig-depcomp: Script which wraps invoking SWIG, tells it to generate
1578   dependencies, and adjusts the generated dependencies to work in our build
1579   system.
1581 * Remove support for 'configure --enable-quiet', 'make QUIET=' and 'make
1582   QUIET=y' - automake now supports 'configure --enable-silent-rules', 'make
1583   V=1' and 'make V=0' which are broadly equivalent and more standard.
1585 * Fix the tests to work with the new automake parallel test driver.
1587 Portability:
1589 * Improve workaround which allows building against an uninstalled xapian-core
1590   on OS X - this should now work with any uninstalled xapian-core (not only in
1591   a tree with the same layout as an SVN or git checkout) and it also won't try
1592   to build against "../xapian-core/.libs" just because it happens to exist.
1593   (Fixes #322)
1595 CSharp:
1597 * configure: The variable to specify the interpreter is now CLI (was MONO, but
1598   didn't actually work properly).
1600 Java:
1602 * Document that we aim to support JDK 1.6 (Java 6) and later.
1604 * Avoid generating a temporary C++ vector of Query objects when constructing
1605   a Query from a Java array of Query objects or a Java array of strings.
1607 * Implement and test MSetIterator, ESetIterator.  Fix PostingIterator,
1608   ValueIterator, and TermIterator.
1610 * Add Enquire.getMatchingTerms().
1612 * Use JAVACFLAGS when running JAVAC to allow extra flags to be specified when
1613   building, e.g. "make JAVACFLAGS=-g".
1615 * java/SmokeTest.java: Avoid using System.err.printf() which fails to compile
1616   with (the rather elderly) ECJ 3.3.1.
1618 Perl:
1620 * Fix PostingIterator wrapper to work.
1622 * Update list of unwrapped things in POD documentation.
1624 * Improve test coverage.
1626 * perl/t/10query.t: Adjust regexp which checks expected error message to work
1627   with Perl 5.16, which adds a '.' after "at foo line 123".  (ticket#610)
1629 * Probe for the test running tool 'prove' in configure.
1631 PHP:
1633 * Avoid using zend_error_noreturn() as it doesn't work with all builds of PHP.
1634   Instead we now wrap it in a SWIG_FAIL() function which we annotate as
1635   "noreturn" for GCC to avoids warnings.  This also reduces the size of the
1636   compiled PHP module by 6%.
1638 * php/smoketest.php: Add more tests of geospatial API.
1640 Python:
1642 * Drop support for Python 2.4.
1644 * python/smoketest2.py: Add more testcases.
1646 * python/smoketest2.py: Improve reporting of test failures for certain
1647   testcases.
1649 * Update Python 3 tests from Python 2 versions using 2to3.
1651 Xapian-bindings 1.3.0 (2012-03-14):
1653 Documentation:
1655 * In maintainer builds, run doxygen to generate XML for the bindings in the
1656   bindings build system, not as a side-effect in xapian-core's.  (ticket#262)
1658 General:
1660 * Wrap new geospatial API.
1662 * Wrap new database checking API.
1664 * Deprecated features scheduled for removal in 1.3.0 have been removed.
1666 * Wrap ExpandDecider even if we don't have director support - there's a
1667   ExpandDeciderFilterTerms subclass which is useful in itself, though it still
1668   needs some typemap work to actually get it usefully wrapped.
1670 * configure:
1672   + Add --disable-visibility option to match xapian-core.
1674   + Add -fshow-column for GCC.
1676   + Don't put -Werror in SWIG_FLAGS - instead put it in a new SWIG_WERROR
1677     variable, so that it's easy to override it if you're getting a new warning
1678     from SWIG but want to just ignore it for the time being.
1680 * Exception handling now uses Error::get_description() rather than get_type +
1681   ": " + get_msg().  In many cases this is the same, but if context or errno
1682   are available, get_description() includes them.  Catch and report
1683   std::exception rather than handling it as an unknown error (so in particular
1684   std::bad_alloc will now be reported more helpfully).
1686 CSharp:
1688 * Avoid generating unwanted wrapper sources
1689   SWIGTYPE_p_std__vectorT_std__string_t.cs and
1690   SWIGTYPE_p_std__vectorT_Xapian__Query_t.cs.
1692 Java:
1694 * The hand-coded JNI Java bindings have been removed and the SWIG-based Java
1695   bindings promoted in their place.  This means almost the entire C++ API is
1696   now wrapped for Java, but the downside is there are some changes required
1697   to existing code.  Overall we feel the short-term pain is worth the long
1698   term benefits of having Java bindings which stay up to date.
1700 * java/SmokeTest.java: Add test that string passing is zero byte safe.
1702 Lua:
1704 * Improve error messages.
1706 Perl:
1708 * Fix "Use of qw(...) as parentheses is deprecated" warnings in test cases with
1709   Perl 5.14.
1711 * Fix Search::Xapian::Query->new() to work.
1713 * Enable warnings for all test cases and make them fatal.
1715 * Add "use Carp;" where we use functions from that module.
1717 * Improve POD docs for Document and TermGenerator methods - "weight" is
1718   misleading, so use "wdfinc" and "wdfdec" like the C++ API docs do.
1720 * The Query constructor which takes an array of subqueries is now wrapped more
1721   efficiently - previous a temporary C++ std::vector was built but now we avoid
1722   doing this.
1724 PHP:
1726 * PHP >= 5.3 is now required.
1728 * Add PHP type hints to the class wrappers.  Fixes ticket#577.
1730 * The XapianQuery constructor which takes an array of subqueries is now
1731   wrapped more efficiently - previous a temporary C++ std::vector was built
1732   but now we avoid doing this.
1734 Python:
1736 * Python >= 2.4 is now required.
1738 * Remove deprecated Stem_get_available_languages().
1740 * Hide away the deprecated non-pythonic iterators - we still need them to
1741   implement the pythonic iterators, so we can't entirely remove them.
1743 * Replace SWIG's thread locking with code which does nothing unless threads
1744   are already initialised, to avoid the overhead of thread locking in the
1745   common case of single-threaded Python code.  This seems to be about 5-10%
1746   faster for pythontest2.py modified to repeat the tests 100 times.
1748 * Handle the GIL in a way which also works in sub-interpreters.  Fixes ticket
1749   #364.
1751 * The Query constructor which takes an array of subqueries is now wrapped more
1752   efficiently - previous a temporary C++ std::vector was built but now we avoid
1753   doing this.
1755 Ruby:
1757 * The XapianQuery constructor which takes an array of subqueries is now
1758   wrapped more efficiently - previous a temporary C++ std::vector was built
1759   but now we avoid doing this.
1761 Tcl:
1763 * The XapianQuery constructor which takes an array of subqueries is now
1764   wrapped more efficiently - previous a temporary C++ std::vector was built
1765   but now we avoid doing this.
1767 Xapian-bindings 1.2.23 (2016-03-28):
1769 Documentation:
1771 * Update links to Xapian website and trac to use https, which is now supported,
1772   thanks to James Aylett.
1774 PHP:
1776 * Check that the PHP interpreter we find is actually PHP5, and if not look
1777   harder.  On current Debian unstable, php-config5 --php-binary reports
1778   /usr/bin/php which can be PHP7.
1780 * Document that PHP7 isn't currently supported, and explicitly check for and
1781   reject it in configure.
1783 Ruby:
1785 * configure: Stop preferring rdoc-1.8 to rdoc (this only happened in a
1786   fall-back case when rdoc wasn't found in the same directory as the ruby
1787   interpreter).
1789 Xapian-bindings 1.2.22 (2015-12-29):
1791 Documentation:
1793 * Stop maintaining ChangeLog files.  They make merging patches harder, and stop
1794   'git cherry-pick' from working as it should.  The git repo history should be
1795   sufficient for complying with GPLv2 2(a).
1797 General:
1799 * Stop wrapping internal methods of Xapian::Weight.
1801 * Return Error::get_description() rather than get_type + ": " + get_msg().  In
1802   many cases this is the same, but if context or errno are available,
1803   get_description() includes them.
1805 * Catch and report std::exception rather than handling it as an unknown error
1806   (so in particular std::bad_alloc will now be reported more helpfully).
1808 CSharp:
1810 * Fix configure test for whether $MONO can run CSharp programs - previously it
1811   would always fail, which would mean that the CSharp tests would only be run
1812   on systems where CSharp programs can be run directly.
1814 Lua:
1816 * Send stderr from lua version check to config.log instead of letting it appear
1817   on the terminal.
1819 PHP:
1821 * Fix memory leak and crash when using PHP subclasses of Xapian functors.
1823 * Subclasses of XapianMatchSpy and XapianPostingSource with implicit
1824   constructors now work.
1826 Python:
1828 * Add new testcase to catch any internal functions, methods, constants, etc
1829   which have accidentally been wrapped.
1831 Xapian-bindings 1.2.21 (2015-05-20):
1833 Lua:
1835 * README: Remove note about the Lua bindings being experimental - it's not
1836   really been true for some time now.
1838 Perl:
1840 * Wrap missing constants OP_SYNONYM and STEM_ALL_Z.
1842 * Add workaround for Perl defining a seed() macro which breaks compilation with
1843   GCC in C++11 mode (due to <algorithm> now pulling in random number generation
1844   classes with a method called seed).
1846 * Update list of unwrapped things in POD documentation.
1848 * Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
1849   during parallel builds.
1851 * Add test coverage for Enquire::set_collapse_key() with 1 and 2 parameters.
1853 * Add test that we can create all the stemmers returned by
1854   Stem::get_available_languages().
1856 * t/symbol-test.t: If the symboltest module build fails, skip the test - it's
1857   likely due to external reasons, like incompatible compiler flags being taken
1858   from Perl's Config module, due to Perl having been built with a different
1859   compiler to Xapian.
1861 * Use croak_sv() or ERRSV if defined.
1863 PHP:
1865 * README: Remove note about the subclassing bug with PHP 5.4 and later - that
1866   was fixed in 1.2.19.
1868 Python:
1870 * README: Add note that 1.3.2 has Python 3 support, and that this will be in
1871   stable release 1.4.0.
1873 Ruby:
1875 * smoketest.rb: Fix "warning: assigned but unused variable - mset".
1877 * Ship generate-rdoc-stubs in the tarball.  Reported by Matthias Klose in
1878   https://bugs.debian.org/782270
1880 Xapian-bindings 1.2.20 (2015-03-04):
1882 Portability:
1884 * configure: Avoid using \? in sed command in Lua detection - it isn't
1885   supported by all sed implementations.
1887 Lua:
1889 * configure: Rework LUA_SO checks to be clearer and to properly handle LUA_SO
1890   being specified without a leading '.'.
1892 * configure: Add an example of specifying LUA_SO to --help output.
1894 PHP:
1896 * Remove text about subclassing bug with PHP 5.4 and later - that was fixed in
1897   1.2.19.
1899 * In current PHP releases, dl() is disabled in most SAPIs, and even where
1900   available it will now only look in the configured extension directory.  The
1901   upshot is that there no longer seems to be a sane way to install the PHP
1902   bindings without being root, so update the documentation to reflect this.
1903   Fixes #661, reported by Felix Ostmann.
1905 Xapian-bindings 1.2.19 (2014-10-21):
1907 PHP:
1909 * Fix up SWIG generated C++ wrapper code so that subclassing of wrapped classes
1910   in PHP works with PHP 5.4 and later.  (Fixes #652, reported by Sebastian
1911   Gottfried)
1913 * Fix XapianQueryParser::set_stopper() and XapianTermGenerator::set_stopper()
1914   which were getting incorrectly wrapped such that they didn't actually do
1915   anything.  Fixes #659, reported by jmienert.  This bug was introduced by the
1916   reference tracking fix in 1.2.14.
1918 Ruby:
1920 * README: Note that Ruby 2.1 works too.
1922 Xapian-bindings 1.2.18 (2014-06-22):
1924 Documentation:
1926 * README: Add links to Erlang and Node.js bindings.
1928 Lua:
1930 * lua/smoketest.lua: Change expect() parameter order to the more natural (got,
1931   expected), which most of the calls already used, and fix up the few calls
1932   which passed (expected, got).
1934 PHP:
1936 * php/smoketest.php: Add missing "exit(1);" after reporting failure of check
1937   that MatchDecider returns an MSet with the expected docid in.  Luckily this
1938   wasn't masking a test failure.
1940 Python:
1942 * python/pythontest.py: There's no longer a need to use chert_open() explicitly
1943   - chert is the default backend now, and both chert and brass support the
1944   required functionality for the tests which do this, so this just needlessly
1945   causes the tests to fail if chert is disabled in xapian-core.
1947 * configure: If the Python version is too new or too old, only report it once
1948   not twice.
1950 Ruby:
1952 * configure: Fix Ruby bindings to build on Windows (and other platforms where
1953   allow_undefined_flag=unsupported. (fixes#634, reported by Alexis Denis)
1955 Xapian-bindings 1.2.17 (2014-01-29):
1957 Portability:
1959 * Improve workaround which allows building against an uninstalled xapian-core
1960   on OS X - this should now work with any uninstalled xapian-core (not only in
1961   a tree with the same layout as an SVN or git checkout) and it also won't try
1962   to build against "../xapian-core/.libs" just because it happens to exist.
1963   (Backported from 1.3.1; fixes #322)
1965 Python:
1967 * configure: Some distros now point /usr/bin/python at Python 3, so the check
1968   for a Python 2 interpreter now checks for 'python2' first, and checks that
1969   the version of found interpreter is 2.x.
1971 Ruby:
1973 * Tweak configure to work with Ruby 2.0.
1975 Tcl:
1977 * Link against -ltclstubX.Y for Tcl 8.5 and later (reported by Sergei Golovan
1978   in https://bugs.debian.org/724830).
1980 * Use a better check for TCL_INC for Tcl 8.5 and later.
1982 Xapian-bindings 1.2.16 (2013-12-04):
1984 Documentation:
1986 * README: Note that the SWIG Perl bindings should replace the XS ones in 1.4.x.
1988 General:
1990 * Compress source tarballs with xz instead of gzip.
1992 * configure: Handle git snapshot naming.
1994 Portability:
1996 * configure: Update list of platforms where we tell libtool not to link in
1997   deplibs to match the list used for xapian-core.
1999 Perl:
2001 * Pass 0 instead of NULL for non-pointer parameter to av_fetch (spotted due to
2002   GCC 4.7 warning).
2004 * symboltest.t: Pass $CPPFLAGS and $CXXFLAGS from the environment through to
2005   the sub-build, fixing failure when built with CPPFLAGS=-D_GLIBCXX_DEBUG.
2007 PHP:
2009 * smoketest.php: If running under PHP >= 5.4, skip the tests we know will fail
2010   with a message explaining this.
2012 Python:
2014 * Provide bindings version in xapian.__version__ as per PEP 396.  (see #346)
2016 * python/docs/examples/simpleexpand.py: Use Pythonic iteration over the ESet.
2018 * pythontest.py: Fix testcase checking we get an exception from using
2019   non-random-access iterators after then have advanced - previously these
2020   didn't actually test as fully as intended.
2022 Ruby:
2024 * Omit internal classes and methods from the rdocs.
2026 Xapian-bindings 1.2.15 (2013-04-16):
2028 General:
2030 * Fix configure --enable-quiet option to actually work for the bindings.
2032 Perl:
2034 * Fix doc typo: "as as" -> "as a"
2036 Ruby:
2038 * Fix deprecation warning in configure from Ruby 1.9.3.
2040 Xapian-bindings 1.2.14 (2013-03-14):
2042 Python:
2044 * Fix typo in doccomment.
2046 PHP:
2048 * Keep references to the PHP wrapper object when an object is set on another
2049   object.  (fixes #614)
2051 Tcl:
2053 * Allow TCL_INC to be passed to configure.  (fixes #612)
2055 Xapian-bindings 1.2.13 (2012-11-09):
2057 CSharp:
2059 * configure: Overhaul checks for C# tools to use modern names in preference.
2061 Lua:
2063 * Fix examples to use str(query) to get the query description.  (Fixes #600)
2065 * Document that get_description() is mapped to str(), and end() to _end().
2067 * Fix functor wrappers which return strings to be zero-byte clean.
2069 Perl:
2071 * Forward port tests of StringValueRangeProcessor with a prefix or suffix from
2072   1.2's XS Search::Xapian.  (ticket#607)
2074 * Update testsuite not to use UNIVERSAL::isa() as a function, since doing so
2075   is deprecated.
2077 PHP:
2079 * Document that subclassing Xapian classes in PHP currently doesn't work with
2080   PHP 5.4.
2082 Xapian-bindings 1.2.12 (2012-06-27):
2084 No changes since 1.2.11 except to bump the version - this release was made to
2085 fix an incorrect library version information update in xapian-core 1.2.11.
2087 Xapian-bindings 1.2.11 (2012-06-26):
2089 General:
2091 * Ship the scripts which generate the except.i files for Lua, Perl and Python.
2093 Perl:
2095 * In generated C++ code, pass 0 instead of NULL for non-pointer parameter to
2096   av_fetch() (spotted due to GCC 4.7 warning).
2098 PHP:
2100 * Fix "make check" to work for PHP when building from a release tarball with
2101   srcdir != builddir.
2103 * Work around "undefined symbol: zend_error_noreturn" error.
2105 Xapian-bindings 1.2.10 (2012-05-09):
2107 CSharp:
2109 * Use -keyfile and -keycontainer options to the C# compiler, because it warns
2110   us to do this instead of setting them in AssemblyInfo.cs.
2112 * Use diff's -c option when comparing the files SWIG generated against those we
2113   were expecting to get as the output should be easier to understand.
2115 * Sort both the lists of expected and of found SWIG-generated sources with
2116   Perl, to avoid problems with locale-specific sort orders.
2118 Java-SWIG:
2120 * Remove now superfluous old check that SWIG generated at least the sources we
2121   want - we now check it generated *exactly* the sources we want.
2123 * Use diff's -c option when comparing the files SWIG generated against those we
2124   were expecting to get as the output should be easier to understand.
2126 * Sort both the lists of expected and of found SWIG-generated sources with
2127   Perl, to avoid problems with locale-specific sort orders.
2129 Lua:
2131 * Now works with Lua 5.2.
2133 * "require 'xapian'" now returns the module table.  (ticket #593)
2135 * lua/smoketest.lua: Improve reporting of test failures.
2137 Perl:
2139 * Avoid importing isa from UNIVERSAL to fix Perl 5.12 deprecation warning.
2141 * Remove #! lines with -W to fix "Name "Test::More::TODO" used only once:
2142   possible typo at /usr/share/perl/5.14/Exporter/Heavy.pm line 190." warnings.
2144 Python:
2146 * python/docs/examples/simpleexpand.py: Update to not use deprecated MSet
2147   iteration features which have been removed on trunk.  This also fixes a
2148   segfault if there are no matches and no documents are explicitly marked as
2149   relevant.
2151 * python/testsuite2.py: Explicitly suggest "make check VERBOSE=1" as a simple
2152   way to rerun tests with verbose output.
2154 Ruby:
2156 * configure: Make sure the ruby subdirectory exists before trying to create
2157   ruby/rubyio.h, so this works in a VPATH build from a clean tree.
2159 Xapian-bindings 1.2.9 (2012-03-08):
2161 Java:
2163 * configure: Fix test for jni.h to try looking for jni.h relative to the real
2164   location of javac, which should work for more JDKs.
2166 Lua:
2168 * Handle an exception from C++ by raising a xapian.Error object as an error in
2169   Lua.
2171 * Rename get_description() methods to __tostring(), so that you can use write
2172   tostring(obj) in Lua.
2174 * configure: Honour LUA_LIB if already set.  Fixes #581.
2176 * configure: Improve probing for LUA_LIB, and also probe for LUA_SO so we
2177   support platforms where the compiled Lua module isn't called .so.
2179 Perl:
2181 * Add tests of Document::get_docid().
2183 PHP:
2185 * Add a test that Query constructor taking OP_NEAR with a window size works.
2187 Python:
2189 * python/testsuite2.py: Don't run off the traceback looking for a test function
2190   if the exception wasn't from a test function.
2192 Xapian-bindings 1.2.8 (2011-12-13):
2194 Lua:
2196 * Wrap user-subclassable functor objects by allowing the user to pass a
2197   Lua function where the functor object would be passed in the C++ API.
2199 PHP:
2201 * Fix "PHP Notice:  Undefined variable: r in xapian.php".  (Fixes bug#576)
2203 * The PHP bindings will now work again with a version of PHP built with ZTS
2204   enabled (which is the default on Microsoft Windows).  This was broken by
2205   the changes to support subclassing in PHP in the version of SWIG used since
2206   1.2.6.
2208 Python:
2210 * Add a module docstring.  (Fixes bug #573)
2212 * The python testsuite now checks for object leaks during each testcase.
2214 * In test_matchingterms_iter, run the code we're testing for leaks twice, and
2215   only check for leaks the second time to avoid falsely reporting a leak when
2216   some cached value gets initialised under Python 2.5.
2218 Ruby:
2220 * Wrap optional prefix parameter to Database::allterms.
2222 Xapian-bindings 1.2.7 (2011-08-10):
2224 Documentation:
2226 * INSTALL: Pull in a few updates from the latest version of the automake
2227   document which this file was originally based on.  Add in the missing
2228   copyright and licensing information.
2230 * INSTALL: Add --with-lua to list of options.
2232 * INSTALL,README: It's no longer noteworthy that Mac OS X 10.1 and 10.2 aren't
2233   supported as Apple ditched them long ago, so drop this as a "Known Issue" in
2234   INSTALL and instead just say "Mac OS X >= 10.3" in the discussion of
2235   supported platforms in the README.
2237 * HACKING: Update and start section on deprecation warnings for the bindings.
2239 General:
2241 * Add missing wrappers for Database::has_positions() and
2242   TermIterator::positionlist_count(), and correct the return type of
2243   Database::get_doclength() from double to Xapian::termcount.
2245 CSharp:
2247 * README: Note a recent version of Mono which we've tested the C# bindings
2248   with.
2250 * Check that exactly the sources we expect are generated, and add some sources
2251   which were missing from the list.
2253 * Fix "make uninstall" so the compiled C++ module (typically _XapianSharp.so)
2254   gets removed.
2256 * Fix iterator ++ and -- so that the reference to the object isn't released
2257   prematurely, which was causing an occasional crash if the garbage collection
2258   happened at just the wrong moment,
2260 * Add test coverage for QueryParser.ParseQuery() with flags argument.
2262 * Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
2264 Java:
2266 * SmokeTest.java: Fix == comparisons with strings to use equals().
2268 * Add test that string passing is zero byte safe.
2270 * Fix MyExpandDecider.accept() to really check the passed parameter.
2272 Java-SWIG:
2274 * Put the SWIG-generated Java bindings in package org.xapian.
2276 * Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
2278 * SmokeTest.java: Fix == comparisons with literal strings to use equals()
2280 * Add test that string passing is zero byte safe.
2282 * Fix MyExpandDecider.accept() to really check the passed parameter.
2284 * Fix the compile JNI code to have a .jnilib extension on Mac OS X.
2286 * Create an HTML documentation page based on java/README.
2288 * Copy java examples from the hand-coded JNI ones.
2290 * docs/examples/SimpleIndex.java: Update to use commit() rather than flush().
2292 * Check that exactly the sources we expect are generated, and add some sources
2293   which were missing from the list.
2295 Lua:
2297 * Merge latest Lua changes from Xiaona Han.
2299 * lua/smoketest.lua: Add simple test for Database::positionlist_begin().
2301 * simpleexpand.lua: Don't try to add anything to the RSet if there are no
2302   matches.
2304 Perl:
2306 * Sync updates to examples from XS Search::Xapian:
2308   + Require Perl >= 5.6 so we can "use warnings;".
2310   + Loop over file using while() (which reads a line per iteration) not
2311     foreach() (which reads the whole file up front).
2313 * Wrap MatchAll and MatchNothing for Perl (as Search::Xapian::Query::MatchAll
2314   and Search::Xapian::Query::MatchNothing).  (ticket#158)
2316 * perl/t/termgenerator.t: Test TermIterator::index_text() with two arguments.
2318 * perl/Makefile.am: Fix "make check".
2320 * perl/t/symbol-test.t: Fix to work when built against an installed
2321   xapian-core.  (ticket#558)
2323 PHP:
2325 * php/smoketest.php: Install an error handler so the test fails if there are
2326   any errors, warnings, notices, etc.
2328 * Change PHP examples and test program to use 'include "xapian.php"' like user
2329   code should (rather than 'include "php5/xapian.php"' as they did previously).
2331 * Wrap MatchAll and MatchNothing for PHP as XapianQuery::MatchAll() and
2332   XapianQuery::MatchNothing(). (ticket#158)
2334 Ruby:
2336 * Wrap MatchAll and MatchNothing for Ruby.  (ticket#158)
2338 Xapian-bindings 1.2.6 (2011-06-12):
2340 General:
2342 * SWIG-based bindings are now generated with a newer version of SWIG
2343   (ticket#538).
2345 Portability:
2347 * On Mac OS X 10.5 or later, and 10.4 on x86, build Java JNI library with a
2348   .jnilib extension as we do for older versions.
2350 CSharp:
2352 * Upgrading to newer SWIG fixes issues with strings with newer C# versions.
2354 Java:
2356 * Fix memory leaks when functions taking string parameters throw exceptions.
2358 * Previously a hash table was used to map Java objects to C++ ones, but we
2359   now just cast the address of the C++ object to a jlong (which is 64 bits
2360   so will hold a pointer on current platforms).  This is more efficient and
2361   avoids the need for thread locks around accesses to the hash table.
2363 * Remove explicit checks for NULL around calls to delete.
2365 * Mark makefiles which build Java code as .NOTPARALLEL to avoid race conditions
2366   during parallel builds.
2368 Lua:
2370 * Add support for Lua, which is being developed by Xiaona Han during GSoC this
2371   year.  The current support should be regarded as experimental - it passes
2372   its automated tests, but the details of the Lua API are likely to evolve as
2373   the project progresses.
2375 Perl:
2377 * README: say that Perl bindings probably need Perl 5.8 or later.
2379 PHP:
2381 * Directors now work for PHP (ticket#488).  New simplematchdecider.php example.
2383 Python:
2385 * python/pythontest2.py: With Python 2.7, gc.collect() doesn't always collect
2386   all the garbage, so repeat until no further objects are freed.
2387   (https://bugs.debian.org/625679 and https://bugs.gentoo.org/349484).
2389 Ruby:
2391 * ruby/smoketest.rb: Older Ruby 1.8.x doesn't have Dir.mktmpdir() - just skip
2392   the compaction tests for these versions.
2394 Xapian-bindings 1.2.5 (2011-04-04):
2396 Documentation:
2398 * README: Update info on SWIG-based Perl bindings.
2400 * INSTALL: Copy new Multi-Arch section from xapian-core/INSTALL.  Replace VPATH
2401   section with better equivalent from xapian-core/INSTALL.
2403 General:
2405 * Wrap ESet::get_eset() with min_wt parameter (new in C++ API in 1.2.5).
2407 * configure: If xapian-core is a different release series, promote the
2408   mismatched versions warning to an error.
2410 Portability:
2412 * Mac OS X: Don't override MACOSX_DEPLOYMENT_TARGET on 10.5 and later, or
2413   10.4 on x86, as the default if unset on these versions is the current OS
2414   version.  (ticket#541)
2416 * python/pythontest2.py: In test_compactor(), close any open databases before
2417   removing the directory as you can't delete an open database on Microsoft
2418   Windows.  (ticket#526)
2420 CSharp:
2422 * Don't pass extra flags to Microsoft's gacutil.  (ticket#516)
2424 * Clarify the licence is GPL "version 2 or later" in the meta information
2425   we put in the module.
2427 Python:
2429 * Remove old and broken Enquire.get_matching_terms() method.  We deprecated
2430   Enquire.get_matching_terms() in 1.0.x, and removed it in 1.1.0, but
2431   accidentally left an older version of get_matching_terms() exposed.
2433 * Remove broken implementation of MSet.__contains__.  This appears never to
2434   have worked, and to have been broken for at least the past 3.5 years without
2435   anyone mentioning it, and is probably of little use anyway, so no need to
2436   deprecate.
2438 * python/docs/index.html: Document that MSet.items and ESet.items are
2439   deprecated, and what to use instead.  Note that MSET_DOCUMENT never worked on
2440   the tuple returned by MSet.items.  (ticket#531)
2442 * Add test coverage for mset.items.
2444 Ruby:
2446 * Add test coverage for Xapian::Compactor.
2448 * Handle an empty response to $RUBY --version specially.  This gives a less
2449   opaque error in cases where the user specified RUBY but the value given
2450   wasn't an executable file.
2452 Xapian-bindings 1.2.4 (2010-12-19):
2454 General:
2456 * Wrap the new Xapian::Compactor class.  The resolve_duplicate_metadata()
2457   virtual method is wrapped for subclassing for Python and Ruby currently.
2459 * Eliminate separate Makefile.am in the docs subdirectory of each language
2460   subdirectory and just inline any rules into the main sub-Makefile.am, which
2461   allows more of the build to run in parallel.
2463 * Don't ship some files which are generated at build time.
2465 * configure: Need python in maintainer mode to run doxy2swig.py.
2467 Packaging:
2469 * RPM: Package the Perl bindings.
2471 * RPM: Don't package _XapianSharp.la.
2473 Portability:
2475 * For Mac OS X builds, set DYLD_LIBRARY_PATH to allow tests to find an
2476   uninstalled Xapian library.  See ticket #322.
2478 * configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
2480 CSharp:
2482 * Don't install _XapianSharp.la.
2484 Perl:
2486 * Merge SWIG-based Perl bindings originally developed by Kosei Moriyama during
2487   GSoC 2009.  These are close to being a compatible replacement for the
2488   hand-coded XS bindings in Search::Xapian but also offer a more complete
2489   wrapping of the C++ API.  We're planning to replace the XS bindings with the
2490   SWIG ones for easier maintenance.  We encourage you to try them and let us
2491   know how you get on - particularly if you find cases where code which works
2492   with the XS bindings doesn't work with the SWIG ones.
2494 PHP:
2496 * Document that iterators shouldn't be dereferenced or advanced when at their
2497   end points (ticket#520).
2499 Python:
2501 * Fix memory leaks in typemaps which return Python lists.
2503 * MatchSpy can now be subclassed in Python.  Remote use isn't currently
2504   supported.
2506 * configure: Use sys.version_info tuple, rather than string splicing which
2507   assumes the Python "major.minor" is 3 characters (which would fail if Python
2508   2.10 were ever released, for example).
2510 Xapian-bindings 1.2.3 (2010-08-24):
2512 Packaging:
2514 * xapian-bindings.spec: Don't run autoreconf - it's no longer required.
2516 Xapian-bindings 1.2.2 (2010-06-27):
2518 * No user-visible change except for bumping the version to indicate
2519   compatibility with Xapian-core 1.2.2.
2521 Xapian-bindings 1.2.1 (2010-06-22):
2523 This release includes all changes from 1.0.21 which are relevant.
2525 General:
2527 * Wrap Xapian::StemImplementation.  Currently this has only been tested for
2528   Python.  (ticket#448)
2530 Guile:
2532 * Remove non-functional disabled guile bindings left over from Open Muscat
2533   days - if someone wanted to add guile bindings, it would be easier to start
2534   from scratch.
2536 Java-SWIG:
2538 * Update list of generated java sources in the SWIG-based Java bindings.
2540 PHP:
2542 * zend_throw_exception() returns, so return control to PHP directly after
2543   calling it to avoid needless extra work and possible issues.
2545 Python:
2547 * Fix "from xapian import *".  (ticket#477)
2549 * Fix testcase weight_normalise - a change in xapian-core means that
2550   get_max_possible() can now return zero for a non-existent term, so don't
2551   blindly calculate the reciprocal of it.
2553 * python/replicationtest2.py: Extend to check that changesets get applied
2554   correctly.
2556 * python/smoketest2.py: Check len(mset) works (improving test coverage of
2557   Python-specific wrapping).
2559 Xapian-bindings 1.2.0 (2010-04-28):
2561 This release includes all changes from 1.0.20 which are relevant.
2563 Portability:
2565 * configure: Tell libtool not to link in deplibs on platforms where we know
2566   they aren't needed.
2568 * configure: On Linux, extract the library search path from ldconfig which
2569   gives us the default entries reliably.
2571 Xapian-bindings 1.1.5 (2010-04-15):
2573 This release includes all changes from 1.0.19 which are relevant.
2575 Tcl:
2577 * tcl8/docs/index.html: Document WritableDatabase::close() as a way to
2578   sidestep the whole destructor issue.  (ticket#62)
2580 Xapian-bindings 1.1.4 (2010-02-15):
2582 This release includes all changes from 1.0.18 which are relevant.
2584 General:
2586 * Update for the new Brass backend and other C++ API changes.
2588 * Wrap Database::get_doclength_lower_bound(),
2589   Database::get_doclength_upper_bound(), Database::get_wdf_upper_bound(),
2590   Database::valuestream_begin() and Database::valuestream_end() for all
2591   languages. (ticket#431)
2593 * Wrap ValueIterator::skip_to() and ValueIterator::check() for all languages.
2595 Python:
2597 * Wrap valuestreams as Database.valuestream(), returning a ValueStreamIter
2598   object which dereferences to a ValueStreamItem object,
2600 * Fix Enquire.clear_matchspies() wrapper which crashed in 1.1.3.
2602 Ruby:
2604 * Add safe wrapper for the valuestream iterator.
2606 Xapian-bindings 1.1.3 (2009-11-18):
2608 This release includes all changes from 1.0.15-1.0.17 which are relevant.
2610 General:
2612 * configure: Default to looking for xapian-config-1.1 unless XAPIAN_CONFIG is
2613   specified.
2615 * Wrap the new MatchSpy class, and associated features.
2617 * Don't wrap PostingSource::serialise(), Weight::serialise() and
2618   Weight::unserialise() as they aren't useful from the bindings.
2620 * Update for the Sorter to KeyMaker changes.
2622 PHP:
2624 * Fix PHP bindings to build when PHP has been compiled in multithreaded mode,
2625   as it standardly is on Microsoft Windows.  Fixes #411.
2627 * Merged the PHP "smoketest" back together now we don't need to support
2628   PHP4 now.
2630 Python:
2632 * Fix a memory leak on error (in theory - we've not got a way to generate this
2633   error, so haven't been able to reproduce the leak or test the fix).
2635 Xapian-bindings 1.1.2 (2009-07-23):
2637 This release includes all changes from 1.0.14 which are relevant to trunk.
2639 Python:
2641 * Several changes towards fully supporting Python 3, but more work is required.
2642   (ticket#246)
2644 Xapian-bindings 1.1.1 (2009-06-09):
2646 This release includes all changes from 1.0.13 which are relevant to trunk.
2648 General:
2650 * Wrap the recently added extra parameter to Enquire::set_collapse_key().
2652 CSharp:
2654 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
2655   C# yet, and to use Query("") and Query() instead.
2657 * configure: If we don't find a C# compiler, don't test an empty command name
2658   further which saves a fork and avoids an odd looking message.
2660 PHP:
2662 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
2663   PHP yet, and to use Query("") and Query() instead.
2665 Python:
2667 * Wrap Query::MatchAll and Query::MatchNothing for Python and document how they
2668   are wrapped (ticket#158).
2670 * python/smoketest2.py,python/smoketest3.py: Update tests with FLAG_PARTIAL to
2671   expect SYNONYM in generated query.
2673 Ruby:
2675 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
2676   Ruby yet, and to use Query("") and Query() instead.
2678 Tcl:
2680 * Wrap Query::MatchAll and Query::MatchNothing for Tcl and document how they
2681   are wrapped (ticket#158).
2683 Xapian-bindings 1.1.0 (2009-04-22):
2685 Documentation:
2687 * INSTALL: Python 2.6 and later look in ~/.local for Python modules so update
2688   the instructions to suggest users use this standard location for installing
2689   without root access.
2691 General:
2693 * All deprecated features slated for removal in 1.1.0 have been removed.
2695 * All new C++ API features have been wrapped.  Also, since we now supply some
2696   standard MatchDecider subclasses, we now wrap Enquire::get_mset() so that
2697   these can be passed in even for languages for which SWIG doesn't support
2698   subclassing.
2700 Packaging:
2702 * xapian-bindings.spec: Updated to reflect the new Python packaging.
2704 Portability:
2706 * configure: Use XAPIAN_CXXFLAGS for test compiles since it may include options
2707   to put the compiler into ISO C++ mode).
2709 PHP:
2711 * PHP4 support has been removed, since PHP4 is no longer supported upstream
2712   as of 2008-08-08.
2714 Python:
2716 * Python 2.3 or later is now required.  2.2 is essentially unsupported
2717   upstream.
2719 * The import method used has been changed (by using a newer SWIG version)
2720   and no longer gives a warning with Python 2.6.
2722 * Initial support for Python 3.0 has been added.  This currently doesn't
2723   work correctly and should be treated as experimental. (ticket#346)
2725 * The newer SWIG version handles exceptions in director methods correctly
2726   so we no longer need our workaround for ticket #289.
2728 * Database::metadata_keys_begin() and Database::metadata_keys_end() are
2729   wrapped for Python as Database.metadata_keys().
2731 * The Python bindings are now installed as a python package, with the
2732   files in a xapian subdirectory, hiding the internal _xapian module
2733   better.
2735 * Python now flags deprecation warnings for the single argument form and old
2736   parameter name (ascending) in set_sort_by_key(), set_sort_by_value() and
2737   friends.
2739 Xapian-bindings 1.0.23 (2011-01-14):
2741 Portability:
2743 * configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
2745 PHP:
2747 * Document that iterators shouldn't be dereferenced or advanced when at their
2748   end points (ticket#520).
2750 Python:
2752 * Fix memory leaks in typemaps which return Python lists.
2754 Xapian-bindings 1.0.22 (2010-10-03):
2756 Packaging:
2758 * RPM: Don't package _XapianSharp.la.
2760 CSharp:
2762 * Don't install _XapianSharp.la.
2764 Python:
2766 * configure: Use sys.version_info tuple, rather than string splicing which
2767   assumes the Python "major.minor" is 3 characters (which would fail if Python
2768   2.10 were ever released, for example).
2770 * Add test_xapian_star.py to distribution - fixes failure of "test_import_star"
2771   testcase in pythontest.py.
2773 Xapian-bindings 1.0.21 (2010-06-18):
2775 Python:
2777 * xapian.BAD_VALUENO is now wrapped as a constant rather than variable which
2778   can't be written to. (ticket#297)
2780 * Fix cleaning of test directories to use "rm -rf" rather than "rm -f".
2782 * Add test to check that "from xapian import *" works.
2784 Xapian-bindings 1.0.20 (2010-04-27):
2786 Python:
2788 * Set PYTHONDONTWRITEBYTECODE=1 in the environment to prevent Python from
2789   generating .pyc files in srcdir for Python >= 2.6, and use a Bourne shell
2790   trap to delete them after running tests for older versions of Python.
2791   (ticket#315)
2793 Ruby:
2795 * configure: Fix typo so path to ruby is reported if Ruby < 1.8 is found.
2797 Xapian-bindings 1.0.19 (2010-04-15):
2799 Tcl:
2801 * tcl8/docs/index.html: Improve wording in a few places.
2803 Xapian-bindings 1.0.18 (2010-02-14):
2805 General:
2807 * Wrap new C++ API method Document::add_boolean_term().
2809 Ruby:
2811 * Generate entries in the Ruby rdocs for all classes which aren't documented
2812   because of Ruby-specific methods.  Fixes ticket#417.
2814 * Avoid absolute paths in the generated rdocs.
2816 Xapian-bindings 1.0.17 (2009-11-18):
2818 Packaging:
2820 * Improve RPM package summaries - the files are needed to *use* scripts as well
2821   as to develop them.  Use "Tcl" instead of "TCL" as the former is more
2822   conventional.
2824 Portability:
2826 * python/Makefile.am: Restore the "./" path to the sourced file
2827   libtoolconfig.tmp as ksh requires it.
2829 Java:
2831 * Fix memory leak when passing a MatchDecider to Enquire::get_mset().
2833 Xapian-bindings 1.0.16 (2009-09-10):
2835 Python:
2837 * Improved docstrings for QueryParser::set_default_op() and
2838   QueryParser::get_default_op() (automatically generated from changes in
2839   xapian-core).
2841 Xapian-bindings 1.0.15 (2009-08-26):
2843 Python:
2845 * Don't break long words when wrapping text in the generated API documentation
2846   comments as this was causing identifiers to be broken in two.
2848 Xapian-bindings 1.0.14 (2009-07-21):
2850 General:
2852 * configure: If $CSC is empty, don't try to run it.  This was a cosmetic bug
2853   and the only side-effect was an odd looking message.
2855 Python:
2857 * Rename methods at build-time using SWIG rather than a run-time in Python, as
2858   the latter approach adds a small time overhead when the module is being
2859   loaded.
2861 Ruby:
2863 * Fix to accept an integer value > MAXINT for a double parameter.
2865 Xapian-bindings 1.0.13 (2009-05-23):
2867 Packaging:
2869 * xapian-bindings.spec: Update C# packaging for rename of XapianSharp.so to
2870   _XapianSharp.so in 1.0.11.
2872 * xapian-bindings.spec: Update Tcl8 packaging for where we now install the
2873   bindings since 1.0.6.
2875 PHP:
2877 * Backport fix from SWIG SVN for misuse of formatted error function in
2878   SWIG-generated code.
2880 Python:
2882 * Change the SWIG-generated wrapper code so it doesn't attempt to acquire
2883   Python's Global Interpreter Lock (GIL) in situations where we know that it
2884   will already be locked.  This avoids some dead-locks with mod_python (due to
2885   mod_python bugs which are apparently unlikely to ever be fixed), and results
2886   in smaller wrappers which run a little faster (in tests with Xapian on x86-64
2887   Ubuntu 9.04, the stripped wrapper library was 11% smaller and ran 2.7%
2888   faster). (ticket#185)
2890 * README,python/docs/index.html: Update documentation of the above mod_python
2891   issue and also document the related mod_wsgi issue.  The status is now that
2892   everything seems to work if you stick to the main interpreter (ticket#364).
2894 * Backport fix from SWIG SVN for misuse of formatted error function in
2895   SWIG-generated code.
2897 * python/docs/examples/simplematchdecider.py: Read "avoid_value" from the
2898   second parameter, not the third.
2900 * python/docs/examples/simplematchdecider.py,
2901   python/docs/examples/simplesearch.py: Make use of str.join() for simpler,
2902   clearer code.
2904 Ruby:
2906 * README: Note that the testsuite fails due to a bug in the test/unit module in
2907   Ruby 1.9.0, but applications using the bindings should work, and that the
2908   testsuite works with Ruby 1.9.1.  Drop all mention of Ruby 1.6.x as that
2909   appears to be completely dead both upstream and in the wild.
2911 Xapian-bindings 1.0.12 (2009-04-19):
2913 Documentation:
2915 * INSTALL: Add a note about being able to pass variables to configure to pick
2916   which of several parallel installations of a language to build for.
2918 Python:
2920 * python/pythontest.py: Round the weights returned for the OP_SCALE_WEIGHT
2921   test to avoid failing due to rounding differences.
2923 * python/testsuite.py: Remove bare except: handlers from testsuite, so Ctrl-C
2924   stop the whole testsuite, not just the currently running testcase.
2926 Xapian-bindings 1.0.11 (2009-03-15):
2928 Documentation:
2930 * README: Note that 1.0.x doesn't (and isn't currently planned to) support
2931   Python 3, and possible current issues with Ruby 1.9.
2933 Portability:
2935 * Merge fixes from Cygwin Ports, so bindings should build out of the box on
2936   Cygwin.
2938 Python:
2940 * python/docs/examples/: Use str(obj) rather than obj.get_description() (the
2941   latter is deprecated, and support was removed in 1.0.0).
2943 * Add support for using the new name ("reverse") for the second argument of
2944   set_sort_by_key() and set_sort_by_value() and friends as a named parameter.
2945   The old name ("ascending") is still supported, but will be deprecated in
2946   1.1.0.
2948 * Keep Python references to Sorter, Stopper, and ValueRangeProcessor objects
2949   which get set on other objects to avoid segmentation faults if they go out
2950   of scope before the object they are set on does.  (ticket#341)
2952 Ruby:
2954 * Fixes for Ruby 1.9 compatibility (ticket#323).  The test harness currently
2955   fails so "make check" doesn't pass, but code using the bindings should work.
2957 Xapian-bindings 1.0.10 (2008-12-23):
2959 Python:
2961 * Need to clean testsuite.pyc from srcdir since that's where it gets generated
2962   as things stand (upstream fix for Debian bug 506090).
2964 Xapian-bindings 1.0.9 (2008-10-31):
2966 General:
2968 * configure: Add support for "--enable-quiet" like xapian-core and omega have.
2970 * Wrap new Database::metadata_keys_begin() and Database::metadata_keys_end()
2971   methods.
2973 Xapian-bindings 1.0.8 (2008-09-04):
2975 General:
2977 * configure: Report bug report URL in --help output.
2979 Python:
2981 * Fix mangling of exceptions thrown from Python subclasses of Xapian classes.
2982   (bug#289)
2984 * Fix memory leaks in the xapian.Query constructor.  (bug#294)
2986 Xapian-bindings 1.0.7 (2008-07-14):
2988 Documentation:
2990 * Document how all the database factory functions and library version functions
2991   are wrapped for all languages.
2993 General:
2995 * Fix to build against a xapian-core which has quartz and/or flint disabled.
2997 * The "program" version of Remote::open() has been wrapped for some time, so
2998   update the documentation which said it wasn't.
3000 Packaging:
3002 * xapian-bindings.spec: Remove "www." from xapian.org and oligarchy.co.uk URLs.
3004 Portability:
3006 * For Java, Python, and Ruby, use the libtool -shrext option to specify a
3007   different module extension rather than our own ugly bodge.
3009 Java:
3011 * Make passing string from Java to C++ zero-byte safe.  It doesn't appear to be
3012   simple to make C++ to Java work though.
3014 PHP:
3016 * Add test that OP_VALUE_GE works for PHP.
3018 Python:
3020 * Several corrections to the Python documentation.
3022 * configure: Fix problem with building under mingw.
3024 Ruby:
3026 * Include simplematchdecider.rb example.
3028 * smoketest.rb: Test the version reporting functions.
3030 Tcl:
3032 * Include simpleexpand.tcl example.
3034 * Fix where the Tcl module gets installed.
3036 * README: Note that Tcl 8.3 and earlier are no longer supported by upstream.
3038 Xapian-bindings 1.0.6 (2008-03-17):
3040 General:
3042 * Wrap OP_VALUE_GE and OP_VALUE_LE and the new Query constructor which they are
3043   used with.
3045 * configure: Correct the required SWIG version given in an error message.
3047 PHP:
3049 * php/smoketest.php: Add note that this script should be run using 'make check'
3050   in the build tree (rather than trying to copy it to a webserver as someone
3051   recently tried to).
3053 * php/smoketest.php: Fix to work under PHP4.
3055 Python:
3057 * The Python module now always has the extension which Python expects, which
3058   fixes a failure on Mac OS X.
3060 Ruby:
3062 * Automatically install/uninstall the Ruby rdoc-generated documentation along
3063   with the ruby bindings.
3065 Tcl:
3067 * configure: Sort out the default value of TCL_LIB, which could end up being
3068   under /usr/share in xapian-bindings 1.0.4 and 1.0.5.
3070 Xapian-bindings 1.0.5 (2007-12-21):
3072 General:
3074 * Wrap Xapian::Sorter and subclasses.
3076 * Wrap Enquire::set_sort_by_key(), Enquire::set_sort_by_key_then_relevance(),
3077   and Enquire::set_sort_by_relevance_then_key().
3079 * Factor out the code to protect multitarget rules against parallel make, and
3080   fix it to handle the source being changed while the rule is executing, and to
3081   correctly return an error code if we fail while trying to recover from the
3082   removal of a target of a multi-target rule.
3084 * configure: Improve the clarity of the error given when none of the tools
3085   needed for any supported language are found.
3087 * configure: SWIG 1.3.32 has now been released, so require at least this
3088   released version for maintainer builds.
3090 Java:
3092 * Add explicit '#include <cstring>' to fix build with the latest snapshots of
3093   GCC 4.3.
3095 * configure: Log the output of trying to compile conftest.java in config.log;
3096   if the test fails, report whether the failure was compiling or running the
3097   test program.
3099 * Check for directory existence rather than calling mkdir unconditionally as
3100   despite the "(ignored)", the error message seems to confuse some people.
3102 PHP:
3104 * Add feature test for XapianMultiValueSorter.
3106 * php/smoketest5.php: Fix use of Database_get_document to new style OO
3107   interface.  Fix the error reported when the PHP5 exception test fails.
3109 * php/smoketest.php: Add feature test to confirm that optional arguments to
3110   XapianQuery's "term" constructor are wrapped.
3112 Python:
3114 * Don't drop the GIL when calling Xapian.MSet.items and Xapian.ESet.items -
3115   these properties build a python list, so dropping the GIL isn't safe and
3116   may cause undefined behaviour in multithreaded environments.
3118 * configure: Update error message to reflect requirement for at least python
3119   2.2.
3121 * configure: Change "print foo" to "print(foo)" in python version checks, for
3122   compatibility with python 3.0.
3124 Ruby:
3126 * The Ruby bindings now work on Mac OS X (the Ruby module's extension was
3127   previously incorrect).
3129 * Run "rdoc" to generate HTML for the Ruby-specific API documentation which
3130   ruby/docs/index.html previously had a dead link to.
3132 Tcl:
3134 * configure: Overhaul code to find tcl.h since the old version no longer worked
3135   with Debian unstable.
3137 * tcl8/docs/index.html: Update documentation to cover flint and mention that
3138   quartz is now deprecated.
3140 * Remove code to handle `const char *' exceptions - as of 1.0.0 the QueryParser
3141   throws QueryParserError instead.
3143 Xapian-bindings 1.0.4 (2007-10-30):
3145 General:
3147 * Wrap new OP_SCALE_WEIGHT query operator, and corresponding Query constructor.
3148   Add feature tests for all languages.
3150 * The "bindings.html" file documenting each of the bindings has been renamed to
3151   "index.html".
3153 Packaging:
3155 * Fix the PHP Makefile.am to work with autoconf < 2.60 to fix RPM builds for
3156   older distros.
3158 Portability:
3160 * Fix warnings when compiling with GCC 4.2.
3162 PHP:
3164 * Update to newer SWIG SVN snapshot to fix memory leaks in wrapped constructors
3165   and methods/functions which return a wrapped class.
3167 * For PHP4, wrap Xapian::sortable_serialise() as xapian_sortable_serialise()
3168   and Xapian::sortable_unserialise() as xapian_sortable_unserialise().
3170 * Document how non-class functions are wrapped.
3172 * Fix wrapping of NumberValueRangeProcessor for PHP4.
3174 * smoketest.php: Split the regression test for bug#193 into separate
3175   versions for PHP4 and PHP5 as the previous version only worked for PHP5.
3177 Python:
3179 * python/docs/index.html: Promote the Pythonic iterators, and deprecate the
3180   non-pythonic iterators.  Make it clearer that the "sequence API" is
3181   deprecated.
3183 * Add test of a custom ValueRangeProcessor (ie, one written in python).
3185 * Update the examples to use the new-style attributes to access MSet item
3186   values rather than the old-style MSET_* constants.
3188 * Document MSET_DOCUMENT.
3190 Ruby:
3192 * smoketest.rb: Rename test of metadata access methods which had been named the
3193   same as the matchdecider test due to a copy-and-paste error.
3195 Xapian-bindings 1.0.3 (2007-09-28):
3197 General:
3199 * Wrap new methods Database::get_metadata() and
3200   WritableDatabase::set_metadata().
3202 * "make uninstall" now removes the loadable module we install for each of
3203   the bindings.
3205 * "make distcheck" now works.
3207 * Distribution tarballs are now in the POSIX "ustar" format since it saves
3208   about 40KB and we need to use it for xapian-core anyway.
3210 Packaging:
3212 * RPMs: Package xapian.php.
3214 CSharp:
3216 * Remove wrapper for ValueRangeProcessor::operator(), since it can't be
3217   usefully used currently.
3219 Java:
3221 * Remove wrappers for the Muscat36 backend, which has now been dropped from the
3222   C++ library.
3224 * "make clean" now removes the class files generated for inner classes.
3226 PHP:
3228 * Add feature test for DateValueRangeProcessor when used with QueryParser.
3230 * ValueRangeProcessor::apply() can now be called from PHP (bug#193).  This
3231   isn't actually very useful, since you can't subclass it in PHP currently.
3233 * Fixed wrapping of Enquire::set_cutoff() - previously this would only work
3234   if the third parameter was specified and a floating point number (e.g. 0.0).
3236 * php/docs/bindings.html: Fix errors in example code.
3238 Python:
3240 * ValueRangeProcessor::operator() is now wrapped as a __call__ method in
3241   Python which takes two strings and returns a 3-tuple (value_number,
3242   modified_begin, modified_end).  Previously this always failed with a
3243   type error, so this doesn't break existing code.
3245 * python/pythontest.py: Interpret any commandline arguments as a list of
3246   tests to be run (the default is to run all tests).
3248 * README,python/docs/bindings.html: Add a note about the problems with
3249   mod-python (as described in bug #185).
3251 * python/pythontest.py: Delete the database handles before deleting a database
3252   to fix problems running the Python tests on MS Windows (bug#179).
3254 * "make clean" now removes testsuite.pyc.
3256 Ruby:
3258 * Check for RUBY_INC, RUBY_LIB, and RUBY_LIB_ARCH in the environment or on
3259   the configure command-line.  The defaults for RUBY_LIB and RUBY_LIB_ARCH are
3260   now the site-specific directories, which is more correct when building
3261   from source.  Debian packages, etc can override this by setting RUBY_LIB and
3262   RUBY_LIB_ARCH.
3264 Tcl:
3266 * Check for TCL_LIB in the environment or on the configure command-line to
3267   allow installing without root access more cleanly.
3269 Xapian-bindings 1.0.2 (2007-07-05):
3271 Documentation:
3273 * Document use of PYTHON_LIB and PHP_EXTENSION_DIR instead of pylibdir and
3274   phpextdir.
3276 * Remove documentation of removed "--with-swig" configure option.
3278 General:
3280 * Add methods of NumberValueRangeProcessor for serialising and
3281   unserialising doubles.
3283 * Add methods and constants supporting spelling correction and synonyms.
3285 * Value of XAPIAN_CONFIG supplied to configure is now passed to distcheck,
3286   to ensure that it works with uninstalled copies of Xapian.
3288 * Value of PYTHON_LIB supplied to configure is now respected - previously
3289   it was documented, but ignored.
3291 * Add support for supplying PHP_EXTENSION_DIR to configure.
3293 * Change to using "%include", rather than reproducing contents of header
3294   files, for "queryparser.h", "document.h" and "postingiterator.h".
3296 * Add new form of get_mset() which allows a matchspy matchdecider to be
3297   set.
3299 * RPMs: Don't mention %makeinstall in a .spec file comment as that makes RPM
3300   explode.  Add in a missing "mv" in the command for installing tcl8
3301   documentation.
3303 CSharp:
3305 * Fix rule handling parallel make to include xapian_wrap.h
3307 PHP:
3309 * Install xapian.php as <PREFIX>/share/php<PHPMAJOR>/xapian.php.  There
3310   doesn't seem to be a standard location, but this works for Debian at
3311   least, and it seems better to at least try to install it.
3313 * Rename ValueRangeProcessor and subclasses and TermGenerator to have a Xapian
3314   prefix for PHP4.
3316 Python:
3318 * Fix a threading problem: the GIL was not being acquired in the exception
3319   handling code before setting the Python exception state, leading to
3320   various memory corruption symptoms in threaded programs.
3322 * Add special iterators to Database for synonyms, synonym_keys and
3323   spellings.
3325 * Add test cases for OP_VALUE_RANGE queries, getting spelling corrections,
3326   synonym iterators and spelling iterators.
3328 * In the test suite, expect_query() now adds "Xapian::Query(" and ")" around
3329   the expected description to make the tests more readable.
3331 Xapian-bindings 1.0.1 (2007-06-11):
3333 Documentation:
3335 * NEWS: Fix the recent headings which said "Xapian-core" to say
3336   "Xapian-bindings".
3338 General:
3340 * Wrap Xapian::Query constructor for creating ValueRange queries.
3342 * Wrap new forms of Xapian::Database::allterms_begin() and allterms_end()
3343   which take a prefix.
3345 Packaging:
3347 * RPMs: Use "make install" instead of %makeinstall to avoid doubled
3348   %{buildroot} prefix on most files which we then have to work around.
3350 CSharp:
3352 * SimpleIndex now uses Xapian.TermGenerator.
3354 * SimpleSearch now uses Xapian.QueryParser.
3356 * New SimpleExpand example.
3358 * Document explicitly how STEM_SOME constants are currently wrapped.
3360 * Update GetTermName() reference in documentation to GetTerm().
3362 * SmokeTest.cs: Update comment about Portable.NET bug - the bug is fixed in
3363   their CVS repo, and the fix should be in their 0.8.2 release.
3365 Java:
3367 * `configure --help' documented that environmental variable JNI_INCLUDE_DIR was
3368   looked at, but in fact its value was read but ignored.  We now use it as the
3369   first place to look for jni.h.
3371 * configure will now automatically add an extra "-I" for the
3372   linux/solaris/win32 subdirectory which Sun's JDK requires.
3374 * Document JAVA_HOME and JDK_HOME in ./configure --help and mark them as
3375   "precious" so their values are preserved for when configure is automatically
3376   rerun.
3378 PHP:
3380 * Enquire::get_mset(first, maxitems, omrset) now works for PHP5.
3382 * The PHP examples have been rewritten to be clearer and to make use of the
3383   new XapianTermGenerator class.
3385 Python:
3387 * Python examples now use xapian.QueryParser and xapian.TermGenerator.
3389 * Add support for prefix-restricted pythonic allterms iterators.
3391 * Update documentation in a couple of places to refer to updated replacements
3392   for MSetIterator.
3394 * Change testsuite output to be more vim-friendly (vim should be able to jump
3395   to the right lines now).
3397 * __str__ on Xapian::Error now includes extra information in some cases (the
3398   error_string and context, if they are set).
3400 * python/smoketest.py: Eliminate uses of the legacy sequence API.
3402 * python/pythontest.py: The legacy sequence API is only supported for Python
3403   2.3 and later, so don't run tests for it when running under Python 2.2.
3405 * We now generate and install xapian.pyo as well as xapian.pyc.
3407 Ruby:
3409 * The Ruby examples now use the Xapian::QueryParser and Xapian::TermGenerator
3410   classes.
3412 * Add missing rename for the C++ TermGenerator::set_document() method so it can
3413   be used as "tg.document = doc" in Ruby.
3415 * Fixed compilation on Mac OS X and warning from GCC on 32-bit Linux platforms.
3417 Tcl:
3419 * tcl8/docs/examples/simpleexpand.tcl: New example to demonstrate relevance
3420   feedback, based on C++ simpleexpand.cc.
3422 * tcl8/docs/example/simpleindex.tcl: New simpler example making use of the
3423   TermGenerator class.
3425 * tcl8/docs/example/simplesearch.tcl: New simpler example making use of the
3426   QueryParser class.
3428 * tcl8/docs/bindings.html: Document how constants are wrapped.
3430 * Update smoketest and examples to require version 1.0.0 - previously this
3431   required 0.9.6, which failed since TCL doesn't accept differing major
3432   version numbers.
3434 * pkgIndex.tcl is now generated by configure.
3436 Packaging:
3438 * The required automake version has been lowered to 1.8.3, so RPMs can now be
3439   built on RHEL 4 and SLES 9.
3441 Xapian-bindings 1.0.0 (2007-05-17):
3443 Documentation:
3445 * Document Unicode support for each language.
3447 * Assorted minor improvements and typo fixes.
3449 General:
3451 * Add wrappers for ExpandDecider, and Enquire::get_eset() variants which use
3452   it, for languages where SWIG supports directors.
3454 * Wrap new features: TermGenerator, ValueRangeProcessor hierarchy, the
3455   OP_VALUE_RANGE query operator, the new overloaded form of parse_query, which
3456   allows the "default_prefix" argument to be supplied, QueryParser flags
3457   FLAG_PURE_NOT and FLAG_PARTIAL.
3459 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
3461 * Remove wrappers for deprecated features removed from the C++ API (see
3462   docs/deprecation.html in xapian-core for full details and upgrade
3463   information).
3465 * Deprecate ESetIterator::get_termname() in favour of ESetIterator::get_term().
3467 * QueryParserError is now a real error, so remove special handling for "const
3468   char *" exceptions.
3470 * Use a stamp file in "make" rules with multiple targets so that parallel
3471   make works.
3473 * configure: Now quotes $PYTHON, etc so that you can specify a program with
3474   arguments.
3476 * configure: If the user specifies a program which doesn't exist (e.g.
3477   PYTHON=/opt/bin/ptyhon) don't autoprobe after failing to find it.
3479 * configure: Disable probes for f77, gcj, and rc completely by preventing
3480   the probe code from even appearing in configure - this reduces the size of
3481   configure by 28% and should speed it up significantly.
3483 * configure: If the version check against the xapian-core version detects a
3484   mismatch, we now issue a warning rather than a hard error since if you're
3485   careful this can work.  The warning is issued late on in configure, so it's
3486   harder for the user to miss.
3488 * configure: The --with-swig option has been removed.  It no longer has a
3489   purpose as we now ship the files which are generated by SWIG.
3491 Portability:
3493 * The PHP bindings can now be built with MSVC for Microsoft Windows.
3495 CSharp:
3497 * When using Mono 1.2, we must build with gmcs (the C# 2.0 compiler) rather
3498   than mcs to avoid segmentation faults at runtime due to unimplemented
3499   features in mcs.  Document this, and update configure to prefer gmcs.
3501 * The return type of MatchDecider::operator() is now `bool' rather than `int'
3502   (in line with the same change in the C++ API).
3504 * Xapian.Stem.StemWord() deprecated in favour of Xapian.Stem.Apply().
3506 Java:
3508 * The Java bindings have been updated to use C++ replacements for deprecated
3509   methods, so they still build.  The Java wrappers still provide the old
3510   deprecated names for now though.  The longer term plan is to replace the
3511   hand-written JNI with SWIG generated wrappers (work has now begun on this)
3512   which is likely to require some API changes, and it seems more sensible to
3513   make any changes to align with C++ API changes at the same time.
3515 * Enquire.getQuery() is implemented entirely in Java, so strip out the unused
3516   MyQuery mechanism, and so fix a memory link which it caused (bug#105).
3518 PHP:
3520 * Fix undefined behaviour in get_matching_terms().
3522 * Document the (existing) renaming of methods which are PHP reserved words
3523   (empty() to is_empty() and clone() to clone_object()).
3525 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
3527 Python:
3529 * The Python bindings now throw exceptions as classes with a hierarchy which
3530   mirrors that of the C++ Xapian::Error and its subclasses.  The xapian.Error
3531   base class inherits from the standard Python Exception class.
3533 * All Python methods which accept strings can now be passed either a unicode
3534   object or a simple string.  Strings are returned as simple strings: unicode
3535   input will be returned as utf-8 encoded output.  The documentation now
3536   contains a "Unicode" section.
3538 * The Python bindings should now be usable more efficiently from threaded
3539   Python applications since we now use SWIG's -threads option when generating
3540   them, so that the GIL is released during long-running Xapian operations
3541   (bug#137).
3543 * Most classes, methods, functions, etc now have docstrings which are either
3544   automatically extracted from the C++ documentation comments, or overridden by
3545   more appropriate versions.
3547 * Most of the Pythonic iterators now return an object instead of a sequence,
3548   which means they now lazily fetch the information which previously had to be
3549   fetched to put it in the sequence.  The old sequence API is supported for
3550   compatibility, but is scheduled for removal in Xapian 1.1.0.
3552 * Those Python iterators which have skip_to() methods now return the item
3553   skipped to, and next() will return the following item.  Previously, they
3554   returned None, and next() returned the item skipped to.  Several bugs in the
3555   skip_to() wrappers were fixed.
3557 * Because of the lazy access, some objects returned by iterators will raise
3558   an error if the lazy evaluation happens after the iterator has moved on
3559   (since the underlying Xapian API doesn't allow efficient access to the
3560   information in this situation).  The exact semantics are defined in the
3561   docstrings for each iterator.
3563 * Those Pythonic iterators which return only a list of terms now return
3564   simple strings, instead of a sequence or an object containing the term.  This
3565   is an incompatible change with earlier releases.  The affected iterators are
3566   Enquire.matching_terms, Query.__iter__, QueryParser.stoplist and
3567   QueryParser.unstemlist.
3569 * The contents of an MSet can now be iterated in the standard Python way.
3570   The iteration will return MSetItem objects.  The __contains__ and __getitem__
3571   methods are also implemented, allowing the "in" and [] operators to work.
3572   MSet.__getitem__ is a synonym for MSet.get_hit.
3574 * MSet.get_hit() now returns an MSetItem object instead of an MSetIterator,
3575   so that lazy access to its attributes is supported.  MSetItem has some
3576   deprecated methods which mimic the MSetIterator interface to allow old code
3577   to work without modification until release 1.1.0.
3579 * MSetItem provides access to the collapse_key and collapse_count, which
3580   weren't accessible from the sequence returned by the iterators before this
3581   release.
3583 * Out-of-range access to MSets will now raise an IndexError - it used to
3584   cause undefined behaviour (usually a crash).
3586 * The Python testsuite is now much more extensive, and supports colour output
3587   and verbosity levels, much like the C++ testsuite.  Tests of deprecated
3588   features are separated out, so that they can easily be removed when the
3589   features are removed.  The Python tests currently focus mainly on Python
3590   specific iterators and related functionality - general Xapian behaviour is
3591   tested by the C++ testsuite.
3593 * The pure Python code in the bindings now uses new-style classes, since we
3594   have required Python >= 2.2 since Xapian release 0.9.9.
3596 * Enquire.get_matching_terms is now deprecated - use Enquire.matching_terms
3597   instead.
3599 * The get_description() method which many classes support has been deprecated
3600   in favour of new more pythonic __str__ methods, so that the str() builtin can
3601   be used.  get_description() is deprecated and scheduled for removal in 1.1.0.
3603 Ruby:
3605 * We no longer regard the Ruby bindings as "beta quality", so remove the
3606   warning from their documentation.
3608 * Document that that C++ operator() becomes the method "call" in Ruby.
3610 * Don't read termfreq in safe wrapper for Document::termlist_begin().  Don't
3611   read wdf in safe wrapper for Database::allterms_begin() (bug#133).
3613 Tcl:
3615 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
3617 Xapian-bindings 0.9.10.1 (2007-04-04):
3619 PHP:
3621 * Fix PHP5 class wrapper generation in a few cases for overloaded methods with
3622   default parameters.  The most notable case was a missing Query constructor
3623   which meant that QueryParser was unusable.
3625 * Fix compilation of the PHP4 bindings with ZTS-enabled versions of PHP
3626   (which mostly seems to mean the MS Windows version).
3628 * Fix PHP5 crash on exit with ZTS-enabled versions of PHP (which mostly
3629   seems to mean the MS Windows version).
3631 * Add note to the documentation that PHP examples are written for CLI version
3632   of PHP, but that the bindings work with any version.
3634 * Add check to all PHP examples that they are being run under a CLI version of
3635   PHP.
3637 Python:
3639 * simpleexpand.py: Print each term's expand weight as a floating point value,
3640   not an integer.
3642 Ruby:
3644 * INSTALL: document how to install Xapian's Ruby bindings in your home
3645   directory.
3647 Xapian-bindings 0.9.10 (2007-03-04):
3649 Java:
3651 * Under Mac OS X, automatically look in the standard location for jni.h,
3652   and automatically rename the JNI library we build to ".jnilib", as is
3653   required by the OS X JVM.
3655 * java/README: Note success with Sun's JDK 1.5.0_06-b05, plus the requirement
3656   to add the linux header directory to the include path when using this JDK.
3658 * Add missing default constructor for RSet class - it's not much use without
3659   this!
3661 * Fix Enquire.getESet() to actually work.
3663 * Fix bug in ESetIterator.hasNext().
3665 * Fix MatchDecider and ExpandDecider so subclassing in Java actually works.
3667 * Fix memory leak with some JVMs in the "Query from array" constructor.
3669 * Fix memory leak in Enquire.setQuery().
3671 * SmokeTest.java: Add regression tests for RSet default constructor,
3672   Enquire.getESet(), ESetIterator.hasNext(), MatchDecider, ExpandDecider.
3673   Add feature tests for Enquire.getQuery(), and to make sure we get passed
3674   the right document in a java subclass of MatchDecider.
3676 * configure: Look for jni.h in $JAVA_HOME/include and $JDK_HOME/include if the
3677   respective variables are set.
3679 PHP:
3681 * Update the documentation to fix out-of-date information and document the
3682   differences between the PHP4 and PHP5 wrappers.
3684 * Update the examples to use the new Object Oriented API, and provide versions
3685   for both PHP4 and PHP5.
3687 * Add a "simpleexpand" example.
3689 * For PHP4, Xapian::DB_CREATE_OR_OPEN should be wrapped as
3690   Xapian_DB_CREATE_OR_OPEN not DB_CREATE_OR_OPEN, so wrap it with the
3691   new name, but keep the old name for now for backward compatibility.
3693 * configure: Try `$(PHP_CONFIG) --php-binary` when looking for a PHP
3694   interpreter - this works with PHP5.
3696 * configure: Remove the sanity check for PHP_EXTENSION_DIR added in Xapian
3697   0.9.8 - if Xapian is the first PHP extension to be installed, the extension
3698   directory may not exist and "make install" will create it.
3700 * configure: If zend.h isn't found and configure was run with "--with-php",
3701   exit with an error rather than automatically disabling PHP support.
3703 Python:
3705 * Fix a problem which preventing building for Python 2.5 on 64 bit platforms.
3707 Packaging:
3709 * RPMs: Add support for passing "--without python" to rpmbuild.  Document the
3710   various "--without" options in a comment at the start of the .spec file.
3712 * RPMs: Remove "." from the end of the Summary.
3714 Xapian-bindings 0.9.9 (2006-11-09):
3716 Documentation:
3718 * Ship our custom INSTALL file rather than the generic one from autoconf which
3719   we've accidentally been shipping instead since 0.9.5.
3721 General:
3723 * Wrap Flint::open() and Flint::open_writable().
3725 * configure: Require SWIG 1.3.30 (1.3.30 isn't out yet, but 1.3.30rc1 is
3726   suitable).
3728 Python:
3730 * Generate the bindings using SWIG 1.3.30rc1 which fixes a build error on 64
3731   bit platforms with Python 2.5.
3733 Packaging:
3735 * RPMs: Prevent binaries getting an rpath for /usr/lib64 on FC6.
3737 * RPMs: The Python bindings now require Python >= 2.2.
3739 Portability:
3741 * configure: Remove unnecessary backticks from tclsh version test.
3743 Xapian-bindings 0.9.8 (2006-11-02):
3745 General:
3747 * Wrap the "prog" form of Remote::open() (which is suitable for general purpose
3748   use as of 0.9.7) and the Remote::open_writable() methods (new in 0.9.7).
3750 * The C++ method QueryParser::parse_query() current throws "std:string"
3751   exceptions if there's a parse error.  Previously the bindings didn't catch
3752   these.  Now we catch them and handle them as if they were exceptions of
3753   type Xapian::QueryParserError (in anticipation of this changing in
3754   xapian-core).  Added testcases for this for PHP, Python, and C#.
3756 * configure: Note that SWIG is only useful for Xapian developers in --help
3757   output.
3759 * configure: If we failed to find any languages to build for, give a more
3760   helpful message.
3762 CSharp:
3764 * SmokeTest.cs: Fix warning about unused variable in OP_ELITE_SET check.
3766 Java:
3768 * configure: Fix check for jni.h in /usr/lib/jvm/java-gcj/include to actually
3769   work rather than using the cached failure of the first jni.h check.
3771 * SmokeTest.java: Fix check for value of Query.OP_ELITE_SET.
3773 * SmokeTest.java: Avoid gcj "set but not used" warning.
3775 PHP:
3777 * configure: Sanity check PHP_EXTENSION_DIR and PHP_INC.
3779 * smoketest4.php,smoketest5.php: Check the exception message given by the
3780   DocNotFoundError testcase.
3782 Python:
3784 * Drop support for Python 2.1.
3786 Xapian-bindings 0.9.7 (2006-10-10):
3788 Documentation:
3790 * NEWS: Fix the recent headings which said "Xapian-core" to say
3791   "Xapian-bindings".
3793 General:
3795 * Specify required automake version in the call to AM_INIT_AUTOMAKE in
3796   configure.ac.
3798 * If we're building with GCC 4.0 or higher, pass -fvisibility=hidden when
3799   compiling SWIG generated code which makes the compiled modules a few percent
3800   smaller and perhaps a little faster.
3802 * Wrap the newly implemented transaction API.
3804 * configure: Use "-fno-strict-aliasing" when compiling all the SWIG bindings
3805   (this option was supposed to be used to compile the Python bindings from
3806   0.9.3 onwards, but this wasn't actually working correctly).
3808 * Use CVS snapshot of SWIG to generate files (fixes bugs #83, #85).
3810 * In maintainer-mode, "make clean" now removes the SWIG generated files
3811   which would otherwise only be removed on "make maintainer-clean".
3813 CSharp:
3815 * Xapian::MatchDecider can now be subclassed in C#.
3817 * The value of OP_ELITE_SET was wrong in C# which caused an error if you tried
3818   to use it.  This has been fixed and a regression test added.
3820 * SmokeTest.cs: Added exception handling test.
3822 Java:
3824 * Correct two misuses of delete to delete[].  Fixes bug#78.
3826 * configure: We need to look for jni.h in /usr/lib/jvm/java-gcj/include on some
3827   Debian and Ubuntu boxes at least.
3829 PHP:
3831 * We now generate class wrappers for PHP5.
3833 * We now generate proxy classes for PHP4, which is an incompatible change
3834   from previous versions of xapian-bindings.  A perl script to upgrade
3835   your scripts is included.
3837 * smoketest.php:
3839   + Now that we're throwing PHP exceptions with PHP5 we need separate versions
3840     of the exception handling test for PHP4 and PHP5.  Fixes bug#76.
3842   + Rely on xapian.php to load the extension module for us.
3844   + Fix error messages to show PHP code, not Python code.
3846 * When running smoketest.php, pass the "-q" option to php, which suppresses
3847   HTTP header output for PHP < 4.3 and is ignored for compatibility by more
3848   recent versions of PHP.
3850 * configure: Fix typo - PHP_tried should be PHP_found.  This might have caused
3851   the PHP interpreter not to be found in some cases when it was actually
3852   available, but it's only used to run the smoketest not for building the
3853   bindings.
3855 Python:
3857 * configure: Fixed check for PYTHON_PATHSEP to use $PYTHON rather than python,
3858   and also report the check and its result to the user.
3860 * python/Makefile.am: xapian.pyc can't be generated until _xapian.la has been
3861   built, so add an explicit dependency so that this works reliably in parallel
3862   builds.  Fixes bug#77.
3864 * In examples and documentation, don't call the MatchDecider class/object
3865   "matcher", since we use the term "matcher" to mean something else in
3866   the library documentation.
3868 * smoketest.py:
3870   + Add test of exception handling.
3872   + Add test that MatchDecider can be subclassed successfully.
3874 * Wrap TermIterator::skip_to() so that it can be used from the TermIter
3875   pythonic iterator class.
3877 Ruby:
3879 * Xapian::MatchDecider can now be subclassed in Ruby.
3881 * configure: Look for ruby interpreter as "ruby1.8" since it's called that
3882   (with no "ruby" alias) on Ubuntu dapper at least.
3884 * simplesearch.rb: Lowercase terms before stemming.  "First ten" is inaccurate
3885   since we may have less than 10 matches, so say "1-<N>" instead.
3887 * simplematchdecider.rb: Implemented.
3889 Tcl:
3891 * Implement saner exception handling for Tcl and document it.
3893 * smoketest.tcl:
3895   + Add check that xapian::Query_OP_ELITE_SET has the right value.
3897   + Rework how the smoketest gets run to eliminate special code for using
3898     uninstalled bindings from smoketest.tcl itself.  This allows the smoketest
3899     to be run using installed bindings, and also makes it a better example
3900     program.
3902   + Add test for exception handling.
3904   + Send error messages to stderr.
3906   + Add comment about Tcl storing zero bytes as \xc0\x80.
3908 * simpleindex.tcl,simplesearch.tcl: Print $errorCode in the exception handler.
3910 * For SVN snapshots, remove any _svn6789 suffix from the Xapian version number
3911   used for the Tcl bindings.
3913 Xapian-bindings 0.9.6 (2006-05-15):
3915 Documentation:
3917 * INSTALL: Add section describing how to install without root access.
3919 General:
3921 * Updated to reflect the renaming of Xapian::xapian_version_string and
3922   companions to Xapian::version_string.
3924 * Wrap optional length parameter to Enquire::set_query().
3926 * In PHP, Python, and Tcl bindings, rename get_document_id to get_docid for
3927   consistency.  Keep get_document_id as an alias for now for backward
3928   compatibility.
3930 * Fixed ESet::empty() to return bool instead of Xapian::termcount (this was
3931   probably a largely harmless error).
3933 * Stop SWIG from adding exception handling wrappers to the calls which return
3934   version strings, since they can't throw exceptions.
3936 * xapian.i: Removed superfluous "const" from return type "docid" which is just
3937   a typedef for an unsigned integer type.
3939 * configure: Add some missing "checking ..." messages so the user has more idea
3940   what is going on.
3942 * Language specific util.i files can now define
3943   XAPIAN_TERMITERATOR_PAIR_OUTPUT_TYPEMAP and
3944   XAPIAN_MIXED_VECTOR_QUERY_INPUT_TYPEMAP to indicate which optional typemaps
3945   are provided for each language.  This avoids needing to keep this
3946   information in two different places.
3948 * xapian.i: Uncomment commented-out parameter names and fix duplicate
3949   parameter names (for the benefit of bindings which use the parameter names,
3950   like the OO PHP5 patch for SWIG I'm working on...)
3952 Portability:
3954 * configure: Fix warning flags passed for Intel C++ compiler.
3956 CSharp:
3958 * We now support building with Portable.NET.
3960 * Note that the passing of strings from C# into Xapian and back isn't currently
3961   zero byte safe.  If you try to handle string containing zero bytes, you'll
3962   find they get truncated at the zero byte.
3964 * C# bindings now build and pass tests when srcdir != builddir.
3966 * In configure.ac, the "#" in "C#" seems to sometimes confuse autoconf so
3967   always say "CSharp" instead.
3969 * Not all machines are set up to run compiled C# programs when invoked
3970   directly, so get configure to check if we can, and otherwise see if using
3971   mono or ilrun works.  If not, just skip the C# tests.
3973 * configure: If "mcs" isn't found, we now look for a CSharp compiler as "gmcs"
3974   (alternative name for "mcs"), "cscc" (Portable.NET), and then "csc"
3975   (Microsoft, but we check it isn't the unrelated Chicken csc program.)
3977 * Move the C# specific %rename list to csharp/util.i.
3979 * Store the strong name key in the key container so we reuse it for later
3980   builds.
3982 * Wrap the version functions as more sensible names and document them (and
3983   continue to provide the older undocumented names for now just in case anyone
3984   was using them.)
3986 * Set the version of XapianSharp.dll correctly when building a snapshot from
3987   SVN and set informational attributes (which e.g. MS Windows Explorer shows.)
3989 * SmokeTest.cs: Add test of version functions.
3991 Guile:
3993 * The Guile bindings don't work and aren't being actively worked on, so we're
3994   no longer including them in the distributed tarball to avoid disappointing
3995   users who notice a "guile" subdirectory.  It also makes the download smaller.
3997 Java:
3999 * Simplify (and improve portability of) run-java-test by using "libtool
4000   --mode=execute"'s -dlopen option.
4002 * Need to make sure "built" subdirectory exists or building from clean fails.
4004 * Fix "make check" to work when srcdir != builddir.
4006 PHP:
4008 * Using "php -c myphp.ini" still loads the system php.ini (at least for PHP
4009   4.3.10), so use "php -n" and then set the options we specifically want using
4010   "-d".
4012 * Fix the smoketest invocation to work better when srcdir != builddir.
4014 * Look for PHP interpreter first in prefix given by "php-config --prefix".
4016 * Fix SWIG_RuntimeError to be handled as an exception in PHP5.
4018 * simplesearch.php: MAX_PROB_TERM_LENGTH isn't used here so remove it.
4020 * smoketest.php:
4022   + Add test for version reporting functions
4024   + If a test fails, say which one to aid debugging.
4026   + Added simple test that zero-bytes are handled correctly when passing
4027     strings to and from Xapian.
4029 Python:
4031 * README: Note that Python bindings have been built with MSVC.
4033 * Install xapian.py and xapian.pyc as _DATA not _SCRIPTS because we don't want
4034   to make them executable (they don't have a #! line).
4036 * simplematchdecider.py: Rename confusingly-named "mymatcher" to
4037   "mymatchdecider".  Add description of what this example does.
4039 * simpleexpand.py: Don't define MAX_PROB_TERM_LENGTH as it isn't used.
4041 * smoketest.py: Added simple test that zero-bytes are handled when passing
4042   strings to and from Xapian.
4044 Ruby:
4046 * Added new Ruby bindings from Paul Legato.
4048 Tcl:
4050 * smoketest.tcl:
4052   + Add test for version reporting functions
4054   + If a test fails, say which one to aid debugging.
4056   + Added simple test that zero-bytes are handled correctly when passing
4057     strings to and from Xapian.
4059 Xapian-bindings 0.9.5 (2006-04-08):
4061 Documentation:
4063 * HACKING,README: Split off HACKING to contain information which is only
4064   relevant to those wishing to modify the bindings.
4066 General:
4068 * SWIG-based bindings are now built with SWIG 1.3.29.
4070 * configure: Report which languages we're building bindings for just before
4071   configure finishes.
4073 * xapian.i: Make the stub definitions for disabled backends static.
4075 * configure: Don't quote $PHP in AC_PATH_PROGS to avoid "checking for ... no"
4076   message.
4078 * xapian.i: Wrap new method Enquire::set_sort_by_relevance_then_value().
4080 Packaging:
4082 * RPMs: xapian-bindings.spec.in: Use "%{_libdir}" instead of "/usr/lib" for
4083   Python bindings to support 64 bit systems.
4085 * RPMs: Package the C# bindings.
4087 Portability:
4089 * java/run-java-test: Fix to work on platforms where LD_LIBRARY_PATH has a
4090   different name.
4092 * configure: Detect Intel's C++ compiler and set suitable warning flags to
4093   avoid noise from compiling generated code.
4095 CSharp:
4097 * Rename Database::GetDoccount() to Database::GetDocCount() for consistency.
4099 Guile:
4101 * configure: Disable --with-guile since Guile support doesn't currently work.
4103 Java:
4105 * Override deprecation warnings for Xapian methods/functions/etc.
4107 * SmokeTest.java: Write a helpful diagnostic to stderr if a check fails so we
4108   have some idea what went wrong!
4110 * Rework how we include headers to get hash_map to avoid compiler warnings
4111   since it's usually not in the std namespace nowadays.
4113 * Previously the "all" target also ran the "install" target, but this has
4114   proved very problematic, so change "make check" to use the uninstalled JNI
4115   glue library, and update the instructions to say that "make install" is now
4116   required.
4118 * Use JAVA_PATHSEP when specifying the classpath for compiling .java files to
4119   .class files.
4121 * README: Note that some platforms need "-pthread" or similar flags.
4123 * Add a new Query constructor wrapper which take an OP_xxx and an array of
4124   Query objects.
4126 * Compiling a .java file to a .class file now deletes the .jar file to ensure
4127   it gets updated.
4129 PHP:
4131 * php -n avoids reading any php.ini, but the compiled in default may be to
4132   enable the dubiously named "safe_mode" which prevents dl() being used so
4133   "make check" fails.  So instead provide a very simple php.ini which turns off
4134   safe_mode and makes sure enable_dl is on.
4136 * Fix handling of bool parameters when resolving overloaded methods and/or
4137   default arguments.  This fixes Enquire_sort_by_value() to work when the
4138   second argument is specified.  Added regression test for this case.
4140 * simpleindex.php: Lowercase terms before stemming.  Fixes bug#73.
4142 * Fix segmentation fault when PHP "Null" is passed where C++ wants an object
4143   passed by reference.  Fixes bug#74.
4145 * simpleindex.php: Flushing after every call to WritableDatabase_add_document
4146   isn't required and will kill performance, so stop doing it.  Fixes bug#75.
4148 Python:
4150 * Use the fairly new "swig -O" option for the "modern" python bindings as
4151   it generates a smaller glue library and runs faster.  Some of the features
4152   enabled also work on python 2.1, so enable these for the "olde" bindings.
4154 * configure: Catch the case where the user has python installed but not the
4155   module "distutils.sysconfig" and explain that they probably need to install a
4156   python-dev or python-devel package.
4158 * "make check" now works in VPATH builds.
4160 * smoketest.py: If a check fails, write a diagnostic message to stderr so we
4161   know which check it was!
4163 * smoketest.py: catch Exception objects and print them.
4165 * smoketest.py: Add feature tests for the various pythonic iterator
4166   wrappers
4168 * python/docs/bindings.html: Document the Pythonic iterators.
4170 * Fix TermIter not to try to read termfreqs or positions if they aren't
4171   meaningful for the current TermIter.
4173 Xapian-bindings 0.9.4 (2006-02-21):
4175 Documentation:
4177 * COPYING: Updated FSF address.
4179 General:
4181 * Wrap Stopper::get_description().
4183 * Wrap xapian_version_string() and related functions.
4185 Portability:
4187 * If we're overriding MACOSX_DEPLOYMENT_TARGET then override it for commands
4188   run from "make" too.
4190 PHP:
4192 * Fix so that generated code compiles with ZTS-enabled PHP (which is the
4193   default on Windows).
4195 Python:
4197 * smoketest.py: Test wrapping of xapian_version_string() and related functions.
4199 Xapian-bindings 0.9.3 (2006-02-16):
4201 Documentation:
4203 * README: Updated and expanded (now covers supported platforms, and lists
4204   criteria which bindings for an additional language need to fulfil before
4205   we're likely to accept them).
4207 * INSTALL: Updated and improved.
4209 * TODO: Move C#-specific TODO to top level so we can track to-do items for
4210   all languages.
4212 General:
4214 * configure: Change how the user selects which bindings to build.  If no
4215   --with* arguments are passed, then we default to building bindings we detect
4216   the required tools for (as before).  But instead of requiring the user to
4217   deselect all bindings they don't actually want, we now let them select the
4218   bindings they do want.  So "./configure --with-python" will only build the
4219   python bindings (and will fail if the required tools aren't installed).
4221 * Every wrapped method contains exception handling code.  The bulk of this
4222   is now factored out into a single helper function, which cuts the compile
4223   time by around a factor of 3 and halves the size of the stripped library
4224   (figures are for Tcl on x86_64).
4226 * configure: Rework how XAPIAN_CXXFLAGS is passed through so that the user can
4227   override CXXFLAGS in the make invocation like so: make CXXFLAGS=-g
4229 * configure: Bump required SWIG version to 1.3.28 and drop the special
4230   requirement for 1.3.22 for PHP (hurrah!)  Note that you don't need
4231   SWIG to install the bindings - SWIG is run by the Xapian developers
4232   so these updated requirements are only relevant if you want to modify
4233   the bindings.
4235 * Eliminate separate Makefile in each examples subdirectory, which makes the
4236   build system simpler, smaller, and a little faster.
4238 * xapian.i: Include default constructors for all classes so that SWIG knows it
4239   doesn't have to use SwigValueWrapper for them, which makes the bindings code
4240   a bit smaller and faster.  Also stop SWIG using SwigValueWrapper for
4241   std::pair<...>.
4243 * configure: Document special environmental variables which configure
4244   recognises.  Enhance handling of environmental variables so you can
4245   e.g. './configure PYTHON=python23' (previously you had to give a full
4246   path in such environmental variables or they would be ignored.
4248 Packaging:
4250 * RPM spec file:
4252   + Automatically detect the python version.
4254   + Rename "php4" references to "php".
4256   + Automatically detect the PHP extension directory.
4258   + Relax Tcl requirement to >= 8.1, since that's what we actually require.
4260   + Add support for "--without php" and --without tcl8" options to rpmbuild.
4262 Portability:
4264 * configure: On Mac OS X, ensure MACOSX_DEPLOYMENT_TARGET is set to at least
4265   10.3.  This is required to link the bindings, and it doesn't seem to be
4266   possible to link them on 10.1 or 10.2 anyway.
4268 * configure: Add -lstdc++ to XAPIAN_LIBS if we're using GCC.  OpenBSD needs it
4269   to be explicitly specified and libtool correctly handles platforms where it
4270   would have been implicitly linked with anyway.
4272 * Try to enable PHP bindings to build out of the box on cygwin (needs testing).
4274 * configure: Add missing ";;" on the last alternative in some case statements.
4276 * Only pass -no-undefined on platforms where it is required in order to link a
4277   shared library at all (it causes problems on Mac OS X in some cases).
4279 CSharp:
4281 * This release includes a lot of improvements for the C# bindings.  They're
4282   now pretty much on a par with the other language bindings.
4284 * Added documentation and examples.
4286 * Method and function names are now renamed to match C# conventions
4287   (e.g. from get_description() to GetDescription()).  This is obviously an
4288   incompatible change, but the C# bindings haven't been suitable for real world
4289   use prior to this release.
4291 * Optional parameters are now wrapped so no longer need be specified
4292   explicitly.
4294 * Overload ++ and -- for iterators.
4296 * Overload == and != for iterators.  Now comparisons with the end iterator
4297   work as expected, and SmokeTest passes.
4299 * SmokeTest now reports exceptions verbosely.
4301 * Xapian::InMemory::open() is now wrapped as Xapian.InMemory.Open(), and
4302   similarly for other database factory functions.
4304 * Heed compatibility warnings from mcs and use different forms for
4305   command-line switches to the C# compiler (presumably for compatibility with
4306   Microsoft's compiler, though the warnings don't actually say that
4307   explicitly).
4309 Guile:
4311 * Rewrote guile/util.i.  The old version caused SWIG warnings and wasn't
4312   zero-byte safe.  The guile bindings are still a long way from actually
4313   working though.
4315 Java:
4317 * Wrap optional second parameter (query length) to Enquire::set_query().
4319 * configure now probes for the Java path separator, which we then use to
4320   separate entries in the java -classpath command line option so we can
4321   build on platforms where it isn't ":".
4323 * SmokeTest.java: Expand to test more features.
4325 * java/README:
4327   + Note that the bindings work with the Eclipse javac and GIJ 4.0.1.
4329   + Add note about how wrapped methods are named.
4331 * Query.java: OP_* code 9 no longer exists, so add it to those rejected by the
4332   validity check.
4334 * Query.java: Comment out unused code.
4336 * Fixed memory leak in Query-from-array-of-strings constructor.
4338 * Eliminate the "_errormap" hashmap - we don't need to use RTTI here, since
4339   Xapian::Error subclasses can tell you their typename directly (using
4340   get_type()).
4342 PHP:
4344 * Some problems with overloaded methods in PHP have been fixed by a major
4345   overhaul of SWIG's PHP support.  So we no longer rename such methods
4346   for PHP.  This is an incompatible change, but it's easy to update your
4347   PHP scripts (just change new_Query_from_term_pair -> new_Query, etc).
4349 * Previously the documentation and simpleindex.php suggested that you
4350   should call delete_CLASS().  This was incorrect and resulted in a
4351   double-free() in some cases, so we've fixed the documentation and
4352   examples and eliminated the delete_CLASS() wrappers.  This is another
4353   incompatible change, but again easy to update for.
4355 * We now support PHP5 as well as PHP4, so the configure test now looks
4356   for either and all references to "PHP4" or "php4" have been adjusted.
4358 * PHP5 supports exceptions, so throw exceptions under PHP5.  For PHP4
4359   we now handle DocNotFoundError and FeatureUnavailableError by issuing a
4360   warning and making the method return "Null".  This isn't ideal, but it's
4361   the best we can easily do without proper exceptions.
4363 * For the smoketest, instead of using "$(PHP) -c $(srcdir)" and having an
4364   empty php.ini in srcdir (which we were failing to distribute anyway), use
4365   "$(PHP) -n" which tells PHP not to use any php.ini file.
4367 * Update PHP documentation to include new features.
4369 * Redo Xapian section in phpinfo() to look more like most other modules.
4371 * You can now construct a Query object from an array of strings or Query
4372   objects (or even a mixture).
4374 * PHP examples now give a more useful error message if a database can't be
4375   opened.
4377 * smoketest.php: Expanded the tests performed, including feature tests for
4378   the new Query-from-list constuctor.
4380 * simplesearch.php: Use newly wrapped Query-from-list constructor.
4382 * Use std::string::data() instead of c_str() as it may be more efficient for
4383   some STL implementations.
4385 * Enquire::get_matching_terms() now generates the PHP list directly from the
4386   TermIterator rather than constructing a temporary C++ std::list, which is
4387   faster and requires less temporary memory.
4389 Python:
4391 * The Python constructor xapian.Query(OP, LIST_OF_STRINGS [, PARAM]) works
4392   once again (it has been broken since 0.9.0).  Added a regression test to
4393   help keep this working.
4395 * Enhance the above constructor to accept any Python sequence (e.g. a tuple
4396   instead of a list).  Also the sequence can contain xapian.Query objects or
4397   strings or a mixture.  Documented these enhancements.
4399 * smoketest.py: Expanded the tests performed.
4401 * Convert C++ strings to python ones in a zero-byte clean way.
4403 * Added more error checking of the results of calls into the python
4404   interpreter.
4406 * If using GCC, compile the python bindings with -fno-strict-aliasing (python
4407   itself is compiled with this option to avoid problems and it appears we ought
4408   to use it too to avoid the risk of hitting the same problems, although I'm
4409   not aware of anyone actually encountering such problems).
4411 * When making xapian.pyc, "import _xapian;" before we "import xapian;" to
4412   avoid creating a broken xapian.pyc is the shared library can't be loaded for
4413   some reason.
4415 * Enquire::get_matching_terms() now generates the Python list directly from the
4416   TermIterator rather than constructing a temporary C++ std::list, which is
4417   faster and requires less temporary memory.
4419 Tcl:
4421 * Terms with a leading underscore now work (thanks to changes in SWIG).
4423 * Implement custom typemaps for Tcl, so that you can now construct a Query from
4424   a list of Query objects and/or strings, and Enquire::get_matching_terms is
4425   now wrapped.
4427 * simplesearch.tcl: Use the new Query from list constructor.
4429 * simplesearch.tcl: Fix to lowercase and stem query terms.
4431 * simpleindex.tcl: Tweak regex to not tokenise "foo--bar" as "foo-" and "bar".
4433 * simpleindex.tcl,simplesearch.tcl: Need explicit "xapian::" on constants.
4435 Xapian-bindings 0.9.2 (2005-07-15):
4437 General:
4439 * Added wrappers for new optional flags argument to QueryParser::parse_query().
4441 CSharp:
4443 * Enhance configure to check that "mcs" is actually GNU Mono mcs and not
4444   another tool with the same name.
4446 Java:
4448 * Include SmokeTest.java in the distribution so "make check" works.
4450 * Added success report for Sun java 1.4.1_01a.
4452 Python:
4454 * When converting a python list to vector<string> we know the number of elements
4455   so reserve that number in the vector.
4457 Xapian-bindings 0.9.1 (2005-06-06):
4459 General:
4461 * Releases are now created using libtool 1.5.18 and automake 1.9.5.
4463 Tcl:
4465 * Updated documentation to include information from Michael Schlenker about how
4466   to delete a database object such that the destructor gets called.
4468 Xapian-bindings 0.9.0 (2005-05-13):
4470 General:
4472 * Updated SWIG-based bindings to latest Xapian API
4474 * Improve support for building the bindings on MS Windows:
4476   + Provide stub versions of any backend functions which are disabled in the
4477     library we're wrapping to avoid a link failure on MS Windows (where the
4478     remote backend is automatically disabled).  These stubs just throw
4479     Xapian::FeatureUnavailableError.
4481   + Add -no-undefined to *_la_LDFLAGS.
4483   + Use $(PATH_SEPARATOR) or Python's os.pathsep instead of ':' where
4484     appropriate.
4486   + For python, paths for finding headers and installing libraries are now
4487     handled so they work on MS Windows; an extra static library needs to be
4488     linked in too.
4490 * Wrap the Muscat36 Database factory functions (easy to do now we have stubs
4491   for disabled backends).
4493 * Don't wrap MSet::max_size() as it's there for STL compatibility rather than
4494   being useful functionality.
4496 * configure: Fix all SWIG warnings and pass -Werror to SWIG so any which get
4497   introduced in future get fixed.
4499 * configure: Fix version test to allow for _svn6789 suffix which SVN snapshots
4500   have.
4502 * Generate SWIG bindings with SWIG 1.3.24 (except for PHP which we still use
4503   1.3.22 for as more recent versions don't work with methods with optional
4504   arguments - the arguments become non-optional!)
4506 Guile:
4508 * configure: Disable guile by default, as it needs more work.
4510 Java:
4512 * Updated to compile against 0.9.0 API.
4514 * Added missing make rule to build SmokeTestWrap.class to "make check" works.
4516 * Wrap optional parameters to Query(term) constructor.
4518 PHP4:
4520 * For PHP4, rename default Database constructor to Database_empty
4521   instead of suppressing the much more useful Database(const string &path)
4522   constructor.
4524 * Use a blank config file when running PHP4 tests to avoid problems
4525   when the bindings are already installed as an extension which is
4526   loaded automatically in the default config.
4528 * configure.ac: If configure can't find the PHP interpreter (as php4 or php),
4529   it probably just means it's not in PATH.  We only need it for running tests,
4530   so substitute a trivial shell script which just exits with code 77 so PHP
4531   tests are skipped (previously we substituted "missing" which caused the tests
4532   to fail).
4534 Python:
4536 * Added Python-style iterators ESetIter, TermIter, PostingIter, PositionIter,
4537   and ValueIter.
4539 * configure: If python is found, also check that Python.h exists (it may not be
4540   if the python-dev package (or similar) isn't installed).
4542 Xapian-bindings 0.8.5.1 (2005-02-23):
4544 General:
4546 * configure: Run compiler feature tests using the C++ compiler, not the C
4547   compiler.
4549 * Allow bindings version to have an extra "patchlevel", yet still match with
4550   corresponding xapian-core version (e.g. 0.8.5.1 and 0.8.5);
4552 Java:
4554 * Added a missing .java source file and removed several unused ones.
4556 * Fixed several glitches in the java bindings automake build system.
4558 * Use "-Wno-unused" when compiling JNI C++ code to ignore harmless
4559   warnings in generated code (we were carefully passing "-Wunused"
4560   which is the opposite of what is needed!)
4562 * Fixed a couple of warnings from GCJ.
4564 * Wrapped a few missing methods added since Eric created the bindings.  There
4565   are still some missing methods - there's now a (probably incomplete) list in
4566   java/README.
4568 * Added various useful bits of information to java/README.
4570 * Tweaked SimpleSearch.java to be more like the C++ version.
4572 PHP4:
4574 * 0.8.5 was generated with SWIG 1.3.24, but PHP support is broken there so
4575   we now generate the PHP bindings with SWIG 1.3.22 and everything else with
4576   a more recent version.
4578 * configure: Check for "php" as a program name as well as "php4", and
4579   fall-back to missing so the error message from "make check" is better.
4581 Xapian-bindings 0.8.5 (2004-12-23):
4583 General:
4585 * INSTALL: Added non-generic installation instructions.
4587 Python:
4589 * Fixed bytecode compilation of xapian.py.  xapian.pyc was being generated in
4590   the same directory as xapian.py, but Makefile.am was looking in current
4591   directory when installing it.  Additionally, VPATH builds were broken.
4592   These problems were introduced by changes in 0.8.4.
4594 Xapian-bindings 0.8.4 (2004-12-08):
4596 General:
4598 * README: Now clearly says which languages we currently support, which people
4599   are working on, etc.
4601 * Instead of requiring the user to have a really recent SWIG installed, ship
4602   the files SWIG generates.  Disable all the SWIG rules unless configure is run
4603   with --enable-maintainer-mode to make sure they aren't triggered accidentally
4604   (e.g. by make with dodgy VPATH).
4606 * configure: Require SWIG 1.3.22 or higher (but note that SWIG is no longer
4607   needed if you just want to install the bindings).
4609 * Wrap the new Database and WritableDatabase constructors which replace
4610   Auto::open().
4612 * It turns out that we do need to wrap MSet::MSet() (wrapping removed in 0.8.2)
4613   (for example, simpleexpand.py needs it).
4615 * In the Query constructor which takes a vector of terms, only call set_window
4616   if window is non-zero.  Otherwise things go wrong if we're passed an empty
4617   vector.
4619 * Second argument to Document::add_posting() isn't optional, but xapian.i
4620   indicated that it was.
4622 * xapian.i: Added wrappers for Xapian::Weight and standard subclasses.
4623   Deriving your own weight class in the scripting language isn't currently
4624   supported.
4626 * xapian.i: %name is deprecated, so use %rename instead.  This also works
4627   around a bug in SWIG 1.3.23.
4629 * configure: Removed pointless probe for a C compiler - everything we compile
4630   is C++.
4632 * configure: Reinstated the check that the bindings version matches the version
4633   of the xapian library.  It was added in 0.8.2, but accidentally removed in
4634   0.8.3.
4636 * Use newly added option `xapian-config --swigflags` which (a) avoids always
4637   passing -I/usr/include which could cause problems if we're using a Xapian
4638   install not in /usr and there's another one in /usr and (b) avoids problems
4639   if `xapian-config --cxxflags` contains flags other than -I<something>.
4641 CSharp:
4643 * Richard Boulton has put together bindings for C#.  These build successfully
4644   with the Mono tools, but the smoketest currently fails.  Unclear if the
4645   problem is the bindings or the smoketest code.
4647 Guile:
4649 * The guile bindings now build successfully, so we've enabled the guile
4650   detection machinery in configure.  They're untested though (we don't
4651   know guile!) so success or failure reports are encouraged!
4653 PHP4:
4655 * Mention the example scripts near the start of the documentation, not right at
4656   the end.
4658 * Remove documentation explicitly saying how we wrap Xapian::QueryParser and
4659   Xapian::Stem since we wrap them exactly as we wrap everything else we don't
4660   mention!
4662 Python:
4664 * Make overloaded Query(Query::op, vector<string>*, termpos) constructor
4665   work in Python.
4667 * Changed examples to use the newly wrapped Query from list of terms ctor.
4669 * Mention the example scripts near the start of the documentation, not right at
4670   the end.
4672 * python/Makefile.am: Added xapian_wrap.h as a target for the rule which runs
4673   SWIG.
4675 * Remove documentation explicitly saying how we wrap Xapian::QueryParser and
4676   Xapian::Stem since we wrap them exactly as we wrap everything else we don't
4677   mention!
4679 * Mention simpleexpand example in documentation.
4681 * Examples now report messages for Xapian exceptions.
4683 * Removed MAX_PROB_TERM_LENGTH from example scripts which don't use it.
4685 * Make the example MatchDecider exclude documents matching a value, rather than
4686   a term.  The latter is a very inefficient way to do what AND_NOT does, and we
4687   don't want examples to mislead like that.
4689 * python/docs/bindings.html: Note that you can construct a query
4690   from a list of terms, even if you can't from a list of queries.
4691   Add HTML links to the examples.
4693 * simpleindex.py: Trim spaces from the start as well as from the end of each
4694   line.  Simplify the loop slightly.
4696 Tcl:
4698 * Wrap in a tcl8 namespace "Xapian".
4700 * Added a smoketest.
4702 * Translated simpleindex and simplesearch into Tcl.
4704 * Set the Tcl package version.
4706 * Create pkgIndex.tcl so the package can be loaded in the usual Tcl way.
4708 * Install in "xapian<VERSION>" directory in the conventional Tcl way.
4710 * Added documentation for tcl8 bindings.
4712 * Use the TCL_STUBS mechanism so that compiled extensions are portable between
4713   different versions of Tcl.  This needs Tcl 8.1, so bump the required Tcl
4714   version (was 8.0).
4716 * configure.ac: Noted that the bindings can easily be compiled for use with
4717   Tcl 8.0, in case anybody needs that for some reason.
4719 * Don't wrap the factory functions which return a quartz WritableDatabase as
4720   the destructor never gets called so changes aren't flushed and the lock file
4721   isn't removed.
4723 Xapian-bindings 0.8.3 (2004-09-20):
4725 General:
4727 * Fixed mismatching versions of libtool used to produce configure and
4728   ltmain.sh.  The obvious symptom was ".so" missing from the shared object
4729   names.
4731 * RPM spec file contributed by Fabrice Colin.  Currently this packages Python,
4732   PHP4, and Tcl bindings.
4734 Java:
4736 * Pass -classpath to javac to fix build problems.
4738 * Make sure errors subdirectory is built before we try to build the jar file.
4740 * Fixed "make install" to not give libtool error.
4742 PHP4:
4744 * Include PHP4 documentation and exmples in the tarball.
4746 * Reverted "Use special SWIG PHP ldflags when linking the PHP glue library."
4747   change from 0.8.2 - it turns out we only need to pass these flags if we use
4748   swig's -noruntime option (which we don't do).
4750 Python:
4752 * Use swig's -modern switch for Python 2.2 and up - it gives cleaner, leaner,
4753   faster Python wrapper code.
4755 Tcl:
4757 * Don't install xapian.la.
4759 * Improved configure check for tcl.h to work with Fedora Core 2.
4761 Xapian-bindings 0.8.2 (2004-09-13):
4763 General:
4765 * Added wrappers for recently added methods: ESet::back() and
4766   Database::get_lastdocid(), and wrap the new optional third parameter
4767   to Enquire::set_sorting().
4769 * No longer wrap MSet::MSet() - it's not of use in scripting languages.
4771 * Wrap operator-- as prev() for MSetIterator and ESetIterator.
4773 * Wrap Quartz, InMemory, and Remote database factory functions as
4774   quartz_open(), inmemory_open(), and remote_open().
4776 * Added missing wrappers for static Stem::get_available_languages() and
4777   Stem::get_description().
4779 * Wrap renamed method Query::empty() (was Query::is_empty()).
4781 * Remove renaming of other empty() methods to is_empty() (but keep is_empty()
4782   as an alias for now).
4784 * Require autoconf 2.59 and automake 1.8.5.
4786 * configure: Added check that the bindings version matches the version of
4787   the xapian library.
4789 * configure: Check if we're using GCC and only pass GCC specific warning
4790   control options if we are.
4792 * configure: When running with GCC, also pass -Wno-uninitialized so the
4793   SWIG glue builds without warnings.
4795 * README: Updated list of languages which SWIG supports.
4797 PHP4:
4799 * Document that the 2 argument form of Xapian::Auto::open() for opening a
4800   writable database is wrapped as open_writable() (bug #32).
4802 * Include Xapian version in output from phpinfo().
4804 * Build the SWIG glue library like we build the others rather than using
4805   SWIG's -phpfull option.  This avoids problems with newer automake versions
4806   and means we can build against an uninstalled xapian library.
4808 * Corrected documentation to refer to Xapian::DB_* not Xapian::Auto::DB_*.
4809   Fixed documentation of how Xapian::Query::OP_* are wrapped.
4811 * Use special SWIG PHP ldflags when linking the PHP glue library.
4813 * simplesearch.py now works with multi-term queries.
4815 * Added documentation on how to install the PHP4 bindings.
4817 * Added a simple testcase to at least ensure the PHP4 bindings can be
4818   initialised and some simple operations work.
4820 Python:
4822 * configure: Now checks for Python >= 2.1 which we need for __cmp__ and __eq__.
4824 * Don't install _xapian.la and _xapian.a.
4826 * Byte compile xapian.py to xapian.pyc and install it.
4828 * Suppress SWIG warning about MatchDecider::operator() director discarding
4829   const.
4831 * "make clean" no longer leaves "xapian_wrap.h" behind.
4833 * Added a simple testcase to at least ensure the python bindings can be
4834   initialised and some simple operations work.
4836 Tcl8:
4838 * configure: Disable building tcl8 bindings if the headers are missing
4839   (probably because the tcl8.X-dev package isn't installed).
4841 Xapian-bindings 0.8.1 (2004-06-30):
4843 General:
4845 * configure: Require SWIG 1.3.20 or higher (previously was 1.3.14).
4847 * Add "-I/usr/include" to the swig line.  This is needed when xapian is
4848   installed with a prefix of /usr, since "xapian-config --cxxflags" carefully
4849   doesn't emit -I/usr/include in this situation (because it causes problems
4850   with some GCC versions).
4852 * Fixed the %exception handler to cover all the exceptions Xapian can throw,
4853   not just a subset.
4855 Java:
4857 * Removed wrappers for unused error classes which have been pruned from C++.
4859 * Make finalize() methods of Database and WritableDatabase public so they can
4860   be called from by the user.
4862 * Document Document.add_term_nopos() as deprecated.
4864 PHP4:
4866 * Make sure that PHP bindings build a module which exports get_module() so PHP
4867   is able to load it.
4869 * Configure now checks that phpize can actually be run, rather than just that
4870   it's executable (test -x isn't portable anyhow).
4872 * Added basic documentation and examples to PHP4 bindings.
4874 * Rename overloaded methods and constructors.
4876 * Add simple access to the prefixes map in QueryParser.
4878 * Correct simpleindex ports to never generate empty termnames.
4880 Python:
4882 * configure: Use $PYTHON instead of python when running python to determine
4883   library and include paths and version number.
4885 * Actually ship python examples and documentation.
4887 Xapian-bindings 0.8.0 (2004-04-20):
4889 * README: Started collecting information on supporting Xapian from even
4890   more languages.
4892 * Added configure tests to enable bindings only where the necessary tools
4893   are installed and have a supported version.  ./configure --without-LANGUAGE
4894   allows particular languages to be forcibly disabled.
4896 * Added Xapian::Document::add_term() - the new name for add_term_nopos().
4898 * A couple of Xapian::Query constructors weren't being wrapped - fixed.
4900 * Added Eric B. Ridge's JNI bindings for Java.  The JNI bindings themselves
4901   have been well tested, but integration with the xapian-bindings configure
4902   system hasn't been tested at all - please alert us to any problems.
4904 * Xapian can now be used from TCL.
4906 * Python: MSet now provides a Python iterator.
4908 * Python: OMMSET_* and OMESET_* renamed to MSET_* and ESET_*.
4910 * Python: enable directors for MatchDecider, to allow subclassing in Python.
4912 * Python: Added basic documentation, and some examples.