Reimplement Xapian::MSet
[xapian.git] / xapian-bindings / NEWS
blobb7a72b9bf4c62719c8f307b508a84928f748c199
1 Xapian-bindings 1.4.4 (2017-04-19):
3 General:
5 * Update tests for xapian-core changes to avoid unnecessary "0 *" in query
6   descriptions in certain cases.
8 Packaging:
10 * Ship java.i in tarball.
12 Java:
14 * Handle object serialisations and document values as Java byte[].  These will
15   usually contain binary data, so Java String doesn't work well and byte[] is a
16   much better fit.
18 * Correct various errors in java examples and documentation on how to run them.
20 * Fix java examples not to abuse doc values as fields - use the document data
21   instead.
23 * "make clean" now removes additional class files.
25 PHP7:
27 * Update version of SWIG required to >= 3.0.12 so that the code generated
28   for PHP7 no longer results in a segmentation fault on module unload with
29   PHP 7.1.  Fixes #748, reported by Victor Sakovich.
31 Python:
33 * Fix QueryParser methods add_boolean_prefix() and add_prefix() to accept a
34   string for the `grouping` parameter.  Reported by Jameson Graef Rollins in
35   https://bugs.debian.org/849722
37 * Fix configure --with-python to fail if sphinx isn't found.  Patch from
38   Patricio Paez.  Fixes #749.
40 Python3:
42 * Fix QueryParser methods add_boolean_prefix() and add_prefix() to accept a
43   string for the `grouping` parameter.  Reported by Jameson Graef Rollins in
44   https://bugs.debian.org/849722
46 Xapian-bindings 1.4.3 (2017-01-25):
48 Python:
50 * Remove compatibility code for Python < 2.5 - 1.4.x requires Python >= 2.6.
52 * Avoid unnecessary pointer indirection in XapianSWIG_anystring() helper
53   function, which should be a little more efficient and makes the Python 2
54   code more closely match the Python 3 code.
56 Ruby:
58 * "make clean" should only remove docs/xapian.rb if configure option
59   --enable-documentation was used to enable all rules to rebuild documentation.
60   Reported by Samuel Williams on xapian-discuss.
62 * Fix make rule for running rdoc for the cases where srcdir != builddir.
64 * Use 'test a = b' rather than 'test a == b' - the former is portable, the
65   latter a bashism.  In many cases the autotools will set SHELL = /bin/bash in
66   the makefiles, but if it doesn't and /bin/sh isn't bash, then this will
67   cause "make install" and "make uninstall" to fail for the Ruby bindings.
69 Xapian-bindings 1.4.2 (2016-12-26):
71 General:
73 * configure: Fail with clear error with xapian-core < 1.4.0.
75 * Work around OS X "System Integrity Protection".  We can't address the problem
76   of being unable to run tests against an uninstalled tree when the interpreter
77   is in a system directory (you have to "make install" in xapian-core for that
78   case), but we can at least make this work for interpreters which aren't in
79   system directories.
81 Java:
83 * Disable parallel make for java subdirectory as it causes random build
84   failures.  Reported by Lucas Nussbaum in https://bugs.debian.org/848733
86 * Disable automatic use of -Xcheck:jni for now as it seems to report false
87   positives with OpenJDK 8 and 9.
89 PHP:
91 * Generates smaller PHP wrappers by only emitting each unique arginfo
92   combination once (~6% saving in stripped extension module size for
93   PHP7 on x86_64 Linux).
95 * Fix to work again with a version of PHP5 built with ZTS enabled (which is the
96   default on Microsoft Windows).
98 * Add support for PHP7.
100 * Drop workaround for PHP4 from test code.
102 Python:
104 * Handle sphinx-build being a shell script wrapper by invoking sphinx.main()
105   from a command line Python code snippet.  Reported by Alex Dunn in
106   https://github.com/xapian/xapian/pull/126 and solved with help from James
107   Aylett.
109 * Hold python reference to set RangeProcessor objects - until #714 is fixed we
110   need to keep such a reference (as we already do for ValueRangeProcessor and
111   several other classes).
113 Python3:
115 * Handle sphinx-build being a shell script wrapper by invoking sphinx.main()
116   from a command line Python code snippet.  Reported by Alex Dunn in
117   https://github.com/xapian/xapian/pull/126 and solved with help from James
118   Aylett.
120 * Hold python reference to set RangeProcessor objects - until #714 is fixed we
121   need to keep such a reference (as we already do for ValueRangeProcessor and
122   several other classes).
124 Ruby:
126 * Use more conventional Ruby variable names in the examples (Ruby convention
127   uses underscores not camelcase) and fix comma/space transposition in a couple
128   of places.
130 Xapian-bindings 1.4.1 (2016-10-21):
132 Documentation:
134 * Fix --disable-documentation - in maintainer-mode, we still tried to make
135   docs/index.html for most of the bindings, which failed because the rule to do
136   so was disabled.
138 General:
140 * Update for additions to C++ API.
142 * When a backend is disabled in the xapian-core we're building against, we
143   have a stub version of any factory functions so the bindings still have
144   something to wrap.  Update these for 1.4:
145   + Disable stub for InMemory::open() when
146     XAPIAN_BINDINGS_SKIP_DEPRECATED_DB_FACTORIES is defined (Perl, Python3).
147   + Add new optional flags parameter to both overloaded forms of
148     Remote::open_writable().
150 Portability:
152 * Drop compiler options that are no longer useful:
153   + -fshow-column is the default in all GCC versions we now support
154     (checked as GCC 4.6).
155   + -Wno-long-long is no longer necessary now that we require C++11 where
156     "long long" is a standard type.
158 Java:
160 * Use a cleaner technique to insert the Java code to load JNI library into the
161   generated wrapper - we now use "%pragma(java) jniclasscode" instead of using
162   Perl to post-process the generated wrapper.  Suggested by James Aylett.
164 * Run Java tests with -Xcheck:jni if supported, which should help catch any
165   any bugs in the JNI code.
167 * Fix configure to find jni_md.h under Cygwin.  There doesn't seem to be an way
168   to automatically determine the machine-dependent JNI include path, so add
169   another case to use "win32" on Cygwin.  Reported by John Bankert on
170   xapian-discuss.
172 * Add more special cases to find jni_md.h on Cygwin, OS X, *BSD, AIX.
173   There doesn't seem to be an explicit list of these directories anywhere, but
174   grepping the OpenJDK 8 source code finds additional values "darwin" and
175   "aix", *BSD seems to use "bsd", and Cygwin uses "win32" (reported by John
176   Bankert on xapian-discuss).
178 * Generate xapian.jar rather than xapian_jni.jar - the fact that JNI is
179   involved is really just an implementation detail.
181 * SmokeTest.java: Add simple test of subclassing FieldProcessor.
183 Perl:
185 * Merge Perl POD doc improvements from Search::Xapian.  The most notable
186   improvement is a number of methods previously lacking docs now have them.
188 * Fix typo in POD docs for Perl bindings ("outputing" -> "outputting").
189   Reported by knowledgejunkie in #730.
191 Python:
193 * Fix repr() to not return None.  Reported by Stuart Prescott on IRC.
195 * Fix Python2 bindings to work out of the box.  SWIG changed the code it
196   generates for importing the compiled module in a recent version, and
197   the newer code no longer works with the wrapper renamed to
198   xapian/__init__.py.  There's currently no way to configure SWIG to produce
199   what we need so for now we run a "fixup" script over the generated wrapper
200   which replaces the complex import code with a single statement which does
201   what we want.  It also strips out various unneeded code, mostly to do with
202   handling Python 3.x (which we don't need since we have an entirely
203   separate set of bindings for that).  Reported by James Aylett in #731.
204   The way we were importing the bindings to generate the .pyc and .pyo
205   files was masking this problem, so rework that as suggested by James.
207 * Make sphinx docs dependent on SWIG wrapper.  Without this dependency,
208   parallel builds (make -j) may attempt to schedule the sphinx doc build before
209   the relevant wrapper has been compiled and moved into position.  This won't
210   result in a build failure, but will silently omit API docs that sphinx
211   would otherwise include.  Patch from James Aylett.
213 * doxy2swig: Specify encoding when reading doxygen's XML output so UTF-8 in
214   doxygen comments is handled.  Patch from Vivek Pal.
216 * Specify Python2 wrapper encoding is UTF-8.  This is needed when we pick up
217   doxygen comments from the C++ API which contain UTF-8.  For Python3, the
218   default source encoding is UTF-8, so we don't need the equivalent change
219   there.
221 Python3:
223 * Fix repr() to not return None.  Reported by Stuart Prescott on IRC.
225 * Fix Python3 bindings to work out of the box.  SWIG changed the code it
226   generates for importing the compiled module in a recent version, and
227   the newer code no longer works with the wrapper renamed to
228   xapian/__init__.py.  There's currently no way to configure SWIG to produce
229   what we need so for now we run a "fixup" script over the generated wrapper
230   which replaces the complex import code with a single statement which does
231   what we want.  It also strips out various unneeded code, mostly to do with
232   handling Python 2.x (which we don't need since we have an entirely
233   separate set of bindings for that).  Reported by James Aylett in #731.
234   The way we were importing the bindings to generate the .pyc and .pyo
235   files was masking this problem, so rework that as suggested by James.
237 * Make sphinx docs dependent on SWIG wrapper.  Without this dependency,
238   parallel builds (make -j) may attempt to schedule the sphinx doc build before
239   the relevant wrapper has been compiled and moved into position.  This won't
240   result in a build failure, but will silently omit API docs that sphinx
241   would otherwise include.  Patch from James Aylett.
243 * Fix memory leak converting string from Python to C++.
244   XapianSWIG_anystring_as_ptr() was failing to flag the returned value as
245   allocated, so it wasn't being deleted.  Reported by Sean Robinson in #729.
247 Xapian-bindings 1.4.0 (2016-06-24):
249 Documentation:
251 * Mark SWIG-generated Java and Perl bindings as "experimental" until we've
252   had a chance to sort out any remaining changes we want to make.
254 Xapian-bindings 1.3.7 (2016-06-01):
256 Documentation:
258 * Remove long out-dated reference to tinderbox.
260 General:
262 * Use SWIG 3.0.9 to generate the bindings.  There's nothing very important to
263   us in the changes since the git snapshot we were using - mostly this means
264   we're using a released version, which seems preferable.
266 Tcl:
268 * Fix segfault in tcl bindings "make check".  The location of tclConfig.sh
269   wasn't being found, so libtclstub wasn't being linked to, which is required
270   with Tcl >= 8.6.
272 Xapian-bindings 1.3.6 (2016-05-09):
274 General:
276 * Update for changes to the C++ API.
278 * Use WritableDatabase::commit() instead of flush() in testcases, as the
279   latter is now formally deprecated.
281 Java:
283 * Fix syntax error in SmokeTest.java, introduced by the DB_BACKEND_INMEMORY
284   change.  Noted on #xapian-discuss by Aakash Muttineni.
286 * Update Java TODO list.
288 * SmokeTest.java: Port over version checks from SmokeTest.cs.
290 * Update list of recently tested JDK versions.
292 Lua:
294 * Note Lua bindings work with Lua 5.3.
296 Perl:
298 * Explicitly specify POD docs encoding as utf8.  Fixes warning in generated
299   HTML docs.
301 * Convert POD to HTML when building from a source tarball - the conversion
302   code comes as standard with Perl.  In 1.3.5 we were failing to ship the HTML
303   output, as reported by Anthony Basile.
305 * For extra robustness, convert POD to HTML using the bundled Pod::Html module
306   from the Perl interpreter found by configure, rather than assuming pod2html
307   is on PATH, and the right one (this matters more now that it's not just
308   people building from git who build these docs).
310 * Improve Perl bindings POD documentation.
312 * Remove workaround for Perl macro vs C++11 header.  SWIG 3.0.6 and later adds
313   a different workaround to the generated C++ wrapper file, and we require SWIG
314   3.0.8 for a Python fix, so we no longer need our workaround.
316 Python:
318 * Fix "make check" in VPATH build.  Nothing seems to have changed in our build
319   system, so I'm guessing this is now required due to a change in the code SWIG
320   generates.
322 Python3:
324 * Fix "make check" in VPATH build.  Nothing seems to have changed in our build
325   system, so I'm guessing this is now required due to a change in the code SWIG
326   generates.
328 * Fix install location for python3 docs.  They were being install to the same
329   path as the python docs - now the path includes "python3" instead of
330   "python".
332 Ruby:
334 * Increase minimum Ruby version to 2.1, as older versions are no longer
335   supported by the Ruby developers.
337 Xapian-bindings 1.3.5 (2016-04-01):
339 This release includes all changes from 1.2.23 which are relevant.
341 Documentation:
343 * Fix to install docs when not in maintainer-mode.
345 * Note open_stub() is deprecated (most of the bindings already noted this, but
346   now ruby and tcl do too).
348 General:
350 * Update for changes to the C++ API.
352 * PostingSource is now fully wrapped for the bindings.  Fixes #499, reported by
353   Joost Cassee.
355 * Ship swig-depcomp and doxy2swig scripts in the source tarball.
357 * Add installcheck-local make targets for most languages - these run the
358   testsuites using the installed bindings.
360 CSharp:
362 * configure: Stop checking for obsolete mono compiler names - gmcs, smcs and
363   dmcs were all deprecated in Mono 2.11.
365 * configure: Strip out handling of DotGNU - it's been inactive for years, and
366   was officially "decommissioned" in December 2012.
368 * README: Update list of mono versions recently tested with.
370 Lua:
372 * smoketest.lua: Fix to work with newer lua - coercing a number to a string
373   now appends ".0" for whole numbers.
375 Perl:
377 * Run pod2html with explicit --podpath=. - recent versions of pod2html seem to
378   need this to correctly handle references to other Xapian classes.  Reported
379   on #xapian-discuss by HowManny and abhishek_rand0wn.
381 Python:
383 * Run sphinx at build time.  It's an extra tool for people building from source
384   to have to install, but its output is rather large (this change reduces our
385   tar.xz size by ~20%), and its output includes a source-less minified copy of
386   jquery.
388 Python3:
390 * Run sphinx at build time.  It's an extra tool for people building from source
391   to have to install, but its output is rather large (this change reduces our
392   tar.xz size by ~20%), and its output includes a source-less minified copy of
393   jquery.
395 * Fix handling of integer values larger than a C int by bootstraping with a
396   newer version of SWIG.  Fixes #703, reported by Barry Warsaw.
398 * Remove xapian.inmemory_open() - we've deprecated the corresponding C++
399   function, and the Python3 bindings haven't yet had a stable release.
401 Ruby:
403 * Run rdoc at build time - it is included as part of the Ruby core
404   distribution, so we can assume it is available if ruby is, and avoid shipping
405   its rather large generated output in our source tarball.
407 Xapian-bindings 1.3.4 (2016-01-01):
409 This release includes all changes from 1.2.22 which are relevant.
411 Documentation:
413 General:
415 * Wrap new and changed features in C++ API.
417 * PostingSource set_maxweight() is now accessible to the bindings.  Fixes #498,
418   reported by Richard Boulton.
420 * configure script now defaults to looking for xapian-config-1.3.  This is now
421   automatically done for development series (odd middle component of the
422   version number), but not for stable series (even middle component).  Fixes
423   #695, reported by Jorge C. Leitão
425 PHP:
427 * Make PHP 5.5 the minimum officially supported version, as 5.4 has now reached
428   EOL.
430 * In the examples, when iterating an MSet with foreach, don't throw the docid
431   away as $dummy, put it in $docid and use it - the code looks cleaner, and
432   this avoids an extra call to C++ to get the docid on each iteration.
434 Python:
436 * Drop support for Python 2.5.
438 Python3:
440 * Document installation of Python 3 bindings.  Fixes #694, reported by Jorge C.
441   Leitão.
443 * Fix testsuite for changes in Python 3.5.  Fixes #690, patch from UsusDei.
445 * Handle renaming of .pyo to .opt-1.pyc files due to PEP-0488.  Fixes #689,
446   patch from UsusDei.
448 * Fix Python 3 version check to accept 3.10.
450 Xapian-bindings 1.3.3 (2015-06-01):
452 This release includes all changes from 1.2.20-1.2.21 which are relevant.
454 Documentation:
456 * INSTALL: IRIX is past EOL so drop information about IRIX make.
458 General:
460 * Add DB_RETRY_LOCK as a constant to wrap.
462 * Don't wrap Query::LEAF_* - they're for internal use in xapian-core.
464 * Fix "make install" from a git tree configured with --disable-documentation.
465   (Fixes #658, reported by Germán M. Bravo)
467 * Fix "make install" when building from git with --disable-documentation.
469 * Fix to handle a VPATH build from a tarball when the generated docs will be in
470   $(srcdir).
472 * Update testcases for lazy wildcard expansion change in xapian-core.
474 * Update for addition of XAPIAN_NOEXCEPT.
476 * Don't wrap internal methods of Xapian::Weight.
478 Portability:
480 * Require a compiler with good C++11 support, like xapian-core now does.
482 * doxygen_xml.conf.in: Update to avoid warnings about obsolete tags from newer
483   doxygen.
485 * configure: Update check for -fvisibility to match xapian-core's.
487 CSharp:
489 * Fix configure test for whether $CLI can run CSharp programs - previously it
490   would always fail, which would mean that the CSharp tests wouldn't be run on
491   platforms where CSharp programs can't be run directly.
493 Java:
495 * java/docs/examples/SimpleSearch.java: Update to actually build and work.
497 Lua:
499 * The Lua bindings are no longer considered to be "experimental" (in reality
500   they haven't been for some time).
502 Perl:
504 * Add a "LICENSE" section to the main POD.
506 * Add 'use strict' to all testcases, and add missing instances of 'my' that
507   this change uncovered.
509 * Wrap new WILDCARD_LIMIT_* constants as constants.
511 Python:
513 * Don't release the GIL when constructing a Query object from a sequence of
514   Query objects and/or strings.
516 * python/smoketest.py: Add new testcase to catch any internal functions,
517   methods, constants, etc which have accidentally been wrapped.
519 Python3:
521 * The Python3 bindings are no longer considered to be "experimental".
523 * Don't release the GIL when constructing a Query object from a sequence of
524   Query objects and/or strings.  (fixes #346)
526 * python3/pythontest.py: Expand comment about disabling test_import_star under
527   threads.
529 Tcl:
531 * Require Tcl 8.5 as older versions are no longer supported upstream, and this
532   version added ::tcl::pkgconfig, which makes the configure tests simpler and
533   more reliable.
535 * Adjust precedence of the typecheck typemap for wrapping constructing a query
536   from a Tcl list so that we disambiguate this from the new OP_WILDCARD
537   constructor correctly.
539 Xapian-bindings 1.3.2 (2014-11-24):
541 This release includes all changes from 1.2.16-1.2.19 which are relevant.
543 Documentation:
545 * Convert HTML docs to reStructured text.  (Patch from Mayank Chaudhary)
547 * Update for deprecation of Xapian::Chert::open().
549 * Update for renaming of "brass" backend to "glass".
551 * Remove SVN "$Date" placeholders as they aren't expanded by git, and the "last
552   updated" information isn't all that informative anyway - there can still be
553   stale information even if the file was updated very recently.
555 General:
557 * Releases and snapshots are now bootstrapped using a more recent version of
558   SWIG (a git snapshot from after the 3.0.3 release).
560 * configure: Fix SWIG version check to accept 3.x, and update the minimum
561   accepted version to be what we actually currently want.
563 * Wrap new C++ API features, and in particular all the new weighting schemes,
564   the changes to opening databases, and Xapian::Snipper.
566 * Wrap Xapian::Database::check() for the bindings ignoring the std::ostream*
567   argument which the C++ API takes.  If opts != 0, then output is sent to
568   stdout, otherwise no output is produced.
570 * Object descriptions are now always valid UTF-8. (see #620)
572 * Provide a SimpleStopper constructor which provides the ability to initialise
573   from a stopword list in a file.  Based on patch from Assem Chelli.
575 CSharp:
577 * README: Note that C# bindings now need .NET 2 or later (because that's what
578   SWIG-generated code now requires).
580 Java:
582 * Add testcase that FLAG_SPELLING is now wrapped in a usable way.  Patch from
583   Anish Kanchan.  (see #616, reported by "Naveen")
585 Lua:
587 * Document that constants can now be accessed using CLASS.CONSTANT as well as
588   CLASS_CONSTANT.
590 Perl:
592 * Move the new SWIG-based Perl bindings into a 'Xapian' module, to smooth the
593   overlap with the hand-coded XS 'Search::Xapian' module.
595 * Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
596   during parallel builds.
598 * Use croak_sv() or ERRSV if defined.
600 PHP:
602 * Make PHP 5.4 the minimum version we officially support, as 5.3 has now
603   reached EOL.
605 * Wrap Xapian iterator classes as PHP iterators - requires PHP 5.5 for full
606   support, under PHP 5.4 you can't use `foreach ($it as $k => $c)`, but
607   `foreach ($it as $c)` works and allows iterating through the equivalent of
608   C++ operator* on the iterator.  (fixes#652)
610 * Fix handling of an exception thrown from a PHP implementation of
611   FieldProcessor::apply().
613 * smoketest.php: Add tests of get_eset() with an ExpandDecider and with a min
614   weight threshold.
616 * In current PHP releases, dl() is disabled in most SAPIs, and even where
617   available it will now only look in the configured extension directory.  The
618   upshot is that there no longer seems to be a sane way to install the PHP
619   bindings without being root.  Fixes #661, reported by Felix Ostmann.
621 Python2:
623 * The python testsuite already tested if any constants weren't marked with
624   the CONSTANT macro in xapian-headers.i, but the resulting error didn't
625   clearly point to the actual problem.  Now we report the names of any
626   such constants.
628 * In the testsuite, use the xapian.WritableDatabase constructor rather than
629   chert_open() - that code dates back to when chert was the only disk-based
630   backend to support valuestreams, but flint was the default backend.
632 * Fix typo in code to keep a reference to a FieldProcessor object, reported by
633   Germán M. Bravo in github PR59.
635 * Generate Python API docs with Sphinx.  (Fixes #138, patch from Assem Chelli)
637 Python3:
639 * Python 3 support has been split off into its own subdirectory, and should now
640   be usable.  3.2 is the minimum supported version currently.  Existing code
641   will need updating for Python 3, and the wrapped API is necessarily different
642   in how Unicode is handled, so we've dropped deprecated features (such as
643   'MSet.items' and 'ESet.items') from the Python 3 bindings.  (see #346)
645 * Fix typo in code to keep a reference to a FieldProcessor object, reported by
646   Germán M. Bravo in github PR59.
648 * Generate Python API docs with Sphinx.  (Fixes #138, patch from Assem Chelli)
650 Ruby:
652 * configure: Don't prefer ruby1.8 to ruby when looking for a ruby interpreter -
653   these days it's more likely to ignore ruby 1.9 or 2.0 rather than avoid
654   picking ruby 1.6.
656 Xapian-bindings 1.3.1 (2013-05-03):
658 This release includes all changes from 1.2.10-1.2.15 which are relevant.
660 Documentation:
662 * HACKING: Document Debian packages needed for each language.
664 General:
666 * Wrap new C++ API features.
668 * Use new XAPIAN_NOTHROW markers in C++ API headers to avoid generating
669   unnecessary exception handling code where we call such functions and
670   methods.
672 * Tweak wrapping of Query from list constructor so the needed number of
673   elements get preallocated.
675 * Ignore Query(Query::Internal&) constructor, which is for internal use
676   only.
678 * For all languages except C# and Java, wrap the functions declared in
679   xapian/dbfactory.h by getting SWIG to parse the header.  This means we now
680   wrap the WritableDatabase form of Xapian::Auto::open_stub() for these
681   languages.
683 * swig-depcomp: Script which wraps invoking SWIG, tells it to generate
684   dependencies, and adjusts the generated dependencies to work in our build
685   system.
687 * Remove support for 'configure --enable-quiet', 'make QUIET=' and 'make
688   QUIET=y' - automake now supports 'configure --enable-silent-rules', 'make
689   V=1' and 'make V=0' which are broadly equivalent and more standard.
691 * Fix the tests to work with the new automake parallel test driver.
693 Portability:
695 * Improve workaround which allows building against an uninstalled xapian-core
696   on OS X - this should now work with any uninstalled xapian-core (not only in
697   a tree with the same layout as an SVN or git checkout) and it also won't try
698   to build against "../xapian-core/.libs" just because it happens to exist.
699   (Fixes #322)
701 CSharp:
703 * configure: The variable to specify the interpreter is now CLI (was MONO, but
704   didn't actually work properly).
706 Java:
708 * Document that we aim to support JDK 1.6 (Java 6) and later.
710 * Avoid generating a temporary C++ vector of Query objects when constructing
711   a Query from a Java array of Query objects or a Java array of strings.
713 * Implement and test MSetIterator, ESetIterator.  Fix PostingIterator,
714   ValueIterator, and TermIterator.
716 * Add Enquire.getMatchingTerms().
718 * Use JAVACFLAGS when running JAVAC to allow extra flags to be specified when
719   building, e.g. "make JAVACFLAGS=-g".
721 * java/SmokeTest.java: Avoid using System.err.printf() which fails to compile
722   with (the rather elderly) ECJ 3.3.1.
724 Perl:
726 * Fix PostingIterator wrapper to work.
728 * Update list of unwrapped things in POD documentation.
730 * Improve test coverage.
732 * perl/t/10query.t: Adjust regexp which checks expected error message to work
733   with Perl 5.16, which adds a '.' after "at foo line 123".  (ticket#610)
735 * Probe for the test running tool 'prove' in configure.
737 PHP:
739 * Avoid using zend_error_noreturn() as it doesn't work with all builds of PHP.
740   Instead we now wrap it in a SWIG_FAIL() function which we annotate as
741   "noreturn" for GCC to avoids warnings.  This also reduces the size of the
742   compiled PHP module by 6%.
744 * php/smoketest.php: Add more tests of geospatial API.
746 Python:
748 * Drop support for Python 2.4.
750 * python/smoketest2.py: Add more testcases.
752 * python/smoketest2.py: Improve reporting of test failures for certain
753   testcases.
755 * Update Python 3 tests from Python 2 versions using 2to3.
757 Xapian-bindings 1.3.0 (2012-03-14):
759 Documentation:
761 * In maintainer builds, run doxygen to generate XML for the bindings in the
762   bindings build system, not as a side-effect in xapian-core's.  (ticket#262)
764 General:
766 * Wrap new geospatial API.
768 * Wrap new database checking API.
770 * Deprecated features scheduled for removal in 1.3.0 have been removed.
772 * Wrap ExpandDecider even if we don't have director support - there's a
773   ExpandDeciderFilterTerms subclass which is useful in itself, though it still
774   needs some typemap work to actually get it usefully wrapped.
776 * configure:
778   + Add --disable-visibility option to match xapian-core.
780   + Add -fshow-column for GCC.
782   + Don't put -Werror in SWIG_FLAGS - instead put it in a new SWIG_WERROR
783     variable, so that it's easy to override it if you're getting a new warning
784     from SWIG but want to just ignore it for the time being.
786 * Exception handling now uses Error::get_description() rather than get_type +
787   ": " + get_msg().  In many cases this is the same, but if context or errno
788   are available, get_description() includes them.  Catch and report
789   std::exception rather than handling it as an unknown error (so in particular
790   std::bad_alloc will now be reported more helpfully).
792 CSharp:
794 * Avoid generating unwanted wrapper sources
795   SWIGTYPE_p_std__vectorT_std__string_t.cs and
796   SWIGTYPE_p_std__vectorT_Xapian__Query_t.cs.
798 Java:
800 * The hand-coded JNI Java bindings have been removed and the SWIG-based Java
801   bindings promoted in their place.  This means almost the entire C++ API is
802   now wrapped for Java, but the downside is there are some changes required
803   to existing code.  Overall we feel the short-term pain is worth the long
804   term benefits of having Java bindings which stay up to date.
806 * java/SmokeTest.java: Add test that string passing is zero byte safe.
808 Lua:
810 * Improve error messages.
812 Perl:
814 * Fix "Use of qw(...) as parentheses is deprecated" warnings in test cases with
815   Perl 5.14.
817 * Fix Search::Xapian::Query->new() to work.
819 * Enable warnings for all test cases and make them fatal.
821 * Add "use Carp;" where we use functions from that module.
823 * Improve POD docs for Document and TermGenerator methods - "weight" is
824   misleading, so use "wdfinc" and "wdfdec" like the C++ API docs do.
826 * The Query constructor which takes an array of subqueries is now wrapped more
827   efficiently - previous a temporary C++ std::vector was built but now we avoid
828   doing this.
830 PHP:
832 * PHP >= 5.3 is now required.
834 * Add PHP type hints to the class wrappers.  Fixes ticket#577.
836 * The XapianQuery constructor which takes an array of subqueries is now
837   wrapped more efficiently - previous a temporary C++ std::vector was built
838   but now we avoid doing this.
840 Python:
842 * Python >= 2.4 is now required.
844 * Remove deprecated Stem_get_available_languages().
846 * Hide away the deprecated non-pythonic iterators - we still need them to
847   implement the pythonic iterators, so we can't entirely remove them.
849 * Replace SWIG's thread locking with code which does nothing unless threads
850   are already initialised, to avoid the overhead of thread locking in the
851   common case of single-threaded Python code.  This seems to be about 5-10%
852   faster for pythontest2.py modified to repeat the tests 100 times.
854 * Handle the GIL in a way which also works in sub-interpreters.  Fixes ticket
855   #364.
857 * The Query constructor which takes an array of subqueries is now wrapped more
858   efficiently - previous a temporary C++ std::vector was built but now we avoid
859   doing this.
861 Ruby:
863 * The XapianQuery constructor which takes an array of subqueries is now
864   wrapped more efficiently - previous a temporary C++ std::vector was built
865   but now we avoid doing this.
867 Tcl:
869 * The XapianQuery constructor which takes an array of subqueries is now
870   wrapped more efficiently - previous a temporary C++ std::vector was built
871   but now we avoid doing this.
873 Xapian-bindings 1.2.23 (2016-03-28):
875 Documentation:
877 * Update links to Xapian website and trac to use https, which is now supported,
878   thanks to James Aylett.
880 PHP:
882 * Check that the PHP interpreter we find is actually PHP5, and if not look
883   harder.  On current Debian unstable, php-config5 --php-binary reports
884   /usr/bin/php which can be PHP7.
886 * Document that PHP7 isn't currently supported, and explicitly check for and
887   reject it in configure.
889 Ruby:
891 * configure: Stop preferring rdoc-1.8 to rdoc (this only happened in a
892   fall-back case when rdoc wasn't found in the same directory as the ruby
893   interpreter).
895 Xapian-bindings 1.2.22 (2015-12-29):
897 Documentation:
899 * Stop maintaining ChangeLog files.  They make merging patches harder, and stop
900   'git cherry-pick' from working as it should.  The git repo history should be
901   sufficient for complying with GPLv2 2(a).
903 General:
905 * Stop wrapping internal methods of Xapian::Weight.
907 * Return Error::get_description() rather than get_type + ": " + get_msg().  In
908   many cases this is the same, but if context or errno are available,
909   get_description() includes them.
911 * Catch and report std::exception rather than handling it as an unknown error
912   (so in particular std::bad_alloc will now be reported more helpfully).
914 CSharp:
916 * Fix configure test for whether $MONO can run CSharp programs - previously it
917   would always fail, which would mean that the CSharp tests would only be run
918   on systems where CSharp programs can be run directly.
920 Lua:
922 * Send stderr from lua version check to config.log instead of letting it appear
923   on the terminal.
925 PHP:
927 * Fix memory leak and crash when using PHP subclasses of Xapian functors.
929 * Subclasses of XapianMatchSpy and XapianPostingSource with implicit
930   constructors now work.
932 Python:
934 * Add new testcase to catch any internal functions, methods, constants, etc
935   which have accidentally been wrapped.
937 Xapian-bindings 1.2.21 (2015-05-20):
939 Lua:
941 * README: Remove note about the Lua bindings being experimental - it's not
942   really been true for some time now.
944 Perl:
946 * Wrap missing constants OP_SYNONYM and STEM_ALL_Z.
948 * Add workaround for Perl defining a seed() macro which breaks compilation with
949   GCC in C++11 mode (due to <algorithm> now pulling in random number generation
950   classes with a method called seed).
952 * Update list of unwrapped things in POD documentation.
954 * Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
955   during parallel builds.
957 * Add test coverage for Enquire::set_collapse_key() with 1 and 2 parameters.
959 * Add test that we can create all the stemmers returned by
960   Stem::get_available_languages().
962 * t/symbol-test.t: If the symboltest module build fails, skip the test - it's
963   likely due to external reasons, like incompatible compiler flags being taken
964   from Perl's Config module, due to Perl having been built with a different
965   compiler to Xapian.
967 * Use croak_sv() or ERRSV if defined.
969 PHP:
971 * README: Remove note about the subclassing bug with PHP 5.4 and later - that
972   was fixed in 1.2.19.
974 Python:
976 * README: Add note that 1.3.2 has Python 3 support, and that this will be in
977   stable release 1.4.0.
979 Ruby:
981 * smoketest.rb: Fix "warning: assigned but unused variable - mset".
983 * Ship generate-rdoc-stubs in the tarball.  Reported by Matthias Klose in
984   https://bugs.debian.org/782270
986 Xapian-bindings 1.2.20 (2015-03-04):
988 Portability:
990 * configure: Avoid using \? in sed command in Lua detection - it isn't
991   supported by all sed implementations.
993 Lua:
995 * configure: Rework LUA_SO checks to be clearer and to properly handle LUA_SO
996   being specified without a leading '.'.
998 * configure: Add an example of specifying LUA_SO to --help output.
1000 PHP:
1002 * Remove text about subclassing bug with PHP 5.4 and later - that was fixed in
1003   1.2.19.
1005 * In current PHP releases, dl() is disabled in most SAPIs, and even where
1006   available it will now only look in the configured extension directory.  The
1007   upshot is that there no longer seems to be a sane way to install the PHP
1008   bindings without being root, so update the documentation to reflect this.
1009   Fixes #661, reported by Felix Ostmann.
1011 Xapian-bindings 1.2.19 (2014-10-21):
1013 PHP:
1015 * Fix up SWIG generated C++ wrapper code so that subclassing of wrapped classes
1016   in PHP works with PHP 5.4 and later.  (Fixes #652, reported by Sebastian
1017   Gottfried)
1019 * Fix XapianQueryParser::set_stopper() and XapianTermGenerator::set_stopper()
1020   which were getting incorrectly wrapped such that they didn't actually do
1021   anything.  Fixes #659, reported by jmienert.  This bug was introduced by the
1022   reference tracking fix in 1.2.14.
1024 Ruby:
1026 * README: Note that Ruby 2.1 works too.
1028 Xapian-bindings 1.2.18 (2014-06-22):
1030 Documentation:
1032 * README: Add links to Erlang and Node.js bindings.
1034 Lua:
1036 * lua/smoketest.lua: Change expect() parameter order to the more natural (got,
1037   expected), which most of the calls already used, and fix up the few calls
1038   which passed (expected, got).
1040 PHP:
1042 * php/smoketest.php: Add missing "exit(1);" after reporting failure of check
1043   that MatchDecider returns an MSet with the expected docid in.  Luckily this
1044   wasn't masking a test failure.
1046 Python:
1048 * python/pythontest.py: There's no longer a need to use chert_open() explicitly
1049   - chert is the default backend now, and both chert and brass support the
1050   required functionality for the tests which do this, so this just needlessly
1051   causes the tests to fail if chert is disabled in xapian-core.
1053 * configure: If the Python version is too new or too old, only report it once
1054   not twice.
1056 Ruby:
1058 * configure: Fix Ruby bindings to build on Windows (and other platforms where
1059   allow_undefined_flag=unsupported. (fixes#634, reported by Alexis Denis)
1061 Xapian-bindings 1.2.17 (2014-01-29):
1063 Portability:
1065 * Improve workaround which allows building against an uninstalled xapian-core
1066   on OS X - this should now work with any uninstalled xapian-core (not only in
1067   a tree with the same layout as an SVN or git checkout) and it also won't try
1068   to build against "../xapian-core/.libs" just because it happens to exist.
1069   (Backported from 1.3.1; fixes #322)
1071 Python:
1073 * configure: Some distros now point /usr/bin/python at Python 3, so the check
1074   for a Python 2 interpreter now checks for 'python2' first, and checks that
1075   the version of found interpreter is 2.x.
1077 Ruby:
1079 * Tweak configure to work with Ruby 2.0.
1081 Tcl:
1083 * Link against -ltclstubX.Y for Tcl 8.5 and later (reported by Sergei Golovan
1084   in http://bugs.debian.org/724830).
1086 * Use a better check for TCL_INC for Tcl 8.5 and later.
1088 Xapian-bindings 1.2.16 (2013-12-04):
1090 Documentation:
1092 * README: Note that the SWIG Perl bindings should replace the XS ones in 1.4.x.
1094 General:
1096 * Compress source tarballs with xz instead of gzip.
1098 * configure: Handle git snapshot naming.
1100 Portability:
1102 * configure: Update list of platforms where we tell libtool not to link in
1103   deplibs to match the list used for xapian-core.
1105 Perl:
1107 * Pass 0 instead of NULL for non-pointer parameter to av_fetch (spotted due to
1108   GCC 4.7 warning).
1110 * symboltest.t: Pass $CPPFLAGS and $CXXFLAGS from the environment through to
1111   the sub-build, fixing failure when built with CPPFLAGS=-D_GLIBCXX_DEBUG.
1113 PHP:
1115 * smoketest.php: If running under PHP >= 5.4, skip the tests we know will fail
1116   with a message explaining this.
1118 Python:
1120 * Provide bindings version in xapian.__version__ as per PEP 396.  (see #346)
1122 * python/docs/examples/simpleexpand.py: Use Pythonic iteration over the ESet.
1124 * pythontest.py: Fix testcase checking we get an exception from using
1125   non-random-access iterators after then have advanced - previously these
1126   didn't actually test as fully as intended.
1128 Ruby:
1130 * Omit internal classes and methods from the rdocs.
1132 Xapian-bindings 1.2.15 (2013-04-16):
1134 General:
1136 * Fix configure --enable-quiet option to actually work for the bindings.
1138 Perl:
1140 * Fix doc typo: "as as" -> "as a"
1142 Ruby:
1144 * Fix deprecation warning in configure from Ruby 1.9.3.
1146 Xapian-bindings 1.2.14 (2013-03-14):
1148 Python:
1150 * Fix typo in doccomment.
1152 PHP:
1154 * Keep references to the PHP wrapper object when an object is set on another
1155   object.  (fixes #614)
1157 Tcl:
1159 * Allow TCL_INC to be passed to configure.  (fixes #612)
1161 Xapian-bindings 1.2.13 (2012-11-09):
1163 CSharp:
1165 * configure: Overhaul checks for C# tools to use modern names in preference.
1167 Lua:
1169 * Fix examples to use str(query) to get the query description.  (Fixes #600)
1171 * Document that get_description() is mapped to str(), and end() to _end().
1173 * Fix functor wrappers which return strings to be zero-byte clean.
1175 Perl:
1177 * Forward port tests of StringValueRangeProcessor with a prefix or suffix from
1178   1.2's XS Search::Xapian.  (ticket#607)
1180 * Update testsuite not to use UNIVERSAL::isa() as a function, since doing so
1181   is deprecated.
1183 PHP:
1185 * Document that subclassing Xapian classes in PHP currently doesn't work with
1186   PHP 5.4.
1188 Xapian-bindings 1.2.12 (2012-06-27):
1190 No changes since 1.2.11 except to bump the version - this release was made to
1191 fix an incorrect library version information update in xapian-core 1.2.11.
1193 Xapian-bindings 1.2.11 (2012-06-26):
1195 General:
1197 * Ship the scripts which generate the except.i files for Lua, Perl and Python.
1199 Perl:
1201 * In generated C++ code, pass 0 instead of NULL for non-pointer parameter to
1202   av_fetch() (spotted due to GCC 4.7 warning).
1204 PHP:
1206 * Fix "make check" to work for PHP when building from a release tarball with
1207   srcdir != builddir.
1209 * Work around "undefined symbol: zend_error_noreturn" error.
1211 Xapian-bindings 1.2.10 (2012-05-09):
1213 CSharp:
1215 * Use -keyfile and -keycontainer options to the C# compiler, because it warns
1216   us to do this instead of setting them in AssemblyInfo.cs.
1218 * Use diff's -c option when comparing the files SWIG generated against those we
1219   were expecting to get as the output should be easier to understand.
1221 * Sort both the lists of expected and of found SWIG-generated sources with
1222   Perl, to avoid problems with locale-specific sort orders.
1224 Java-SWIG:
1226 * Remove now superfluous old check that SWIG generated at least the sources we
1227   want - we now check it generated *exactly* the sources we want.
1229 * Use diff's -c option when comparing the files SWIG generated against those we
1230   were expecting to get as the output should be easier to understand.
1232 * Sort both the lists of expected and of found SWIG-generated sources with
1233   Perl, to avoid problems with locale-specific sort orders.
1235 Lua:
1237 * Now works with Lua 5.2.
1239 * "require 'xapian'" now returns the module table.  (ticket #593)
1241 * lua/smoketest.lua: Improve reporting of test failures.
1243 Perl:
1245 * Avoid importing isa from UNIVERSAL to fix Perl 5.12 deprecation warning.
1247 * Remove #! lines with -W to fix "Name "Test::More::TODO" used only once:
1248   possible typo at /usr/share/perl/5.14/Exporter/Heavy.pm line 190." warnings.
1250 Python:
1252 * python/docs/examples/simpleexpand.py: Update to not use deprecated MSet
1253   iteration features which have been removed on trunk.  This also fixes a
1254   segfault if there are no matches and no documents are explicitly marked as
1255   relevant.
1257 * python/testsuite2.py: Explicitly suggest "make check VERBOSE=1" as a simple
1258   way to rerun tests with verbose output.
1260 Ruby:
1262 * configure: Make sure the ruby subdirectory exists before trying to create
1263   ruby/rubyio.h, so this works in a VPATH build from a clean tree.
1265 Xapian-bindings 1.2.9 (2012-03-08):
1267 Java:
1269 * configure: Fix test for jni.h to try looking for jni.h relative to the real
1270   location of javac, which should work for more JDKs.
1272 Lua:
1274 * Handle an exception from C++ by raising a xapian.Error object as an error in
1275   Lua.
1277 * Rename get_description() methods to __tostring(), so that you can use write
1278   tostring(obj) in Lua.
1280 * configure: Honour LUA_LIB if already set.  Fixes #581.
1282 * configure: Improve probing for LUA_LIB, and also probe for LUA_SO so we
1283   support platforms where the compiled Lua module isn't called .so.
1285 Perl:
1287 * Add tests of Document::get_docid().
1289 PHP:
1291 * Add a test that Query constructor taking OP_NEAR with a window size works.
1293 Python:
1295 * python/testsuite2.py: Don't run off the traceback looking for a test function
1296   if the exception wasn't from a test function.
1298 Xapian-bindings 1.2.8 (2011-12-13):
1300 Lua:
1302 * Wrap user-subclassable functor objects by allowing the user to pass a
1303   Lua function where the functor object would be passed in the C++ API.
1305 PHP:
1307 * Fix "PHP Notice:  Undefined variable: r in xapian.php".  (Fixes bug#576)
1309 * The PHP bindings will now work again with a version of PHP built with ZTS
1310   enabled (which is the default on Microsoft Windows).  This was broken by
1311   the changes to support subclassing in PHP in the version of SWIG used since
1312   1.2.6.
1314 Python:
1316 * Add a module docstring.  (Fixes bug #573)
1318 * The python testsuite now checks for object leaks during each testcase.
1320 * In test_matchingterms_iter, run the code we're testing for leaks twice, and
1321   only check for leaks the second time to avoid falsely reporting a leak when
1322   some cached value gets initialised under Python 2.5.
1324 Ruby:
1326 * Wrap optional prefix parameter to Database::allterms.
1328 Xapian-bindings 1.2.7 (2011-08-10):
1330 Documentation:
1332 * INSTALL: Pull in a few updates from the latest version of the automake
1333   document which this file was originally based on.  Add in the missing
1334   copyright and licensing information.
1336 * INSTALL: Add --with-lua to list of options.
1338 * INSTALL,README: It's no longer noteworthy that Mac OS X 10.1 and 10.2 aren't
1339   supported as Apple ditched them long ago, so drop this as a "Known Issue" in
1340   INSTALL and instead just say "Mac OS X >= 10.3" in the discussion of
1341   supported platforms in the README.
1343 * HACKING: Update and start section on deprecation warnings for the bindings.
1345 General:
1347 * Add missing wrappers for Database::has_positions() and
1348   TermIterator::positionlist_count(), and correct the return type of
1349   Database::get_doclength() from double to Xapian::termcount.
1351 CSharp:
1353 * README: Note a recent version of Mono which we've tested the C# bindings
1354   with.
1356 * Check that exactly the sources we expect are generated, and add some sources
1357   which were missing from the list.
1359 * Fix "make uninstall" so the compiled C++ module (typically _XapianSharp.so)
1360   gets removed.
1362 * Fix iterator ++ and -- so that the reference to the object isn't released
1363   prematurely, which was causing an occasional crash if the garbage collection
1364   happened at just the wrong moment,
1366 * Add test coverage for QueryParser.ParseQuery() with flags argument.
1368 * Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
1370 Java:
1372 * SmokeTest.java: Fix == comparisons with strings to use equals().
1374 * Add test that string passing is zero byte safe.
1376 * Fix MyExpandDecider.accept() to really check the passed parameter.
1378 Java-SWIG:
1380 * Put the SWIG-generated Java bindings in package org.xapian.
1382 * Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
1384 * SmokeTest.java: Fix == comparisons with literal strings to use equals()
1386 * Add test that string passing is zero byte safe.
1388 * Fix MyExpandDecider.accept() to really check the passed parameter.
1390 * Fix the compile JNI code to have a .jnilib extension on Mac OS X.
1392 * Create an HTML documentation page based on java/README.
1394 * Copy java examples from the hand-coded JNI ones.
1396 * docs/examples/SimpleIndex.java: Update to use commit() rather than flush().
1398 * Check that exactly the sources we expect are generated, and add some sources
1399   which were missing from the list.
1401 Lua:
1403 * Merge latest Lua changes from Xiaona Han.
1405 * lua/smoketest.lua: Add simple test for Database::positionlist_begin().
1407 * simpleexpand.lua: Don't try to add anything to the RSet if there are no
1408   matches.
1410 Perl:
1412 * Sync updates to examples from XS Search::Xapian:
1414   + Require Perl >= 5.6 so we can "use warnings;".
1416   + Loop over file using while() (which reads a line per iteration) not
1417     foreach() (which reads the whole file up front).
1419 * Wrap MatchAll and MatchNothing for Perl (as Search::Xapian::Query::MatchAll
1420   and Search::Xapian::Query::MatchNothing).  (ticket#158)
1422 * perl/t/termgenerator.t: Test TermIterator::index_text() with two arguments.
1424 * perl/Makefile.am: Fix "make check".
1426 * perl/t/symbol-test.t: Fix to work when built against an installed
1427   xapian-core.  (ticket#558)
1429 PHP:
1431 * php/smoketest.php: Install an error handler so the test fails if there are
1432   any errors, warnings, notices, etc.
1434 * Change PHP examples and test program to use 'include "xapian.php"' like user
1435   code should (rather than 'include "php5/xapian.php"' as they did previously).
1437 * Wrap MatchAll and MatchNothing for PHP as XapianQuery::MatchAll() and
1438   XapianQuery::MatchNothing(). (ticket#158)
1440 Ruby:
1442 * Wrap MatchAll and MatchNothing for Ruby.  (ticket#158)
1444 Xapian-bindings 1.2.6 (2011-06-12):
1446 General:
1448 * SWIG-based bindings are now generated with a newer version of SWIG
1449   (ticket#538).
1451 Portability:
1453 * On Mac OS X 10.5 or later, and 10.4 on x86, build Java JNI library with a
1454   .jnilib extension as we do for older versions.
1456 CSharp:
1458 * Upgrading to newer SWIG fixes issues with strings with newer C# versions.
1460 Java:
1462 * Fix memory leaks when functions taking string parameters throw exceptions.
1464 * Previously a hash table was used to map Java objects to C++ ones, but we
1465   now just cast the address of the C++ object to a jlong (which is 64 bits
1466   so will hold a pointer on current platforms).  This is more efficient and
1467   avoids the need for thread locks around accesses to the hash table.
1469 * Remove explicit checks for NULL around calls to delete.
1471 * Mark makefiles which build Java code as .NOTPARALLEL to avoid race conditions
1472   during parallel builds.
1474 Lua:
1476 * Add support for Lua, which is being developed by Xiaona Han during GSoC this
1477   year.  The current support should be regarded as experimental - it passes
1478   its automated tests, but the details of the Lua API are likely to evolve as
1479   the project progresses.
1481 Perl:
1483 * README: say that Perl bindings probably need Perl 5.8 or later.
1485 PHP:
1487 * Directors now work for PHP (ticket#488).  New simplematchdecider.php example.
1489 Python:
1491 * python/pythontest2.py: With Python 2.7, gc.collect() doesn't always collect
1492   all the garbage, so repeat until no further objects are freed.
1493   (http://bugs.debian.org/625679 and https://bugs.gentoo.org/349484).
1495 Ruby:
1497 * ruby/smoketest.rb: Older Ruby 1.8.x doesn't have Dir.mktmpdir() - just skip
1498   the compaction tests for these versions.
1500 Xapian-bindings 1.2.5 (2011-04-04):
1502 Documentation:
1504 * README: Update info on SWIG-based Perl bindings.
1506 * INSTALL: Copy new Multi-Arch section from xapian-core/INSTALL.  Replace VPATH
1507   section with better equivalent from xapian-core/INSTALL.
1509 General:
1511 * Wrap ESet::get_eset() with min_wt parameter (new in C++ API in 1.2.5).
1513 * configure: If xapian-core is a different release series, promote the
1514   mismatched versions warning to an error.
1516 Portability:
1518 * Mac OS X: Don't override MACOSX_DEPLOYMENT_TARGET on 10.5 and later, or
1519   10.4 on x86, as the default if unset on these versions is the current OS
1520   version.  (ticket#541)
1522 * python/pythontest2.py: In test_compactor(), close any open databases before
1523   removing the directory as you can't delete an open database on Microsoft
1524   Windows.  (ticket#526)
1526 CSharp:
1528 * Don't pass extra flags to Microsoft's gacutil.  (ticket#516)
1530 * Clarify the licence is GPL "version 2 or later" in the meta information
1531   we put in the module.
1533 Python:
1535 * Remove old and broken Enquire.get_matching_terms() method.  We deprecated
1536   Enquire.get_matching_terms() in 1.0.x, and removed it in 1.1.0, but
1537   accidentally left an older version of get_matching_terms() exposed.
1539 * Remove broken implementation of MSet.__contains__.  This appears never to
1540   have worked, and to have been broken for at least the past 3.5 years without
1541   anyone mentioning it, and is probably of little use anyway, so no need to
1542   deprecate.
1544 * python/docs/index.html: Document that MSet.items and ESet.items are
1545   deprecated, and what to use instead.  Note that MSET_DOCUMENT never worked on
1546   the tuple returned by MSet.items.  (ticket#531)
1548 * Add test coverage for mset.items.
1550 Ruby:
1552 * Add test coverage for Xapian::Compactor.
1554 * Handle an empty response to $RUBY --version specially.  This gives a less
1555   opaque error in cases where the user specified RUBY but the value given
1556   wasn't an executable file.
1558 Xapian-bindings 1.2.4 (2010-12-19):
1560 General:
1562 * Wrap the new Xapian::Compactor class.  The resolve_duplicate_metadata()
1563   virtual method is wrapped for subclassing for Python and Ruby currently.
1565 * Eliminate separate Makefile.am in the docs subdirectory of each language
1566   subdirectory and just inline any rules into the main sub-Makefile.am, which
1567   allows more of the build to run in parallel.
1569 * Don't ship some files which are generated at build time.
1571 * configure: Need python in maintainer mode to run doxy2swig.py.
1573 Packaging:
1575 * RPM: Package the Perl bindings.
1577 * RPM: Don't package _XapianSharp.la.
1579 Portability:
1581 * For Mac OS X builds, set DYLD_LIBRARY_PATH to allow tests to find an
1582   uninstalled Xapian library.  See ticket #322.
1584 * configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
1586 CSharp:
1588 * Don't install _XapianSharp.la.
1590 Perl:
1592 * Merge SWIG-based Perl bindings originally developed by Kosei Moriyama during
1593   GSoC 2009.  These are close to being a compatible replacement for the
1594   hand-coded XS bindings in Search::Xapian but also offer a more complete
1595   wrapping of the C++ API.  We're planning to replace the XS bindings with the
1596   SWIG ones for easier maintenance.  We encourage you to try them and let us
1597   know how you get on - particularly if you find cases where code which works
1598   with the XS bindings doesn't work with the SWIG ones.
1600 PHP:
1602 * Document that iterators shouldn't be dereferenced or advanced when at their
1603   end points (ticket#520).
1605 Python:
1607 * Fix memory leaks in typemaps which return Python lists.
1609 * MatchSpy can now be subclassed in Python.  Remote use isn't currently
1610   supported.
1612 * configure: Use sys.version_info tuple, rather than string splicing which
1613   assumes the Python "major.minor" is 3 characters (which would fail if Python
1614   2.10 were ever released, for example).
1616 Xapian-bindings 1.2.3 (2010-08-24):
1618 Packaging:
1620 * xapian-bindings.spec: Don't run autoreconf - it's no longer required.
1622 Xapian-bindings 1.2.2 (2010-06-27):
1624 * No user-visible change except for bumping the version to indicate
1625   compatibility with Xapian-core 1.2.2.
1627 Xapian-bindings 1.2.1 (2010-06-22):
1629 This release includes all changes from 1.0.21 which are relevant.
1631 General:
1633 * Wrap Xapian::StemImplementation.  Currently this has only been tested for
1634   Python.  (ticket#448)
1636 Guile:
1638 * Remove non-functional disabled guile bindings left over from Open Muscat
1639   days - if someone wanted to add guile bindings, it would be easier to start
1640   from scratch.
1642 Java-SWIG:
1644 * Update list of generated java sources in the SWIG-based Java bindings.
1646 PHP:
1648 * zend_throw_exception() returns, so return control to PHP directly after
1649   calling it to avoid needless extra work and possible issues.
1651 Python:
1653 * Fix "from xapian import *".  (ticket#477)
1655 * Fix testcase weight_normalise - a change in xapian-core means that
1656   get_max_possible() can now return zero for a non-existent term, so don't
1657   blindly calculate the reciprocal of it.
1659 * python/replicationtest2.py: Extend to check that changesets get applied
1660   correctly.
1662 * python/smoketest2.py: Check len(mset) works (improving test coverage of
1663   Python-specific wrapping).
1665 Xapian-bindings 1.2.0 (2010-04-28):
1667 This release includes all changes from 1.0.20 which are relevant.
1669 Portability:
1671 * configure: Tell libtool not to link in deplibs on platforms where we know
1672   they aren't needed.
1674 * configure: On Linux, extract the library search path from ldconfig which
1675   gives us the default entries reliably.
1677 Xapian-bindings 1.1.5 (2010-04-15):
1679 This release includes all changes from 1.0.19 which are relevant.
1681 Tcl:
1683 * tcl8/docs/index.html: Document WritableDatabase::close() as a way to
1684   sidestep the whole destructor issue.  (ticket#62)
1686 Xapian-bindings 1.1.4 (2010-02-15):
1688 This release includes all changes from 1.0.18 which are relevant.
1690 General:
1692 * Update for the new Brass backend and other C++ API changes.
1694 * Wrap Database::get_doclength_lower_bound(),
1695   Database::get_doclength_upper_bound(), Database::get_wdf_upper_bound(),
1696   Database::valuestream_begin() and Database::valuestream_end() for all
1697   languages. (ticket#431)
1699 * Wrap ValueIterator::skip_to() and ValueIterator::check() for all languages.
1701 Python:
1703 * Wrap valuestreams as Database.valuestream(), returning a ValueStreamIter
1704   object which dereferences to a ValueStreamItem object,
1706 * Fix Enquire.clear_matchspies() wrapper which crashed in 1.1.3.
1708 Ruby:
1710 * Add safe wrapper for the valuestream iterator.
1712 Xapian-bindings 1.1.3 (2009-11-18):
1714 This release includes all changes from 1.0.15-1.0.17 which are relevant.
1716 General:
1718 * configure: Default to looking for xapian-config-1.1 unless XAPIAN_CONFIG is
1719   specified.
1721 * Wrap the new MatchSpy class, and associated features.
1723 * Don't wrap PostingSource::serialise(), Weight::serialise() and
1724   Weight::unserialise() as they aren't useful from the bindings.
1726 * Update for the Sorter to KeyMaker changes.
1728 PHP:
1730 * Fix PHP bindings to build when PHP has been compiled in multithreaded mode,
1731   as it standardly is on Microsoft Windows.  Fixes #411.
1733 * Merged the PHP "smoketest" back together now we don't need to support
1734   PHP4 now.
1736 Python:
1738 * Fix a memory leak on error (in theory - we've not got a way to generate this
1739   error, so haven't been able to reproduce the leak or test the fix).
1741 Xapian-bindings 1.1.2 (2009-07-23):
1743 This release includes all changes from 1.0.14 which are relevant to trunk.
1745 Python:
1747 * Several changes towards fully supporting Python 3, but more work is required.
1748   (ticket#246)
1750 Xapian-bindings 1.1.1 (2009-06-09):
1752 This release includes all changes from 1.0.13 which are relevant to trunk.
1754 General:
1756 * Wrap the recently added extra parameter to Enquire::set_collapse_key().
1758 CSharp:
1760 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
1761   C# yet, and to use Query("") and Query() instead.
1763 * configure: If we don't find a C# compiler, don't test an empty command name
1764   further which saves a fork and avoids an odd looking message.
1766 PHP:
1768 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
1769   PHP yet, and to use Query("") and Query() instead.
1771 Python:
1773 * Wrap Query::MatchAll and Query::MatchNothing for Python and document how they
1774   are wrapped (ticket#158).
1776 * python/smoketest2.py,python/smoketest3.py: Update tests with FLAG_PARTIAL to
1777   expect SYNONYM in generated query.
1779 Ruby:
1781 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
1782   Ruby yet, and to use Query("") and Query() instead.
1784 Tcl:
1786 * Wrap Query::MatchAll and Query::MatchNothing for Tcl and document how they
1787   are wrapped (ticket#158).
1789 Xapian-bindings 1.1.0 (2009-04-22):
1791 Documentation:
1793 * INSTALL: Python 2.6 and later look in ~/.local for Python modules so update
1794   the instructions to suggest users use this standard location for installing
1795   without root access.
1797 General:
1799 * All deprecated features slated for removal in 1.1.0 have been removed.
1801 * All new C++ API features have been wrapped.  Also, since we now supply some
1802   standard MatchDecider subclasses, we now wrap Enquire::get_mset() so that
1803   these can be passed in even for languages for which SWIG doesn't support
1804   subclassing.
1806 Packaging:
1808 * xapian-bindings.spec: Updated to reflect the new Python packaging.
1810 Portability:
1812 * configure: Use XAPIAN_CXXFLAGS for test compiles since it may include options
1813   to put the compiler into ISO C++ mode).
1815 PHP:
1817 * PHP4 support has been removed, since PHP4 is no longer supported upstream
1818   as of 2008-08-08.
1820 Python:
1822 * Python 2.3 or later is now required.  2.2 is essentially unsupported
1823   upstream.
1825 * The import method used has been changed (by using a newer SWIG version)
1826   and no longer gives a warning with Python 2.6.
1828 * Initial support for Python 3.0 has been added.  This currently doesn't
1829   work correctly and should be treated as experimental. (ticket#346)
1831 * The newer SWIG version handles exceptions in director methods correctly
1832   so we no longer need our workaround for ticket #289.
1834 * Database::metadata_keys_begin() and Database::metadata_keys_end() are
1835   wrapped for Python as Database.metadata_keys().
1837 * The Python bindings are now installed as a python package, with the
1838   files in a xapian subdirectory, hiding the internal _xapian module
1839   better.
1841 * Python now flags deprecation warnings for the single argument form and old
1842   parameter name (ascending) in set_sort_by_key(), set_sort_by_value() and
1843   friends.
1845 Xapian-bindings 1.0.23 (2011-01-14):
1847 Portability:
1849 * configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
1851 PHP:
1853 * Document that iterators shouldn't be dereferenced or advanced when at their
1854   end points (ticket#520).
1856 Python:
1858 * Fix memory leaks in typemaps which return Python lists.
1860 Xapian-bindings 1.0.22 (2010-10-03):
1862 Packaging:
1864 * RPM: Don't package _XapianSharp.la.
1866 CSharp:
1868 * Don't install _XapianSharp.la.
1870 Python:
1872 * configure: Use sys.version_info tuple, rather than string splicing which
1873   assumes the Python "major.minor" is 3 characters (which would fail if Python
1874   2.10 were ever released, for example).
1876 * Add test_xapian_star.py to distribution - fixes failure of "test_import_star"
1877   testcase in pythontest.py.
1879 Xapian-bindings 1.0.21 (2010-06-18):
1881 Python:
1883 * xapian.BAD_VALUENO is now wrapped as a constant rather than variable which
1884   can't be written to. (ticket#297)
1886 * Fix cleaning of test directories to use "rm -rf" rather than "rm -f".
1888 * Add test to check that "from xapian import *" works.
1890 Xapian-bindings 1.0.20 (2010-04-27):
1892 Python:
1894 * Set PYTHONDONTWRITEBYTECODE=1 in the environment to prevent Python from
1895   generating .pyc files in srcdir for Python >= 2.6, and use a Bourne shell
1896   trap to delete them after running tests for older versions of Python.
1897   (ticket#315)
1899 Ruby:
1901 * configure: Fix typo so path to ruby is reported if Ruby < 1.8 is found.
1903 Xapian-bindings 1.0.19 (2010-04-15):
1905 Tcl:
1907 * tcl8/docs/index.html: Improve wording in a few places.
1909 Xapian-bindings 1.0.18 (2010-02-14):
1911 General:
1913 * Wrap new C++ API method Document::add_boolean_term().
1915 Ruby:
1917 * Generate entries in the Ruby rdocs for all classes which aren't documented
1918   because of Ruby-specific methods.  Fixes ticket#417.
1920 * Avoid absolute paths in the generated rdocs.
1922 Xapian-bindings 1.0.17 (2009-11-18):
1924 Packaging:
1926 * Improve RPM package summaries - the files are needed to *use* scripts as well
1927   as to develop them.  Use "Tcl" instead of "TCL" as the former is more
1928   conventional.
1930 Portability:
1932 * python/Makefile.am: Restore the "./" path to the sourced file
1933   libtoolconfig.tmp as ksh requires it.
1935 Java:
1937 * Fix memory leak when passing a MatchDecider to Enquire::get_mset().
1939 Xapian-bindings 1.0.16 (2009-09-10):
1941 Python:
1943 * Improved docstrings for QueryParser::set_default_op() and
1944   QueryParser::get_default_op() (automatically generated from changes in
1945   xapian-core).
1947 Xapian-bindings 1.0.15 (2009-08-26):
1949 Python:
1951 * Don't break long words when wrapping text in the generated API documentation
1952   comments as this was causing identifiers to be broken in two.
1954 Xapian-bindings 1.0.14 (2009-07-21):
1956 General:
1958 * configure: If $CSC is empty, don't try to run it.  This was a cosmetic bug
1959   and the only side-effect was an odd looking message.
1961 Python:
1963 * Rename methods at build-time using SWIG rather than a run-time in Python, as
1964   the latter approach adds a small time overhead when the module is being
1965   loaded.
1967 Ruby:
1969 * Fix to accept an integer value > MAXINT for a double parameter.
1971 Xapian-bindings 1.0.13 (2009-05-23):
1973 Packaging:
1975 * xapian-bindings.spec: Update C# packaging for rename of XapianSharp.so to
1976   _XapianSharp.so in 1.0.11.
1978 * xapian-bindings.spec: Update Tcl8 packaging for where we now install the
1979   bindings since 1.0.6.
1981 PHP:
1983 * Backport fix from SWIG SVN for misuse of formatted error function in
1984   SWIG-generated code.
1986 Python:
1988 * Change the SWIG-generated wrapper code so it doesn't attempt to acquire
1989   Python's Global Interpreter Lock (GIL) in situations where we know that it
1990   will already be locked.  This avoids some dead-locks with mod_python (due to
1991   mod_python bugs which are apparently unlikely to ever be fixed), and results
1992   in smaller wrappers which run a little faster (in tests with Xapian on x86-64
1993   Ubuntu 9.04, the stripped wrapper library was 11% smaller and ran 2.7%
1994   faster). (ticket#185)
1996 * README,python/docs/index.html: Update documentation of the above mod_python
1997   issue and also document the related mod_wsgi issue.  The status is now that
1998   everything seems to work if you stick to the main interpreter (ticket#364).
2000 * Backport fix from SWIG SVN for misuse of formatted error function in
2001   SWIG-generated code.
2003 * python/docs/examples/simplematchdecider.py: Read "avoid_value" from the
2004   second parameter, not the third.
2006 * python/docs/examples/simplematchdecider.py,
2007   python/docs/examples/simplesearch.py: Make use of str.join() for simpler,
2008   clearer code.
2010 Ruby:
2012 * README: Note that the testsuite fails due to a bug in the test/unit module in
2013   Ruby 1.9.0, but applications using the bindings should work, and that the
2014   testsuite works with Ruby 1.9.1.  Drop all mention of Ruby 1.6.x as that
2015   appears to be completely dead both upstream and in the wild.
2017 Xapian-bindings 1.0.12 (2009-04-19):
2019 Documentation:
2021 * INSTALL: Add a note about being able to pass variables to configure to pick
2022   which of several parallel installations of a language to build for.
2024 Python:
2026 * python/pythontest.py: Round the weights returned for the OP_SCALE_WEIGHT
2027   test to avoid failing due to rounding differences.
2029 * python/testsuite.py: Remove bare except: handlers from testsuite, so Ctrl-C
2030   stop the whole testsuite, not just the currently running testcase.
2032 Xapian-bindings 1.0.11 (2009-03-15):
2034 Documentation:
2036 * README: Note that 1.0.x doesn't (and isn't currently planned to) support
2037   Python 3, and possible current issues with Ruby 1.9.
2039 Portability:
2041 * Merge fixes from Cygwin Ports, so bindings should build out of the box on
2042   Cygwin.
2044 Python:
2046 * python/docs/examples/: Use str(obj) rather than obj.get_description() (the
2047   latter is deprecated, and support was removed in 1.0.0).
2049 * Add support for using the new name ("reverse") for the second argument of
2050   set_sort_by_key() and set_sort_by_value() and friends as a named parameter.
2051   The old name ("ascending") is still supported, but will be deprecated in
2052   1.1.0.
2054 * Keep Python references to Sorter, Stopper, and ValueRangeProcessor objects
2055   which get set on other objects to avoid segmentation faults if they go out
2056   of scope before the object they are set on does.  (ticket#341)
2058 Ruby:
2060 * Fixes for Ruby 1.9 compatibility (ticket#323).  The test harness currently
2061   fails so "make check" doesn't pass, but code using the bindings should work.
2063 Xapian-bindings 1.0.10 (2008-12-23):
2065 Python:
2067 * Need to clean testsuite.pyc from srcdir since that's where it gets generated
2068   as things stand (upstream fix for Debian bug 506090).
2070 Xapian-bindings 1.0.9 (2008-10-31):
2072 General:
2074 * configure: Add support for "--enable-quiet" like xapian-core and omega have.
2076 * Wrap new Database::metadata_keys_begin() and Database::metadata_keys_end()
2077   methods.
2079 Xapian-bindings 1.0.8 (2008-09-04):
2081 General:
2083 * configure: Report bug report URL in --help output.
2085 Python:
2087 * Fix mangling of exceptions thrown from Python subclasses of Xapian classes.
2088   (bug#289)
2090 * Fix memory leaks in the xapian.Query constructor.  (bug#294)
2092 Xapian-bindings 1.0.7 (2008-07-14):
2094 Documentation:
2096 * Document how all the database factory functions and library version functions
2097   are wrapped for all languages.
2099 General:
2101 * Fix to build against a xapian-core which has quartz and/or flint disabled.
2103 * The "program" version of Remote::open() has been wrapped for some time, so
2104   update the documentation which said it wasn't.
2106 Packaging:
2108 * xapian-bindings.spec: Remove "www." from xapian.org and oligarchy.co.uk URLs.
2110 Portability:
2112 * For Java, Python, and Ruby, use the libtool -shrext option to specify a
2113   different module extension rather than our own ugly bodge.
2115 Java:
2117 * Make passing string from Java to C++ zero-byte safe.  It doesn't appear to be
2118   simple to make C++ to Java work though.
2120 PHP:
2122 * Add test that OP_VALUE_GE works for PHP.
2124 Python:
2126 * Several corrections to the Python documentation.
2128 * configure: Fix problem with building under mingw.
2130 Ruby:
2132 * Include simplematchdecider.rb example.
2134 * smoketest.rb: Test the version reporting functions.
2136 Tcl:
2138 * Include simpleexpand.tcl example.
2140 * Fix where the Tcl module gets installed.
2142 * README: Note that Tcl 8.3 and earlier are no longer supported by upstream.
2144 Xapian-bindings 1.0.6 (2008-03-17):
2146 General:
2148 * Wrap OP_VALUE_GE and OP_VALUE_LE and the new Query constructor which they are
2149   used with.
2151 * configure: Correct the required SWIG version given in an error message.
2153 PHP:
2155 * php/smoketest.php: Add note that this script should be run using 'make check'
2156   in the build tree (rather than trying to copy it to a webserver as someone
2157   recently tried to).
2159 * php/smoketest.php: Fix to work under PHP4.
2161 Python:
2163 * The Python module now always has the extension which Python expects, which
2164   fixes a failure on Mac OS X.
2166 Ruby:
2168 * Automatically install/uninstall the Ruby rdoc-generated documentation along
2169   with the ruby bindings.
2171 Tcl:
2173 * configure: Sort out the default value of TCL_LIB, which could end up being
2174   under /usr/share in xapian-bindings 1.0.4 and 1.0.5.
2176 Xapian-bindings 1.0.5 (2007-12-21):
2178 General:
2180 * Wrap Xapian::Sorter and subclasses.
2182 * Wrap Enquire::set_sort_by_key(), Enquire::set_sort_by_key_then_relevance(),
2183   and Enquire::set_sort_by_relevance_then_key().
2185 * Factor out the code to protect multitarget rules against parallel make, and
2186   fix it to handle the source being changed while the rule is executing, and to
2187   correctly return an error code if we fail while trying to recover from the
2188   removal of a target of a multi-target rule.
2190 * configure: Improve the clarity of the error given when none of the tools
2191   needed for any supported language are found.
2193 * configure: SWIG 1.3.32 has now been released, so require at least this
2194   released version for maintainer builds.
2196 Java:
2198 * Add explicit '#include <cstring>' to fix build with the latest snapshots of
2199   GCC 4.3.
2201 * configure: Log the output of trying to compile conftest.java in config.log;
2202   if the test fails, report whether the failure was compiling or running the
2203   test program.
2205 * Check for directory existence rather than calling mkdir unconditionally as
2206   despite the "(ignored)", the error message seems to confuse some people.
2208 PHP:
2210 * Add feature test for XapianMultiValueSorter.
2212 * php/smoketest5.php: Fix use of Database_get_document to new style OO
2213   interface.  Fix the error reported when the PHP5 exception test fails.
2215 * php/smoketest.php: Add feature test to confirm that optional arguments to
2216   XapianQuery's "term" constructor are wrapped.
2218 Python:
2220 * Don't drop the GIL when calling Xapian.MSet.items and Xapian.ESet.items -
2221   these properties build a python list, so dropping the GIL isn't safe and
2222   may cause undefined behaviour in multithreaded environments.
2224 * configure: Update error message to reflect requirement for at least python
2225   2.2.
2227 * configure: Change "print foo" to "print(foo)" in python version checks, for
2228   compatibility with python 3.0.
2230 Ruby:
2232 * The Ruby bindings now work on Mac OS X (the Ruby module's extension was
2233   previously incorrect).
2235 * Run "rdoc" to generate HTML for the Ruby-specific API documentation which
2236   ruby/docs/index.html previously had a dead link to.
2238 Tcl:
2240 * configure: Overhaul code to find tcl.h since the old version no longer worked
2241   with Debian unstable.
2243 * tcl8/docs/index.html: Update documentation to cover flint and mention that
2244   quartz is now deprecated.
2246 * Remove code to handle `const char *' exceptions - as of 1.0.0 the QueryParser
2247   throws QueryParserError instead.
2249 Xapian-bindings 1.0.4 (2007-10-30):
2251 General:
2253 * Wrap new OP_SCALE_WEIGHT query operator, and corresponding Query constructor.
2254   Add feature tests for all languages.
2256 * The "bindings.html" file documenting each of the bindings has been renamed to
2257   "index.html".
2259 Packaging:
2261 * Fix the PHP Makefile.am to work with autoconf < 2.60 to fix RPM builds for
2262   older distros.
2264 Portability:
2266 * Fix warnings when compiling with GCC 4.2.
2268 PHP:
2270 * Update to newer SWIG SVN snapshot to fix memory leaks in wrapped constructors
2271   and methods/functions which return a wrapped class.
2273 * For PHP4, wrap Xapian::sortable_serialise() as xapian_sortable_serialise()
2274   and Xapian::sortable_unserialise() as xapian_sortable_unserialise().
2276 * Document how non-class functions are wrapped.
2278 * Fix wrapping of NumberValueRangeProcessor for PHP4.
2280 * smoketest.php: Split the regression test for bug#193 into separate
2281   versions for PHP4 and PHP5 as the previous version only worked for PHP5.
2283 Python:
2285 * python/docs/index.html: Promote the Pythonic iterators, and deprecate the
2286   non-pythonic iterators.  Make it clearer that the "sequence API" is
2287   deprecated.
2289 * Add test of a custom ValueRangeProcessor (ie, one written in python).
2291 * Update the examples to use the new-style attributes to access MSet item
2292   values rather than the old-style MSET_* constants.
2294 * Document MSET_DOCUMENT.
2296 Ruby:
2298 * smoketest.rb: Rename test of metadata access methods which had been named the
2299   same as the matchdecider test due to a copy-and-paste error.
2301 Xapian-bindings 1.0.3 (2007-09-28):
2303 General:
2305 * Wrap new methods Database::get_metadata() and
2306   WritableDatabase::set_metadata().
2308 * "make uninstall" now removes the loadable module we install for each of
2309   the bindings.
2311 * "make distcheck" now works.
2313 * Distribution tarballs are now in the POSIX "ustar" format since it saves
2314   about 40KB and we need to use it for xapian-core anyway.
2316 Packaging:
2318 * RPMs: Package xapian.php.
2320 CSharp:
2322 * Remove wrapper for ValueRangeProcessor::operator(), since it can't be
2323   usefully used currently.
2325 Java:
2327 * Remove wrappers for the Muscat36 backend, which has now been dropped from the
2328   C++ library.
2330 * "make clean" now removes the class files generated for inner classes.
2332 PHP:
2334 * Add feature test for DateValueRangeProcessor when used with QueryParser.
2336 * ValueRangeProcessor::apply() can now be called from PHP (bug#193).  This
2337   isn't actually very useful, since you can't subclass it in PHP currently.
2339 * Fixed wrapping of Enquire::set_cutoff() - previously this would only work
2340   if the third parameter was specified and a floating point number (e.g. 0.0).
2342 * php/docs/bindings.html: Fix errors in example code.
2344 Python:
2346 * ValueRangeProcessor::operator() is now wrapped as a __call__ method in
2347   Python which takes two strings and returns a 3-tuple (value_number,
2348   modified_begin, modified_end).  Previously this always failed with a
2349   type error, so this doesn't break existing code.
2351 * python/pythontest.py: Interpret any commandline arguments as a list of
2352   tests to be run (the default is to run all tests).
2354 * README,python/docs/bindings.html: Add a note about the problems with
2355   mod-python (as described in bug #185).
2357 * python/pythontest.py: Delete the database handles before deleting a database
2358   to fix problems running the Python tests on MS Windows (bug#179).
2360 * "make clean" now removes testsuite.pyc.
2362 Ruby:
2364 * Check for RUBY_INC, RUBY_LIB, and RUBY_LIB_ARCH in the environment or on
2365   the configure command-line.  The defaults for RUBY_LIB and RUBY_LIB_ARCH are
2366   now the site-specific directories, which is more correct when building
2367   from source.  Debian packages, etc can override this by setting RUBY_LIB and
2368   RUBY_LIB_ARCH.
2370 Tcl:
2372 * Check for TCL_LIB in the environment or on the configure command-line to
2373   allow installing without root access more cleanly.
2375 Xapian-bindings 1.0.2 (2007-07-05):
2377 Documentation:
2379 * Document use of PYTHON_LIB and PHP_EXTENSION_DIR instead of pylibdir and
2380   phpextdir.
2382 * Remove documentation of removed "--with-swig" configure option.
2384 General:
2386 * Add methods of NumberValueRangeProcessor for serialising and
2387   unserialising doubles.
2389 * Add methods and constants supporting spelling correction and synonyms.
2391 * Value of XAPIAN_CONFIG supplied to configure is now passed to distcheck,
2392   to ensure that it works with uninstalled copies of Xapian.
2394 * Value of PYTHON_LIB supplied to configure is now respected - previously
2395   it was documented, but ignored.
2397 * Add support for supplying PHP_EXTENSION_DIR to configure.
2399 * Change to using "%include", rather than reproducing contents of header
2400   files, for "queryparser.h", "document.h" and "postingiterator.h".
2402 * Add new form of get_mset() which allows a matchspy matchdecider to be
2403   set.
2405 * RPMs: Don't mention %makeinstall in a .spec file comment as that makes RPM
2406   explode.  Add in a missing "mv" in the command for installing tcl8
2407   documentation.
2409 CSharp:
2411 * Fix rule handling parallel make to include xapian_wrap.h
2413 PHP:
2415 * Install xapian.php as <PREFIX>/share/php<PHPMAJOR>/xapian.php.  There
2416   doesn't seem to be a standard location, but this works for Debian at
2417   least, and it seems better to at least try to install it.
2419 * Rename ValueRangeProcessor and subclasses and TermGenerator to have a Xapian
2420   prefix for PHP4.
2422 Python:
2424 * Fix a threading problem: the GIL was not being acquired in the exception
2425   handling code before setting the Python exception state, leading to
2426   various memory corruption symptoms in threaded programs.
2428 * Add special iterators to Database for synonyms, synonym_keys and
2429   spellings.
2431 * Add test cases for OP_VALUE_RANGE queries, getting spelling corrections,
2432   synonym iterators and spelling iterators.
2434 * In the test suite, expect_query() now adds "Xapian::Query(" and ")" around
2435   the expected description to make the tests more readable.
2437 Xapian-bindings 1.0.1 (2007-06-11):
2439 Documentation:
2441 * NEWS: Fix the recent headings which said "Xapian-core" to say
2442   "Xapian-bindings".
2444 General:
2446 * Wrap Xapian::Query constructor for creating ValueRange queries.
2448 * Wrap new forms of Xapian::Database::allterms_begin() and allterms_end()
2449   which take a prefix.
2451 Packaging:
2453 * RPMs: Use "make install" instead of %makeinstall to avoid doubled
2454   %{buildroot} prefix on most files which we then have to work around.
2456 CSharp:
2458 * SimpleIndex now uses Xapian.TermGenerator.
2460 * SimpleSearch now uses Xapian.QueryParser.
2462 * New SimpleExpand example.
2464 * Document explicitly how STEM_SOME constants are currently wrapped.
2466 * Update GetTermName() reference in documentation to GetTerm().
2468 * SmokeTest.cs: Update comment about Portable.NET bug - the bug is fixed in
2469   their CVS repo, and the fix should be in their 0.8.2 release.
2471 Java:
2473 * `configure --help' documented that environmental variable JNI_INCLUDE_DIR was
2474   looked at, but in fact its value was read but ignored.  We now use it as the
2475   first place to look for jni.h.
2477 * configure will now automatically add an extra "-I" for the
2478   linux/solaris/win32 subdirectory which Sun's JDK requires.
2480 * Document JAVA_HOME and JDK_HOME in ./configure --help and mark them as
2481   "precious" so their values are preserved for when configure is automatically
2482   rerun.
2484 PHP:
2486 * Enquire::get_mset(first, maxitems, omrset) now works for PHP5.
2488 * The PHP examples have been rewritten to be clearer and to make use of the
2489   new XapianTermGenerator class.
2491 Python:
2493 * Python examples now use xapian.QueryParser and xapian.TermGenerator.
2495 * Add support for prefix-restricted pythonic allterms iterators.
2497 * Update documentation in a couple of places to refer to updated replacements
2498   for MSetIterator.
2500 * Change testsuite output to be more vim-friendly (vim should be able to jump
2501   to the right lines now).
2503 * __str__ on Xapian::Error now includes extra information in some cases (the
2504   error_string and context, if they are set).
2506 * python/smoketest.py: Eliminate uses of the legacy sequence API.
2508 * python/pythontest.py: The legacy sequence API is only supported for Python
2509   2.3 and later, so don't run tests for it when running under Python 2.2.
2511 * We now generate and install xapian.pyo as well as xapian.pyc.
2513 Ruby:
2515 * The Ruby examples now use the Xapian::QueryParser and Xapian::TermGenerator
2516   classes.
2518 * Add missing rename for the C++ TermGenerator::set_document() method so it can
2519   be used as "tg.document = doc" in Ruby.
2521 * Fixed compilation on Mac OS X and warning from GCC on 32-bit Linux platforms.
2523 Tcl:
2525 * tcl8/docs/examples/simpleexpand.tcl: New example to demonstrate relevance
2526   feedback, based on C++ simpleexpand.cc.
2528 * tcl8/docs/example/simpleindex.tcl: New simpler example making use of the
2529   TermGenerator class.
2531 * tcl8/docs/example/simplesearch.tcl: New simpler example making use of the
2532   QueryParser class.
2534 * tcl8/docs/bindings.html: Document how constants are wrapped.
2536 * Update smoketest and examples to require version 1.0.0 - previously this
2537   required 0.9.6, which failed since TCL doesn't accept differing major
2538   version numbers.
2540 * pkgIndex.tcl is now generated by configure.
2542 Packaging:
2544 * The required automake version has been lowered to 1.8.3, so RPMs can now be
2545   built on RHEL 4 and SLES 9.
2547 Xapian-bindings 1.0.0 (2007-05-17):
2549 Documentation:
2551 * Document Unicode support for each language.
2553 * Assorted minor improvements and typo fixes.
2555 General:
2557 * Add wrappers for ExpandDecider, and Enquire::get_eset() variants which use
2558   it, for languages where SWIG supports directors.
2560 * Wrap new features: TermGenerator, ValueRangeProcessor hierarchy, the
2561   OP_VALUE_RANGE query operator, the new overloaded form of parse_query, which
2562   allows the "default_prefix" argument to be supplied, QueryParser flags
2563   FLAG_PURE_NOT and FLAG_PARTIAL.
2565 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
2567 * Remove wrappers for deprecated features removed from the C++ API (see
2568   docs/deprecation.html in xapian-core for full details and upgrade
2569   information).
2571 * Deprecate ESetIterator::get_termname() in favour of ESetIterator::get_term().
2573 * QueryParserError is now a real error, so remove special handling for "const
2574   char *" exceptions.
2576 * Use a stamp file in "make" rules with multiple targets so that parallel
2577   make works.
2579 * configure: Now quotes $PYTHON, etc so that you can specify a program with
2580   arguments.
2582 * configure: If the user specifies a program which doesn't exist (e.g.
2583   PYTHON=/opt/bin/ptyhon) don't autoprobe after failing to find it.
2585 * configure: Disable probes for f77, gcj, and rc completely by preventing
2586   the probe code from even appearing in configure - this reduces the size of
2587   configure by 28% and should speed it up significantly.
2589 * configure: If the version check against the xapian-core version detects a
2590   mismatch, we now issue a warning rather than a hard error since if you're
2591   careful this can work.  The warning is issued late on in configure, so it's
2592   harder for the user to miss.
2594 * configure: The --with-swig option has been removed.  It no longer has a
2595   purpose as we now ship the files which are generated by SWIG.
2597 Portability:
2599 * The PHP bindings can now be built with MSVC for Microsoft Windows.
2601 CSharp:
2603 * When using Mono 1.2, we must build with gmcs (the C# 2.0 compiler) rather
2604   than mcs to avoid segmentation faults at runtime due to unimplemented
2605   features in mcs.  Document this, and update configure to prefer gmcs.
2607 * The return type of MatchDecider::operator() is now `bool' rather than `int'
2608   (in line with the same change in the C++ API).
2610 * Xapian.Stem.StemWord() deprecated in favour of Xapian.Stem.Apply().
2612 Java:
2614 * The Java bindings have been updated to use C++ replacements for deprecated
2615   methods, so they still build.  The Java wrappers still provide the old
2616   deprecated names for now though.  The longer term plan is to replace the
2617   hand-written JNI with SWIG generated wrappers (work has now begun on this)
2618   which is likely to require some API changes, and it seems more sensible to
2619   make any changes to align with C++ API changes at the same time.
2621 * Enquire.getQuery() is implemented entirely in Java, so strip out the unused
2622   MyQuery mechanism, and so fix a memory link which it caused (bug#105).
2624 PHP:
2626 * Fix undefined behaviour in get_matching_terms().
2628 * Document the (existing) renaming of methods which are PHP reserved words
2629   (empty() to is_empty() and clone() to clone_object()).
2631 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
2633 Python:
2635 * The Python bindings now throw exceptions as classes with a hierarchy which
2636   mirrors that of the C++ Xapian::Error and its subclasses.  The xapian.Error
2637   base class inherits from the standard Python Exception class.
2639 * All Python methods which accept strings can now be passed either a unicode
2640   object or a simple string.  Strings are returned as simple strings: unicode
2641   input will be returned as utf-8 encoded output.  The documentation now
2642   contains a "Unicode" section.
2644 * The Python bindings should now be usable more efficiently from threaded
2645   Python applications since we now use SWIG's -threads option when generating
2646   them, so that the GIL is released during long-running Xapian operations
2647   (bug#137).
2649 * Most classes, methods, functions, etc now have docstrings which are either
2650   automatically extracted from the C++ documentation comments, or overridden by
2651   more appropriate versions.
2653 * Most of the Pythonic iterators now return an object instead of a sequence,
2654   which means they now lazily fetch the information which previously had to be
2655   fetched to put it in the sequence.  The old sequence API is supported for
2656   compatibility, but is scheduled for removal in Xapian 1.1.0.
2658 * Those Python iterators which have skip_to() methods now return the item
2659   skipped to, and next() will return the following item.  Previously, they
2660   returned None, and next() returned the item skipped to.  Several bugs in the
2661   skip_to() wrappers were fixed.
2663 * Because of the lazy access, some objects returned by iterators will raise
2664   an error if the lazy evaluation happens after the iterator has moved on
2665   (since the underlying Xapian API doesn't allow efficient access to the
2666   information in this situation).  The exact semantics are defined in the
2667   docstrings for each iterator.
2669 * Those Pythonic iterators which return only a list of terms now return
2670   simple strings, instead of a sequence or an object containing the term.  This
2671   is an incompatible change with earlier releases.  The affected iterators are
2672   Enquire.matching_terms, Query.__iter__, QueryParser.stoplist and
2673   QueryParser.unstemlist.
2675 * The contents of an MSet can now be iterated in the standard Python way.
2676   The iteration will return MSetItem objects.  The __contains__ and __getitem__
2677   methods are also implemented, allowing the "in" and [] operators to work.
2678   MSet.__getitem__ is a synonym for MSet.get_hit.
2680 * MSet.get_hit() now returns an MSetItem object instead of an MSetIterator,
2681   so that lazy access to its attributes is supported.  MSetItem has some
2682   deprecated methods which mimic the MSetIterator interface to allow old code
2683   to work without modification until release 1.1.0.
2685 * MSetItem provides access to the collapse_key and collapse_count, which
2686   weren't accessible from the sequence returned by the iterators before this
2687   release.
2689 * Out-of-range access to MSets will now raise an IndexError - it used to
2690   cause undefined behaviour (usually a crash).
2692 * The Python testsuite is now much more extensive, and supports colour output
2693   and verbosity levels, much like the C++ testsuite.  Tests of deprecated
2694   features are separated out, so that they can easily be removed when the
2695   features are removed.  The Python tests currently focus mainly on Python
2696   specific iterators and related functionality - general Xapian behaviour is
2697   tested by the C++ testsuite.
2699 * The pure Python code in the bindings now uses new-style classes, since we
2700   have required Python >= 2.2 since Xapian release 0.9.9.
2702 * Enquire.get_matching_terms is now deprecated - use Enquire.matching_terms
2703   instead.
2705 * The get_description() method which many classes support has been deprecated
2706   in favour of new more pythonic __str__ methods, so that the str() builtin can
2707   be used.  get_description() is deprecated and scheduled for removal in 1.1.0.
2709 Ruby:
2711 * We no longer regard the Ruby bindings as "beta quality", so remove the
2712   warning from their documentation.
2714 * Document that that C++ operator() becomes the method "call" in Ruby.
2716 * Don't read termfreq in safe wrapper for Document::termlist_begin().  Don't
2717   read wdf in safe wrapper for Database::allterms_begin() (bug#133).
2719 Tcl:
2721 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
2723 Xapian-bindings 0.9.10.1 (2007-04-04):
2725 PHP:
2727 * Fix PHP5 class wrapper generation in a few cases for overloaded methods with
2728   default parameters.  The most notable case was a missing Query constructor
2729   which meant that QueryParser was unusable.
2731 * Fix compilation of the PHP4 bindings with ZTS-enabled versions of PHP
2732   (which mostly seems to mean the MS Windows version).
2734 * Fix PHP5 crash on exit with ZTS-enabled versions of PHP (which mostly
2735   seems to mean the MS Windows version).
2737 * Add note to the documentation that PHP examples are written for CLI version
2738   of PHP, but that the bindings work with any version.
2740 * Add check to all PHP examples that they are being run under a CLI version of
2741   PHP.
2743 Python:
2745 * simpleexpand.py: Print each term's expand weight as a floating point value,
2746   not an integer.
2748 Ruby:
2750 * INSTALL: document how to install Xapian's Ruby bindings in your home
2751   directory.
2753 Xapian-bindings 0.9.10 (2007-03-04):
2755 Java:
2757 * Under Mac OS X, automatically look in the standard location for jni.h,
2758   and automatically rename the JNI library we build to ".jnilib", as is
2759   required by the OS X JVM.
2761 * java/README: Note success with Sun's JDK 1.5.0_06-b05, plus the requirement
2762   to add the linux header directory to the include path when using this JDK.
2764 * Add missing default constructor for RSet class - it's not much use without
2765   this!
2767 * Fix Enquire.getESet() to actually work.
2769 * Fix bug in ESetIterator.hasNext().
2771 * Fix MatchDecider and ExpandDecider so subclassing in Java actually works.
2773 * Fix memory leak with some JVMs in the "Query from array" constructor.
2775 * Fix memory leak in Enquire.setQuery().
2777 * SmokeTest.java: Add regression tests for RSet default constructor,
2778   Enquire.getESet(), ESetIterator.hasNext(), MatchDecider, ExpandDecider.
2779   Add feature tests for Enquire.getQuery(), and to make sure we get passed
2780   the right document in a java subclass of MatchDecider.
2782 * configure: Look for jni.h in $JAVA_HOME/include and $JDK_HOME/include if the
2783   respective variables are set.
2785 PHP:
2787 * Update the documentation to fix out-of-date information and document the
2788   differences between the PHP4 and PHP5 wrappers.
2790 * Update the examples to use the new Object Oriented API, and provide versions
2791   for both PHP4 and PHP5.
2793 * Add a "simpleexpand" example.
2795 * For PHP4, Xapian::DB_CREATE_OR_OPEN should be wrapped as
2796   Xapian_DB_CREATE_OR_OPEN not DB_CREATE_OR_OPEN, so wrap it with the
2797   new name, but keep the old name for now for backward compatibility.
2799 * configure: Try `$(PHP_CONFIG) --php-binary` when looking for a PHP
2800   interpreter - this works with PHP5.
2802 * configure: Remove the sanity check for PHP_EXTENSION_DIR added in Xapian
2803   0.9.8 - if Xapian is the first PHP extension to be installed, the extension
2804   directory may not exist and "make install" will create it.
2806 * configure: If zend.h isn't found and configure was run with "--with-php",
2807   exit with an error rather than automatically disabling PHP support.
2809 Python:
2811 * Fix a problem which preventing building for Python 2.5 on 64 bit platforms.
2813 Packaging:
2815 * RPMs: Add support for passing "--without python" to rpmbuild.  Document the
2816   various "--without" options in a comment at the start of the .spec file.
2818 * RPMs: Remove "." from the end of the Summary.
2820 Xapian-bindings 0.9.9 (2006-11-09):
2822 Documentation:
2824 * Ship our custom INSTALL file rather than the generic one from autoconf which
2825   we've accidentally been shipping instead since 0.9.5.
2827 General:
2829 * Wrap Flint::open() and Flint::open_writable().
2831 * configure: Require SWIG 1.3.30 (1.3.30 isn't out yet, but 1.3.30rc1 is
2832   suitable).
2834 Python:
2836 * Generate the bindings using SWIG 1.3.30rc1 which fixes a build error on 64
2837   bit platforms with Python 2.5.
2839 Packaging:
2841 * RPMs: Prevent binaries getting an rpath for /usr/lib64 on FC6.
2843 * RPMs: The Python bindings now require Python >= 2.2.
2845 Portability:
2847 * configure: Remove unnecessary backticks from tclsh version test.
2849 Xapian-bindings 0.9.8 (2006-11-02):
2851 General:
2853 * Wrap the "prog" form of Remote::open() (which is suitable for general purpose
2854   use as of 0.9.7) and the Remote::open_writable() methods (new in 0.9.7).
2856 * The C++ method QueryParser::parse_query() current throws "std:string"
2857   exceptions if there's a parse error.  Previously the bindings didn't catch
2858   these.  Now we catch them and handle them as if they were exceptions of
2859   type Xapian::QueryParserError (in anticipation of this changing in
2860   xapian-core).  Added testcases for this for PHP, Python, and C#.
2862 * configure: Note that SWIG is only useful for Xapian developers in --help
2863   output.
2865 * configure: If we failed to find any languages to build for, give a more
2866   helpful message.
2868 CSharp:
2870 * SmokeTest.cs: Fix warning about unused variable in OP_ELITE_SET check.
2872 Java:
2874 * configure: Fix check for jni.h in /usr/lib/jvm/java-gcj/include to actually
2875   work rather than using the cached failure of the first jni.h check.
2877 * SmokeTest.java: Fix check for value of Query.OP_ELITE_SET.
2879 * SmokeTest.java: Avoid gcj "set but not used" warning.
2881 PHP:
2883 * configure: Sanity check PHP_EXTENSION_DIR and PHP_INC.
2885 * smoketest4.php,smoketest5.php: Check the exception message given by the
2886   DocNotFoundError testcase.
2888 Python:
2890 * Drop support for Python 2.1.
2892 Xapian-bindings 0.9.7 (2006-10-10):
2894 Documentation:
2896 * NEWS: Fix the recent headings which said "Xapian-core" to say
2897   "Xapian-bindings".
2899 General:
2901 * Specify required automake version in the call to AM_INIT_AUTOMAKE in
2902   configure.ac.
2904 * If we're building with GCC 4.0 or higher, pass -fvisibility=hidden when
2905   compiling SWIG generated code which makes the compiled modules a few percent
2906   smaller and perhaps a little faster.
2908 * Wrap the newly implemented transaction API.
2910 * configure: Use "-fno-strict-aliasing" when compiling all the SWIG bindings
2911   (this option was supposed to be used to compile the Python bindings from
2912   0.9.3 onwards, but this wasn't actually working correctly).
2914 * Use CVS snapshot of SWIG to generate files (fixes bugs #83, #85).
2916 * In maintainer-mode, "make clean" now removes the SWIG generated files
2917   which would otherwise only be removed on "make maintainer-clean".
2919 CSharp:
2921 * Xapian::MatchDecider can now be subclassed in C#.
2923 * The value of OP_ELITE_SET was wrong in C# which caused an error if you tried
2924   to use it.  This has been fixed and a regression test added.
2926 * SmokeTest.cs: Added exception handling test.
2928 Java:
2930 * Correct two misuses of delete to delete[].  Fixes bug#78.
2932 * configure: We need to look for jni.h in /usr/lib/jvm/java-gcj/include on some
2933   Debian and Ubuntu boxes at least.
2935 PHP:
2937 * We now generate class wrappers for PHP5.
2939 * We now generate proxy classes for PHP4, which is an incompatible change
2940   from previous versions of xapian-bindings.  A perl script to upgrade
2941   your scripts is included.
2943 * smoketest.php:
2945   + Now that we're throwing PHP exceptions with PHP5 we need separate versions
2946     of the exception handling test for PHP4 and PHP5.  Fixes bug#76.
2948   + Rely on xapian.php to load the extension module for us.
2950   + Fix error messages to show PHP code, not Python code.
2952 * When running smoketest.php, pass the "-q" option to php, which suppresses
2953   HTTP header output for PHP < 4.3 and is ignored for compatibility by more
2954   recent versions of PHP.
2956 * configure: Fix typo - PHP_tried should be PHP_found.  This might have caused
2957   the PHP interpreter not to be found in some cases when it was actually
2958   available, but it's only used to run the smoketest not for building the
2959   bindings.
2961 Python:
2963 * configure: Fixed check for PYTHON_PATHSEP to use $PYTHON rather than python,
2964   and also report the check and its result to the user.
2966 * python/Makefile.am: xapian.pyc can't be generated until _xapian.la has been
2967   built, so add an explicit dependency so that this works reliably in parallel
2968   builds.  Fixes bug#77.
2970 * In examples and documentation, don't call the MatchDecider class/object
2971   "matcher", since we use the term "matcher" to mean something else in
2972   the library documentation.
2974 * smoketest.py:
2976   + Add test of exception handling.
2978   + Add test that MatchDecider can be subclassed successfully.
2980 * Wrap TermIterator::skip_to() so that it can be used from the TermIter
2981   pythonic iterator class.
2983 Ruby:
2985 * Xapian::MatchDecider can now be subclassed in Ruby.
2987 * configure: Look for ruby interpreter as "ruby1.8" since it's called that
2988   (with no "ruby" alias) on Ubuntu dapper at least.
2990 * simplesearch.rb: Lowercase terms before stemming.  "First ten" is inaccurate
2991   since we may have less than 10 matches, so say "1-<N>" instead.
2993 * simplematchdecider.rb: Implemented.
2995 Tcl:
2997 * Implement saner exception handling for Tcl and document it.
2999 * smoketest.tcl:
3001   + Add check that xapian::Query_OP_ELITE_SET has the right value.
3003   + Rework how the smoketest gets run to eliminate special code for using
3004     uninstalled bindings from smoketest.tcl itself.  This allows the smoketest
3005     to be run using installed bindings, and also makes it a better example
3006     program.
3008   + Add test for exception handling.
3010   + Send error messages to stderr.
3012   + Add comment about Tcl storing zero bytes as \xc0\x80.
3014 * simpleindex.tcl,simplesearch.tcl: Print $errorCode in the exception handler.
3016 * For SVN snapshots, remove any _svn6789 suffix from the Xapian version number
3017   used for the Tcl bindings.
3019 Xapian-bindings 0.9.6 (2006-05-15):
3021 Documentation:
3023 * INSTALL: Add section describing how to install without root access.
3025 General:
3027 * Updated to reflect the renaming of Xapian::xapian_version_string and
3028   companions to Xapian::version_string.
3030 * Wrap optional length parameter to Enquire::set_query().
3032 * In PHP, Python, and Tcl bindings, rename get_document_id to get_docid for
3033   consistency.  Keep get_document_id as an alias for now for backward
3034   compatibility.
3036 * Fixed ESet::empty() to return bool instead of Xapian::termcount (this was
3037   probably a largely harmless error).
3039 * Stop SWIG from adding exception handling wrappers to the calls which return
3040   version strings, since they can't throw exceptions.
3042 * xapian.i: Removed superfluous "const" from return type "docid" which is just
3043   a typedef for an unsigned integer type.
3045 * configure: Add some missing "checking ..." messages so the user has more idea
3046   what is going on.
3048 * Language specific util.i files can now define
3049   XAPIAN_TERMITERATOR_PAIR_OUTPUT_TYPEMAP and
3050   XAPIAN_MIXED_VECTOR_QUERY_INPUT_TYPEMAP to indicate which optional typemaps
3051   are provided for each language.  This avoids needing to keep this
3052   information in two different places.
3054 * xapian.i: Uncomment commented-out parameter names and fix duplicate
3055   parameter names (for the benefit of bindings which use the parameter names,
3056   like the OO PHP5 patch for SWIG I'm working on...)
3058 Portability:
3060 * configure: Fix warning flags passed for Intel C++ compiler.
3062 CSharp:
3064 * We now support building with Portable.NET.
3066 * Note that the passing of strings from C# into Xapian and back isn't currently
3067   zero byte safe.  If you try to handle string containing zero bytes, you'll
3068   find they get truncated at the zero byte.
3070 * C# bindings now build and pass tests when srcdir != builddir.
3072 * In configure.ac, the "#" in "C#" seems to sometimes confuse autoconf so
3073   always say "CSharp" instead.
3075 * Not all machines are set up to run compiled C# programs when invoked
3076   directly, so get configure to check if we can, and otherwise see if using
3077   mono or ilrun works.  If not, just skip the C# tests.
3079 * configure: If "mcs" isn't found, we now look for a CSharp compiler as "gmcs"
3080   (alternative name for "mcs"), "cscc" (Portable.NET), and then "csc"
3081   (Microsoft, but we check it isn't the unrelated Chicken csc program.)
3083 * Move the C# specific %rename list to csharp/util.i.
3085 * Store the strong name key in the key container so we reuse it for later
3086   builds.
3088 * Wrap the version functions as more sensible names and document them (and
3089   continue to provide the older undocumented names for now just in case anyone
3090   was using them.)
3092 * Set the version of XapianSharp.dll correctly when building a snapshot from
3093   SVN and set informational attributes (which e.g. MS Windows Explorer shows.)
3095 * SmokeTest.cs: Add test of version functions.
3097 Guile:
3099 * The Guile bindings don't work and aren't being actively worked on, so we're
3100   no longer including them in the distributed tarball to avoid disappointing
3101   users who notice a "guile" subdirectory.  It also makes the download smaller.
3103 Java:
3105 * Simplify (and improve portability of) run-java-test by using "libtool
3106   --mode=execute"'s -dlopen option.
3108 * Need to make sure "built" subdirectory exists or building from clean fails.
3110 * Fix "make check" to work when srcdir != builddir.
3112 PHP:
3114 * Using "php -c myphp.ini" still loads the system php.ini (at least for PHP
3115   4.3.10), so use "php -n" and then set the options we specifically want using
3116   "-d".
3118 * Fix the smoketest invocation to work better when srcdir != builddir.
3120 * Look for PHP interpreter first in prefix given by "php-config --prefix".
3122 * Fix SWIG_RuntimeError to be handled as an exception in PHP5.
3124 * simplesearch.php: MAX_PROB_TERM_LENGTH isn't used here so remove it.
3126 * smoketest.php:
3128   + Add test for version reporting functions
3130   + If a test fails, say which one to aid debugging.
3132   + Added simple test that zero-bytes are handled correctly when passing
3133     strings to and from Xapian.
3135 Python:
3137 * README: Note that Python bindings have been built with MSVC.
3139 * Install xapian.py and xapian.pyc as _DATA not _SCRIPTS because we don't want
3140   to make them executable (they don't have a #! line).
3142 * simplematchdecider.py: Rename confusingly-named "mymatcher" to
3143   "mymatchdecider".  Add description of what this example does.
3145 * simpleexpand.py: Don't define MAX_PROB_TERM_LENGTH as it isn't used.
3147 * smoketest.py: Added simple test that zero-bytes are handled when passing
3148   strings to and from Xapian.
3150 Ruby:
3152 * Added new Ruby bindings from Paul Legato.
3154 Tcl:
3156 * smoketest.tcl:
3158   + Add test for version reporting functions
3160   + If a test fails, say which one to aid debugging.
3162   + Added simple test that zero-bytes are handled correctly when passing
3163     strings to and from Xapian.
3165 Xapian-bindings 0.9.5 (2006-04-08):
3167 Documentation:
3169 * HACKING,README: Split off HACKING to contain information which is only
3170   relevant to those wishing to modify the bindings.
3172 General:
3174 * SWIG-based bindings are now built with SWIG 1.3.29.
3176 * configure: Report which languages we're building bindings for just before
3177   configure finishes.
3179 * xapian.i: Make the stub definitions for disabled backends static.
3181 * configure: Don't quote $PHP in AC_PATH_PROGS to avoid "checking for ... no"
3182   message.
3184 * xapian.i: Wrap new method Enquire::set_sort_by_relevance_then_value().
3186 Packaging:
3188 * RPMs: xapian-bindings.spec.in: Use "%{_libdir}" instead of "/usr/lib" for
3189   Python bindings to support 64 bit systems.
3191 * RPMs: Package the C# bindings.
3193 Portability:
3195 * java/run-java-test: Fix to work on platforms where LD_LIBRARY_PATH has a
3196   different name.
3198 * configure: Detect Intel's C++ compiler and set suitable warning flags to
3199   avoid noise from compiling generated code.
3201 CSharp:
3203 * Rename Database::GetDoccount() to Database::GetDocCount() for consistency.
3205 Guile:
3207 * configure: Disable --with-guile since Guile support doesn't currently work.
3209 Java:
3211 * Override deprecation warnings for Xapian methods/functions/etc.
3213 * SmokeTest.java: Write a helpful diagnostic to stderr if a check fails so we
3214   have some idea what went wrong!
3216 * Rework how we include headers to get hash_map to avoid compiler warnings
3217   since it's usually not in the std namespace nowadays.
3219 * Previously the "all" target also ran the "install" target, but this has
3220   proved very problematic, so change "make check" to use the uninstalled JNI
3221   glue library, and update the instructions to say that "make install" is now
3222   required.
3224 * Use JAVA_PATHSEP when specifying the classpath for compiling .java files to
3225   .class files.
3227 * README: Note that some platforms need "-pthread" or similar flags.
3229 * Add a new Query constructor wrapper which take an OP_xxx and an array of
3230   Query objects.
3232 * Compiling a .java file to a .class file now deletes the .jar file to ensure
3233   it gets updated.
3235 PHP:
3237 * php -n avoids reading any php.ini, but the compiled in default may be to
3238   enable the dubiously named "safe_mode" which prevents dl() being used so
3239   "make check" fails.  So instead provide a very simple php.ini which turns off
3240   safe_mode and makes sure enable_dl is on.
3242 * Fix handling of bool parameters when resolving overloaded methods and/or
3243   default arguments.  This fixes Enquire_sort_by_value() to work when the
3244   second argument is specified.  Added regression test for this case.
3246 * simpleindex.php: Lowercase terms before stemming.  Fixes bug#73.
3248 * Fix segmentation fault when PHP "Null" is passed where C++ wants an object
3249   passed by reference.  Fixes bug#74.
3251 * simpleindex.php: Flushing after every call to WritableDatabase_add_document
3252   isn't required and will kill performance, so stop doing it.  Fixes bug#75.
3254 Python:
3256 * Use the fairly new "swig -O" option for the "modern" python bindings as
3257   it generates a smaller glue library and runs faster.  Some of the features
3258   enabled also work on python 2.1, so enable these for the "olde" bindings.
3260 * configure: Catch the case where the user has python installed but not the
3261   module "distutils.sysconfig" and explain that they probably need to install a
3262   python-dev or python-devel package.
3264 * "make check" now works in VPATH builds.
3266 * smoketest.py: If a check fails, write a diagnostic message to stderr so we
3267   know which check it was!
3269 * smoketest.py: catch Exception objects and print them.
3271 * smoketest.py: Add feature tests for the various pythonic iterator
3272   wrappers
3274 * python/docs/bindings.html: Document the Pythonic iterators.
3276 * Fix TermIter not to try to read termfreqs or positions if they aren't
3277   meaningful for the current TermIter.
3279 Xapian-bindings 0.9.4 (2006-02-21):
3281 Documentation:
3283 * COPYING: Updated FSF address.
3285 General:
3287 * Wrap Stopper::get_description().
3289 * Wrap xapian_version_string() and related functions.
3291 Portability:
3293 * If we're overriding MACOSX_DEPLOYMENT_TARGET then override it for commands
3294   run from "make" too.
3296 PHP:
3298 * Fix so that generated code compiles with ZTS-enabled PHP (which is the
3299   default on Windows).
3301 Python:
3303 * smoketest.py: Test wrapping of xapian_version_string() and related functions.
3305 Xapian-bindings 0.9.3 (2006-02-16):
3307 Documentation:
3309 * README: Updated and expanded (now covers supported platforms, and lists
3310   criteria which bindings for an additional language need to fulfil before
3311   we're likely to accept them).
3313 * INSTALL: Updated and improved.
3315 * TODO: Move C#-specific TODO to top level so we can track to-do items for
3316   all languages.
3318 General:
3320 * configure: Change how the user selects which bindings to build.  If no
3321   --with* arguments are passed, then we default to building bindings we detect
3322   the required tools for (as before).  But instead of requiring the user to
3323   deselect all bindings they don't actually want, we now let them select the
3324   bindings they do want.  So "./configure --with-python" will only build the
3325   python bindings (and will fail if the required tools aren't installed).
3327 * Every wrapped method contains exception handling code.  The bulk of this
3328   is now factored out into a single helper function, which cuts the compile
3329   time by around a factor of 3 and halves the size of the stripped library
3330   (figures are for Tcl on x86_64).
3332 * configure: Rework how XAPIAN_CXXFLAGS is passed through so that the user can
3333   override CXXFLAGS in the make invocation like so: make CXXFLAGS=-g
3335 * configure: Bump required SWIG version to 1.3.28 and drop the special
3336   requirement for 1.3.22 for PHP (hurrah!)  Note that you don't need
3337   SWIG to install the bindings - SWIG is run by the Xapian developers
3338   so these updated requirements are only relevant if you want to modify
3339   the bindings.
3341 * Eliminate separate Makefile in each examples subdirectory, which makes the
3342   build system simpler, smaller, and a little faster.
3344 * xapian.i: Include default constructors for all classes so that SWIG knows it
3345   doesn't have to use SwigValueWrapper for them, which makes the bindings code
3346   a bit smaller and faster.  Also stop SWIG using SwigValueWrapper for
3347   std::pair<...>.
3349 * configure: Document special environmental variables which configure
3350   recognises.  Enhance handling of environmental variables so you can
3351   e.g. './configure PYTHON=python23' (previously you had to give a full
3352   path in such environmental variables or they would be ignored.
3354 Packaging:
3356 * RPM spec file:
3358   + Automatically detect the python version.
3360   + Rename "php4" references to "php".
3362   + Automatically detect the PHP extension directory.
3364   + Relax Tcl requirement to >= 8.1, since that's what we actually require.
3366   + Add support for "--without php" and --without tcl8" options to rpmbuild.
3368 Portability:
3370 * configure: On Mac OS X, ensure MACOSX_DEPLOYMENT_TARGET is set to at least
3371   10.3.  This is required to link the bindings, and it doesn't seem to be
3372   possible to link them on 10.1 or 10.2 anyway.
3374 * configure: Add -lstdc++ to XAPIAN_LIBS if we're using GCC.  OpenBSD needs it
3375   to be explicitly specified and libtool correctly handles platforms where it
3376   would have been implicitly linked with anyway.
3378 * Try to enable PHP bindings to build out of the box on cygwin (needs testing).
3380 * configure: Add missing ";;" on the last alternative in some case statements.
3382 * Only pass -no-undefined on platforms where it is required in order to link a
3383   shared library at all (it causes problems on Mac OS X in some cases).
3385 CSharp:
3387 * This release includes a lot of improvements for the C# bindings.  They're
3388   now pretty much on a par with the other language bindings.
3390 * Added documentation and examples.
3392 * Method and function names are now renamed to match C# conventions
3393   (e.g. from get_description() to GetDescription()).  This is obviously an
3394   incompatible change, but the C# bindings haven't been suitable for real world
3395   use prior to this release.
3397 * Optional parameters are now wrapped so no longer need be specified
3398   explicitly.
3400 * Overload ++ and -- for iterators.
3402 * Overload == and != for iterators.  Now comparisons with the end iterator
3403   work as expected, and SmokeTest passes.
3405 * SmokeTest now reports exceptions verbosely.
3407 * Xapian::InMemory::open() is now wrapped as Xapian.InMemory.Open(), and
3408   similarly for other database factory functions.
3410 * Heed compatibility warnings from mcs and use different forms for
3411   command-line switches to the C# compiler (presumably for compatibility with
3412   Microsoft's compiler, though the warnings don't actually say that
3413   explicitly).
3415 Guile:
3417 * Rewrote guile/util.i.  The old version caused SWIG warnings and wasn't
3418   zero-byte safe.  The guile bindings are still a long way from actually
3419   working though.
3421 Java:
3423 * Wrap optional second parameter (query length) to Enquire::set_query().
3425 * configure now probes for the Java path separator, which we then use to
3426   separate entries in the java -classpath command line option so we can
3427   build on platforms where it isn't ":".
3429 * SmokeTest.java: Expand to test more features.
3431 * java/README:
3433   + Note that the bindings work with the Eclipse javac and GIJ 4.0.1.
3435   + Add note about how wrapped methods are named.
3437 * Query.java: OP_* code 9 no longer exists, so add it to those rejected by the
3438   validity check.
3440 * Query.java: Comment out unused code.
3442 * Fixed memory leak in Query-from-array-of-strings constructor.
3444 * Eliminate the "_errormap" hashmap - we don't need to use RTTI here, since
3445   Xapian::Error subclasses can tell you their typename directly (using
3446   get_type()).
3448 PHP:
3450 * Some problems with overloaded methods in PHP have been fixed by a major
3451   overhaul of SWIG's PHP support.  So we no longer rename such methods
3452   for PHP.  This is an incompatible change, but it's easy to update your
3453   PHP scripts (just change new_Query_from_term_pair -> new_Query, etc).
3455 * Previously the documentation and simpleindex.php suggested that you
3456   should call delete_CLASS().  This was incorrect and resulted in a
3457   double-free() in some cases, so we've fixed the documentation and
3458   examples and eliminated the delete_CLASS() wrappers.  This is another
3459   incompatible change, but again easy to update for.
3461 * We now support PHP5 as well as PHP4, so the configure test now looks
3462   for either and all references to "PHP4" or "php4" have been adjusted.
3464 * PHP5 supports exceptions, so throw exceptions under PHP5.  For PHP4
3465   we now handle DocNotFoundError and FeatureUnavailableError by issuing a
3466   warning and making the method return "Null".  This isn't ideal, but it's
3467   the best we can easily do without proper exceptions.
3469 * For the smoketest, instead of using "$(PHP) -c $(srcdir)" and having an
3470   empty php.ini in srcdir (which we were failing to distribute anyway), use
3471   "$(PHP) -n" which tells PHP not to use any php.ini file.
3473 * Update PHP documentation to include new features.
3475 * Redo Xapian section in phpinfo() to look more like most other modules.
3477 * You can now construct a Query object from an array of strings or Query
3478   objects (or even a mixture).
3480 * PHP examples now give a more useful error message if a database can't be
3481   opened.
3483 * smoketest.php: Expanded the tests performed, including feature tests for
3484   the new Query-from-list constuctor.
3486 * simplesearch.php: Use newly wrapped Query-from-list constructor.
3488 * Use std::string::data() instead of c_str() as it may be more efficient for
3489   some STL implementations.
3491 * Enquire::get_matching_terms() now generates the PHP list directly from the
3492   TermIterator rather than constructing a temporary C++ std::list, which is
3493   faster and requires less temporary memory.
3495 Python:
3497 * The Python constructor xapian.Query(OP, LIST_OF_STRINGS [, PARAM]) works
3498   once again (it has been broken since 0.9.0).  Added a regression test to
3499   help keep this working.
3501 * Enhance the above constructor to accept any Python sequence (e.g. a tuple
3502   instead of a list).  Also the sequence can contain xapian.Query objects or
3503   strings or a mixture.  Documented these enhancements.
3505 * smoketest.py: Expanded the tests performed.
3507 * Convert C++ strings to python ones in a zero-byte clean way.
3509 * Added more error checking of the results of calls into the python
3510   interpreter.
3512 * If using GCC, compile the python bindings with -fno-strict-aliasing (python
3513   itself is compiled with this option to avoid problems and it appears we ought
3514   to use it too to avoid the risk of hitting the same problems, although I'm
3515   not aware of anyone actually encountering such problems).
3517 * When making xapian.pyc, "import _xapian;" before we "import xapian;" to
3518   avoid creating a broken xapian.pyc is the shared library can't be loaded for
3519   some reason.
3521 * Enquire::get_matching_terms() now generates the Python list directly from the
3522   TermIterator rather than constructing a temporary C++ std::list, which is
3523   faster and requires less temporary memory.
3525 Tcl:
3527 * Terms with a leading underscore now work (thanks to changes in SWIG).
3529 * Implement custom typemaps for Tcl, so that you can now construct a Query from
3530   a list of Query objects and/or strings, and Enquire::get_matching_terms is
3531   now wrapped.
3533 * simplesearch.tcl: Use the new Query from list constructor.
3535 * simplesearch.tcl: Fix to lowercase and stem query terms.
3537 * simpleindex.tcl: Tweak regex to not tokenise "foo--bar" as "foo-" and "bar".
3539 * simpleindex.tcl,simplesearch.tcl: Need explicit "xapian::" on constants.
3541 Xapian-bindings 0.9.2 (2005-07-15):
3543 General:
3545 * Added wrappers for new optional flags argument to QueryParser::parse_query().
3547 CSharp:
3549 * Enhance configure to check that "mcs" is actually GNU Mono mcs and not
3550   another tool with the same name.
3552 Java:
3554 * Include SmokeTest.java in the distribution so "make check" works.
3556 * Added success report for Sun java 1.4.1_01a.
3558 Python:
3560 * When converting a python list to vector<string> we know the number of elements
3561   so reserve that number in the vector.
3563 Xapian-bindings 0.9.1 (2005-06-06):
3565 General:
3567 * Releases are now created using libtool 1.5.18 and automake 1.9.5.
3569 Tcl:
3571 * Updated documentation to include information from Michael Schlenker about how
3572   to delete a database object such that the destructor gets called.
3574 Xapian-bindings 0.9.0 (2005-05-13):
3576 General:
3578 * Updated SWIG-based bindings to latest Xapian API
3580 * Improve support for building the bindings on MS Windows:
3582   + Provide stub versions of any backend functions which are disabled in the
3583     library we're wrapping to avoid a link failure on MS Windows (where the
3584     remote backend is automatically disabled).  These stubs just throw
3585     Xapian::FeatureUnavailableError.
3587   + Add -no-undefined to *_la_LDFLAGS.
3589   + Use $(PATH_SEPARATOR) or Python's os.pathsep instead of ':' where
3590     appropriate.
3592   + For python, paths for finding headers and installing libraries are now
3593     handled so they work on MS Windows; an extra static library needs to be
3594     linked in too.
3596 * Wrap the Muscat36 Database factory functions (easy to do now we have stubs
3597   for disabled backends).
3599 * Don't wrap MSet::max_size() as it's there for STL compatibility rather than
3600   being useful functionality.
3602 * configure: Fix all SWIG warnings and pass -Werror to SWIG so any which get
3603   introduced in future get fixed.
3605 * configure: Fix version test to allow for _svn6789 suffix which SVN snapshots
3606   have.
3608 * Generate SWIG bindings with SWIG 1.3.24 (except for PHP which we still use
3609   1.3.22 for as more recent versions don't work with methods with optional
3610   arguments - the arguments become non-optional!)
3612 Guile:
3614 * configure: Disable guile by default, as it needs more work.
3616 Java:
3618 * Updated to compile against 0.9.0 API.
3620 * Added missing make rule to build SmokeTestWrap.class to "make check" works.
3622 * Wrap optional parameters to Query(term) constructor.
3624 PHP4:
3626 * For PHP4, rename default Database constructor to Database_empty
3627   instead of suppressing the much more useful Database(const string &path)
3628   constructor.
3630 * Use a blank config file when running PHP4 tests to avoid problems
3631   when the bindings are already installed as an extension which is
3632   loaded automatically in the default config.
3634 * configure.ac: If configure can't find the PHP interpreter (as php4 or php),
3635   it probably just means it's not in PATH.  We only need it for running tests,
3636   so substitute a trivial shell script which just exits with code 77 so PHP
3637   tests are skipped (previously we substituted "missing" which caused the tests
3638   to fail).
3640 Python:
3642 * Added Python-style iterators ESetIter, TermIter, PostingIter, PositionIter,
3643   and ValueIter.
3645 * configure: If python is found, also check that Python.h exists (it may not be
3646   if the python-dev package (or similar) isn't installed).
3648 Xapian-bindings 0.8.5.1 (2005-02-23):
3650 General:
3652 * configure: Run compiler feature tests using the C++ compiler, not the C
3653   compiler.
3655 * Allow bindings version to have an extra "patchlevel", yet still match with
3656   corresponding xapian-core version (e.g. 0.8.5.1 and 0.8.5);
3658 Java:
3660 * Added a missing .java source file and removed several unused ones.
3662 * Fixed several glitches in the java bindings automake build system.
3664 * Use "-Wno-unused" when compiling JNI C++ code to ignore harmless
3665   warnings in generated code (we were carefully passing "-Wunused"
3666   which is the opposite of what is needed!)
3668 * Fixed a couple of warnings from GCJ.
3670 * Wrapped a few missing methods added since Eric created the bindings.  There
3671   are still some missing methods - there's now a (probably incomplete) list in
3672   java/README.
3674 * Added various useful bits of information to java/README.
3676 * Tweaked SimpleSearch.java to be more like the C++ version.
3678 PHP4:
3680 * 0.8.5 was generated with SWIG 1.3.24, but PHP support is broken there so
3681   we now generate the PHP bindings with SWIG 1.3.22 and everything else with
3682   a more recent version.
3684 * configure: Check for "php" as a program name as well as "php4", and
3685   fall-back to missing so the error message from "make check" is better.
3687 Xapian-bindings 0.8.5 (2004-12-23):
3689 General:
3691 * INSTALL: Added non-generic installation instructions.
3693 Python:
3695 * Fixed bytecode compilation of xapian.py.  xapian.pyc was being generated in
3696   the same directory as xapian.py, but Makefile.am was looking in current
3697   directory when installing it.  Additionally, VPATH builds were broken.
3698   These problems were introduced by changes in 0.8.4.
3700 Xapian-bindings 0.8.4 (2004-12-08):
3702 General:
3704 * README: Now clearly says which languages we currently support, which people
3705   are working on, etc.
3707 * Instead of requiring the user to have a really recent SWIG installed, ship
3708   the files SWIG generates.  Disable all the SWIG rules unless configure is run
3709   with --enable-maintainer-mode to make sure they aren't triggered accidentally
3710   (e.g. by make with dodgy VPATH).
3712 * configure: Require SWIG 1.3.22 or higher (but note that SWIG is no longer
3713   needed if you just want to install the bindings).
3715 * Wrap the new Database and WritableDatabase constructors which replace
3716   Auto::open().
3718 * It turns out that we do need to wrap MSet::MSet() (wrapping removed in 0.8.2)
3719   (for example, simpleexpand.py needs it).
3721 * In the Query constructor which takes a vector of terms, only call set_window
3722   if window is non-zero.  Otherwise things go wrong if we're passed an empty
3723   vector.
3725 * Second argument to Document::add_posting() isn't optional, but xapian.i
3726   indicated that it was.
3728 * xapian.i: Added wrappers for Xapian::Weight and standard subclasses.
3729   Deriving your own weight class in the scripting language isn't currently
3730   supported.
3732 * xapian.i: %name is deprecated, so use %rename instead.  This also works
3733   around a bug in SWIG 1.3.23.
3735 * configure: Removed pointless probe for a C compiler - everything we compile
3736   is C++.
3738 * configure: Reinstated the check that the bindings version matches the version
3739   of the xapian library.  It was added in 0.8.2, but accidentally removed in
3740   0.8.3.
3742 * Use newly added option `xapian-config --swigflags` which (a) avoids always
3743   passing -I/usr/include which could cause problems if we're using a Xapian
3744   install not in /usr and there's another one in /usr and (b) avoids problems
3745   if `xapian-config --cxxflags` contains flags other than -I<something>.
3747 CSharp:
3749 * Richard Boulton has put together bindings for C#.  These build successfully
3750   with the Mono tools, but the smoketest currently fails.  Unclear if the
3751   problem is the bindings or the smoketest code.
3753 Guile:
3755 * The guile bindings now build successfully, so we've enabled the guile
3756   detection machinery in configure.  They're untested though (we don't
3757   know guile!) so success or failure reports are encouraged!
3759 PHP4:
3761 * Mention the example scripts near the start of the documentation, not right at
3762   the end.
3764 * Remove documentation explicitly saying how we wrap Xapian::QueryParser and
3765   Xapian::Stem since we wrap them exactly as we wrap everything else we don't
3766   mention!
3768 Python:
3770 * Make overloaded Query(Query::op, vector<string>*, termpos) constructor
3771   work in Python.
3773 * Changed examples to use the newly wrapped Query from list of terms ctor.
3775 * Mention the example scripts near the start of the documentation, not right at
3776   the end.
3778 * python/Makefile.am: Added xapian_wrap.h as a target for the rule which runs
3779   SWIG.
3781 * Remove documentation explicitly saying how we wrap Xapian::QueryParser and
3782   Xapian::Stem since we wrap them exactly as we wrap everything else we don't
3783   mention!
3785 * Mention simpleexpand example in documentation.
3787 * Examples now report messages for Xapian exceptions.
3789 * Removed MAX_PROB_TERM_LENGTH from example scripts which don't use it.
3791 * Make the example MatchDecider exclude documents matching a value, rather than
3792   a term.  The latter is a very inefficient way to do what AND_NOT does, and we
3793   don't want examples to mislead like that.
3795 * python/docs/bindings.html: Note that you can construct a query
3796   from a list of terms, even if you can't from a list of queries.
3797   Add HTML links to the examples.
3799 * simpleindex.py: Trim spaces from the start as well as from the end of each
3800   line.  Simplify the loop slightly.
3802 Tcl:
3804 * Wrap in a tcl8 namespace "Xapian".
3806 * Added a smoketest.
3808 * Translated simpleindex and simplesearch into Tcl.
3810 * Set the Tcl package version.
3812 * Create pkgIndex.tcl so the package can be loaded in the usual Tcl way.
3814 * Install in "xapian<VERSION>" directory in the conventional Tcl way.
3816 * Added documentation for tcl8 bindings.
3818 * Use the TCL_STUBS mechanism so that compiled extensions are portable between
3819   different versions of Tcl.  This needs Tcl 8.1, so bump the required Tcl
3820   version (was 8.0).
3822 * configure.ac: Noted that the bindings can easily be compiled for use with
3823   Tcl 8.0, in case anybody needs that for some reason.
3825 * Don't wrap the factory functions which return a quartz WritableDatabase as
3826   the destructor never gets called so changes aren't flushed and the lock file
3827   isn't removed.
3829 Xapian-bindings 0.8.3 (2004-09-20):
3831 General:
3833 * Fixed mismatching versions of libtool used to produce configure and
3834   ltmain.sh.  The obvious symptom was ".so" missing from the shared object
3835   names.
3837 * RPM spec file contributed by Fabrice Colin.  Currently this packages Python,
3838   PHP4, and Tcl bindings.
3840 Java:
3842 * Pass -classpath to javac to fix build problems.
3844 * Make sure errors subdirectory is built before we try to build the jar file.
3846 * Fixed "make install" to not give libtool error.
3848 PHP4:
3850 * Include PHP4 documentation and exmples in the tarball.
3852 * Reverted "Use special SWIG PHP ldflags when linking the PHP glue library."
3853   change from 0.8.2 - it turns out we only need to pass these flags if we use
3854   swig's -noruntime option (which we don't do).
3856 Python:
3858 * Use swig's -modern switch for Python 2.2 and up - it gives cleaner, leaner,
3859   faster Python wrapper code.
3861 Tcl:
3863 * Don't install xapian.la.
3865 * Improved configure check for tcl.h to work with Fedora Core 2.
3867 Xapian-bindings 0.8.2 (2004-09-13):
3869 General:
3871 * Added wrappers for recently added methods: ESet::back() and
3872   Database::get_lastdocid(), and wrap the new optional third parameter
3873   to Enquire::set_sorting().
3875 * No longer wrap MSet::MSet() - it's not of use in scripting languages.
3877 * Wrap operator-- as prev() for MSetIterator and ESetIterator.
3879 * Wrap Quartz, InMemory, and Remote database factory functions as
3880   quartz_open(), inmemory_open(), and remote_open().
3882 * Added missing wrappers for static Stem::get_available_languages() and
3883   Stem::get_description().
3885 * Wrap renamed method Query::empty() (was Query::is_empty()).
3887 * Remove renaming of other empty() methods to is_empty() (but keep is_empty()
3888   as an alias for now).
3890 * Require autoconf 2.59 and automake 1.8.5.
3892 * configure: Added check that the bindings version matches the version of
3893   the xapian library.
3895 * configure: Check if we're using GCC and only pass GCC specific warning
3896   control options if we are.
3898 * configure: When running with GCC, also pass -Wno-uninitialized so the
3899   SWIG glue builds without warnings.
3901 * README: Updated list of languages which SWIG supports.
3903 PHP4:
3905 * Document that the 2 argument form of Xapian::Auto::open() for opening a
3906   writable database is wrapped as open_writable() (bug #32).
3908 * Include Xapian version in output from phpinfo().
3910 * Build the SWIG glue library like we build the others rather than using
3911   SWIG's -phpfull option.  This avoids problems with newer automake versions
3912   and means we can build against an uninstalled xapian library.
3914 * Corrected documentation to refer to Xapian::DB_* not Xapian::Auto::DB_*.
3915   Fixed documentation of how Xapian::Query::OP_* are wrapped.
3917 * Use special SWIG PHP ldflags when linking the PHP glue library.
3919 * simplesearch.py now works with multi-term queries.
3921 * Added documentation on how to install the PHP4 bindings.
3923 * Added a simple testcase to at least ensure the PHP4 bindings can be
3924   initialised and some simple operations work.
3926 Python:
3928 * configure: Now checks for Python >= 2.1 which we need for __cmp__ and __eq__.
3930 * Don't install _xapian.la and _xapian.a.
3932 * Byte compile xapian.py to xapian.pyc and install it.
3934 * Suppress SWIG warning about MatchDecider::operator() director discarding
3935   const.
3937 * "make clean" no longer leaves "xapian_wrap.h" behind.
3939 * Added a simple testcase to at least ensure the python bindings can be
3940   initialised and some simple operations work.
3942 Tcl8:
3944 * configure: Disable building tcl8 bindings if the headers are missing
3945   (probably because the tcl8.X-dev package isn't installed).
3947 Xapian-bindings 0.8.1 (2004-06-30):
3949 General:
3951 * configure: Require SWIG 1.3.20 or higher (previously was 1.3.14).
3953 * Add "-I/usr/include" to the swig line.  This is needed when xapian is
3954   installed with a prefix of /usr, since "xapian-config --cxxflags" carefully
3955   doesn't emit -I/usr/include in this situation (because it causes problems
3956   with some GCC versions).
3958 * Fixed the %exception handler to cover all the exceptions Xapian can throw,
3959   not just a subset.
3961 Java:
3963 * Removed wrappers for unused error classes which have been pruned from C++.
3965 * Make finalize() methods of Database and WritableDatabase public so they can
3966   be called from by the user.
3968 * Document Document.add_term_nopos() as deprecated.
3970 PHP4:
3972 * Make sure that PHP bindings build a module which exports get_module() so PHP
3973   is able to load it.
3975 * Configure now checks that phpize can actually be run, rather than just that
3976   it's executable (test -x isn't portable anyhow).
3978 * Added basic documentation and examples to PHP4 bindings.
3980 * Rename overloaded methods and constructors.
3982 * Add simple access to the prefixes map in QueryParser.
3984 * Correct simpleindex ports to never generate empty termnames.
3986 Python:
3988 * configure: Use $PYTHON instead of python when running python to determine
3989   library and include paths and version number.
3991 * Actually ship python examples and documentation.
3993 Xapian-bindings 0.8.0 (2004-04-20):
3995 * README: Started collecting information on supporting Xapian from even
3996   more languages.
3998 * Added configure tests to enable bindings only where the necessary tools
3999   are installed and have a supported version.  ./configure --without-LANGUAGE
4000   allows particular languages to be forcibly disabled.
4002 * Added Xapian::Document::add_term() - the new name for add_term_nopos().
4004 * A couple of Xapian::Query constructors weren't being wrapped - fixed.
4006 * Added Eric B. Ridge's JNI bindings for Java.  The JNI bindings themselves
4007   have been well tested, but integration with the xapian-bindings configure
4008   system hasn't been tested at all - please alert us to any problems.
4010 * Xapian can now be used from TCL.
4012 * Python: MSet now provides a Python iterator.
4014 * Python: OMMSET_* and OMESET_* renamed to MSET_* and ESET_*.
4016 * Python: enable directors for MatchDecider, to allow subclassing in Python.
4018 * Python: Added basic documentation, and some examples.