Update NEWS with changes since 1.2.23
[xapian.git] / xapian-bindings / NEWS
blob4b109306df7fb821cbfebfddf4dab88a95d4b35d
1 up to: 22938f1c02f94d3dccc65f9bfde124a8663c5e29
3 Xapian-bindings 1.2.24 (2016-09-14):
5 Documentation:
7 * python/doxy2swig.py: Specify encoding so we can handle UTF-8 doxygen
8   comments.  Patch from Vivek Pal.
10 General:
12 Packaging:
14 Portability:
16 CSharp:
18 Java:
20 * Fix configure to find jni_md.h on Cygwin, OS X, *BSD, AIX.  The issue with
21   Cygwin was reported by John Bankert on xapian-discuss.  There doesn't seem to
22   be an explicit list of the subdirectory names jni_md.h can be in anywhere,
23   but grepping the OpenJDK 8 source code finds additional values "darwin" and
24   "aix", and *BSD seems to use "bsd".
26 Lua:
28 Perl:
30 * Fix typo in POD docs for Perl bindings (outputing -> outputting).  Fixes
31   #730, reported by Nick Morrott.
33 PHP:
35 Python:
37 Ruby:
39 Tcl:
41 Xapian-bindings 1.2.23 (2016-03-28):
43 Documentation:
45 * Update links to Xapian website and trac to use https, which is now supported,
46   thanks to James Aylett.
48 PHP:
50 * Check that the PHP interpreter we find is actually PHP5, and if not look
51   harder.  On current Debian unstable, php-config5 --php-binary reports
52   /usr/bin/php which can be PHP7.
54 * Document that PHP7 isn't currently supported, and explicitly check for and
55   reject it in configure.
57 Ruby:
59 * configure: Stop preferring rdoc-1.8 to rdoc (this only happened in a
60   fall-back case when rdoc wasn't found in the same directory as the ruby
61   interpreter).
63 Xapian-bindings 1.2.22 (2015-12-29):
65 Documentation:
67 * Stop maintaining ChangeLog files.  They make merging patches harder, and stop
68   'git cherry-pick' from working as it should.  The git repo history should be
69   sufficient for complying with GPLv2 2(a).
71 General:
73 * Stop wrapping internal methods of Xapian::Weight.
75 * Return Error::get_description() rather than get_type + ": " + get_msg().  In
76   many cases this is the same, but if context or errno are available,
77   get_description() includes them.
79 * Catch and report std::exception rather than handling it as an unknown error
80   (so in particular std::bad_alloc will now be reported more helpfully).
82 CSharp:
84 * Fix configure test for whether $MONO can run CSharp programs - previously it
85   would always fail, which would mean that the CSharp tests would only be run
86   on systems where CSharp programs can be run directly.
88 Lua:
90 * Send stderr from lua version check to config.log instead of letting it appear
91   on the terminal.
93 PHP:
95 * Fix memory leak and crash when using PHP subclasses of Xapian functors.
97 * Subclasses of XapianMatchSpy and XapianPostingSource with implicit
98   constructors now work.
100 Python:
102 * Add new testcase to catch any internal functions, methods, constants, etc
103   which have accidentally been wrapped.
105 Xapian-bindings 1.2.21 (2015-05-20):
107 Lua:
109 * README: Remove note about the Lua bindings being experimental - it's not
110   really been true for some time now.
112 Perl:
114 * Wrap missing constants OP_SYNONYM and STEM_ALL_Z.
116 * Add workaround for Perl defining a seed() macro which breaks compilation with
117   GCC in C++11 mode (due to <algorithm> now pulling in random number generation
118   classes with a method called seed).
120 * Update list of unwrapped things in POD documentation.
122 * Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
123   during parallel builds.
125 * Add test coverage for Enquire::set_collapse_key() with 1 and 2 parameters.
127 * Add test that we can create all the stemmers returned by
128   Stem::get_available_languages().
130 * t/symbol-test.t: If the symboltest module build fails, skip the test - it's
131   likely due to external reasons, like incompatible compiler flags being taken
132   from Perl's Config module, due to Perl having been built with a different
133   compiler to Xapian.
135 * Use croak_sv() or ERRSV if defined.
137 PHP:
139 * README: Remove note about the subclassing bug with PHP 5.4 and later - that
140   was fixed in 1.2.19.
142 Python:
144 * README: Add note that 1.3.2 has Python 3 support, and that this will be in
145   stable release 1.4.0.
147 Ruby:
149 * smoketest.rb: Fix "warning: assigned but unused variable - mset".
151 * Ship generate-rdoc-stubs in the tarball.  Reported by Matthias Klose in
152   https://bugs.debian.org/782270
154 Xapian-bindings 1.2.20 (2015-03-04):
156 Portability:
158 * configure: Avoid using \? in sed command in Lua detection - it isn't
159   supported by all sed implementations.
161 Lua:
163 * configure: Rework LUA_SO checks to be clearer and to properly handle LUA_SO
164   being specified without a leading '.'.
166 * configure: Add an example of specifying LUA_SO to --help output.
168 PHP:
170 * Remove text about subclassing bug with PHP 5.4 and later - that was fixed in
171   1.2.19.
173 * In current PHP releases, dl() is disabled in most SAPIs, and even where
174   available it will now only look in the configured extension directory.  The
175   upshot is that there no longer seems to be a sane way to install the PHP
176   bindings without being root, so update the documentation to reflect this.
177   Fixes #661, reported by Felix Ostmann.
179 Xapian-bindings 1.2.19 (2014-10-21):
181 PHP:
183 * Fix up SWIG generated C++ wrapper code so that subclassing of wrapped classes
184   in PHP works with PHP 5.4 and later.  (Fixes #652, reported by Sebastian
185   Gottfried)
187 * Fix XapianQueryParser::set_stopper() and XapianTermGenerator::set_stopper()
188   which were getting incorrectly wrapped such that they didn't actually do
189   anything.  Fixes #659, reported by jmienert.  This bug was introduced by the
190   reference tracking fix in 1.2.14.
192 Ruby:
194 * README: Note that Ruby 2.1 works too.
196 Xapian-bindings 1.2.18 (2014-06-22):
198 Documentation:
200 * README: Add links to Erlang and Node.js bindings.
202 Lua:
204 * lua/smoketest.lua: Change expect() parameter order to the more natural (got,
205   expected), which most of the calls already used, and fix up the few calls
206   which passed (expected, got).
208 PHP:
210 * php/smoketest.php: Add missing "exit(1);" after reporting failure of check
211   that MatchDecider returns an MSet with the expected docid in.  Luckily this
212   wasn't masking a test failure.
214 Python:
216 * python/pythontest.py: There's no longer a need to use chert_open() explicitly
217   - chert is the default backend now, and both chert and brass support the
218   required functionality for the tests which do this, so this just needlessly
219   causes the tests to fail if chert is disabled in xapian-core.
221 * configure: If the Python version is too new or too old, only report it once
222   not twice.
224 Ruby:
226 * configure: Fix Ruby bindings to build on Windows (and other platforms where
227   allow_undefined_flag=unsupported. (fixes#634, reported by Alexis Denis)
229 Xapian-bindings 1.2.17 (2014-01-29):
231 Portability:
233 * Improve workaround which allows building against an uninstalled xapian-core
234   on OS X - this should now work with any uninstalled xapian-core (not only in
235   a tree with the same layout as an SVN or git checkout) and it also won't try
236   to build against "../xapian-core/.libs" just because it happens to exist.
237   (Backported from 1.3.1; fixes #322)
239 Python:
241 * configure: Some distros now point /usr/bin/python at Python 3, so the check
242   for a Python 2 interpreter now checks for 'python2' first, and checks that
243   the version of found interpreter is 2.x.
245 Ruby:
247 * Tweak configure to work with Ruby 2.0.
249 Tcl:
251 * Link against -ltclstubX.Y for Tcl 8.5 and later (reported by Sergei Golovan
252   in http://bugs.debian.org/724830).
254 * Use a better check for TCL_INC for Tcl 8.5 and later.
256 Xapian-bindings 1.2.16 (2013-12-04):
258 Documentation:
260 * README: Note that the SWIG Perl bindings should replace the XS ones in 1.4.x.
262 General:
264 * Compress source tarballs with xz instead of gzip.
266 * configure: Handle git snapshot naming.
268 Portability:
270 * configure: Update list of platforms where we tell libtool not to link in
271   deplibs to match the list used for xapian-core.
273 Perl:
275 * Pass 0 instead of NULL for non-pointer parameter to av_fetch (spotted due to
276   GCC 4.7 warning).
278 * symboltest.t: Pass $CPPFLAGS and $CXXFLAGS from the environment through to
279   the sub-build, fixing failure when built with CPPFLAGS=-D_GLIBCXX_DEBUG.
281 PHP:
283 * smoketest.php: If running under PHP >= 5.4, skip the tests we know will fail
284   with a message explaining this.
286 Python:
288 * Provide bindings version in xapian.__version__ as per PEP 396.  (see #346)
290 * python/docs/examples/simpleexpand.py: Use Pythonic iteration over the ESet.
292 * pythontest.py: Fix testcase checking we get an exception from using
293   non-random-access iterators after then have advanced - previously these
294   didn't actually test as fully as intended.
296 Ruby:
298 * Omit internal classes and methods from the rdocs.
300 Xapian-bindings 1.2.15 (2013-04-16):
302 General:
304 * Fix configure --enable-quiet option to actually work for the bindings.
306 Perl:
308 * Fix doc typo: "as as" -> "as a"
310 Ruby:
312 * Fix deprecation warning in configure from Ruby 1.9.3.
314 Xapian-bindings 1.2.14 (2013-03-14):
316 Python:
318 * Fix typo in doccomment.
320 PHP:
322 * Keep references to the PHP wrapper object when an object is set on another
323   object.  (fixes #614)
325 Tcl:
327 * Allow TCL_INC to be passed to configure.  (fixes #612)
329 Xapian-bindings 1.2.13 (2012-11-09):
331 CSharp:
333 * configure: Overhaul checks for C# tools to use modern names in preference.
335 Lua:
337 * Fix examples to use str(query) to get the query description.  (Fixes #600)
339 * Document that get_description() is mapped to str(), and end() to _end().
341 * Fix functor wrappers which return strings to be zero-byte clean.
343 Perl:
345 * Forward port tests of StringValueRangeProcessor with a prefix or suffix from
346   1.2's XS Search::Xapian.  (ticket#607)
348 * Update testsuite not to use UNIVERSAL::isa() as a function, since doing so
349   is deprecated.
351 PHP:
353 * Document that subclassing Xapian classes in PHP currently doesn't work with
354   PHP 5.4.
356 Xapian-bindings 1.2.12 (2012-06-27):
358 No changes since 1.2.11 except to bump the version - this release was made to
359 fix an incorrect library version information update in xapian-core 1.2.11.
361 Xapian-bindings 1.2.11 (2012-06-26):
363 General:
365 * Ship the scripts which generate the except.i files for Lua, Perl and Python.
367 Perl:
369 * In generated C++ code, pass 0 instead of NULL for non-pointer parameter to
370   av_fetch() (spotted due to GCC 4.7 warning).
372 PHP:
374 * Fix "make check" to work for PHP when building from a release tarball with
375   srcdir != builddir.
377 * Work around "undefined symbol: zend_error_noreturn" error.
379 Xapian-bindings 1.2.10 (2012-05-09):
381 CSharp:
383 * Use -keyfile and -keycontainer options to the C# compiler, because it warns
384   us to do this instead of setting them in AssemblyInfo.cs.
386 * Use diff's -c option when comparing the files SWIG generated against those we
387   were expecting to get as the output should be easier to understand.
389 * Sort both the lists of expected and of found SWIG-generated sources with
390   Perl, to avoid problems with locale-specific sort orders.
392 Java-SWIG:
394 * Remove now superfluous old check that SWIG generated at least the sources we
395   want - we now check it generated *exactly* the sources we want.
397 * Use diff's -c option when comparing the files SWIG generated against those we
398   were expecting to get as the output should be easier to understand.
400 * Sort both the lists of expected and of found SWIG-generated sources with
401   Perl, to avoid problems with locale-specific sort orders.
403 Lua:
405 * Now works with Lua 5.2.
407 * "require 'xapian'" now returns the module table.  (ticket #593)
409 * lua/smoketest.lua: Improve reporting of test failures.
411 Perl:
413 * Avoid importing isa from UNIVERSAL to fix Perl 5.12 deprecation warning.
415 * Remove #! lines with -W to fix "Name "Test::More::TODO" used only once:
416   possible typo at /usr/share/perl/5.14/Exporter/Heavy.pm line 190." warnings.
418 Python:
420 * python/docs/examples/simpleexpand.py: Update to not use deprecated MSet
421   iteration features which have been removed on trunk.  This also fixes a
422   segfault if there are no matches and no documents are explicitly marked as
423   relevant.
425 * python/testsuite2.py: Explicitly suggest "make check VERBOSE=1" as a simple
426   way to rerun tests with verbose output.
428 Ruby:
430 * configure: Make sure the ruby subdirectory exists before trying to create
431   ruby/rubyio.h, so this works in a VPATH build from a clean tree.
433 Xapian-bindings 1.2.9 (2012-03-08):
435 Java:
437 * configure: Fix test for jni.h to try looking for jni.h relative to the real
438   location of javac, which should work for more JDKs.
440 Lua:
442 * Handle an exception from C++ by raising a xapian.Error object as an error in
443   Lua.
445 * Rename get_description() methods to __tostring(), so that you can use write
446   tostring(obj) in Lua.
448 * configure: Honour LUA_LIB if already set.  Fixes #581.
450 * configure: Improve probing for LUA_LIB, and also probe for LUA_SO so we
451   support platforms where the compiled Lua module isn't called .so.
453 Perl:
455 * Add tests of Document::get_docid().
457 PHP:
459 * Add a test that Query constructor taking OP_NEAR with a window size works.
461 Python:
463 * python/testsuite2.py: Don't run off the traceback looking for a test function
464   if the exception wasn't from a test function.
466 Xapian-bindings 1.2.8 (2011-12-13):
468 Lua:
470 * Wrap user-subclassable functor objects by allowing the user to pass a
471   Lua function where the functor object would be passed in the C++ API.
473 PHP:
475 * Fix "PHP Notice:  Undefined variable: r in xapian.php".  (Fixes bug#576)
477 * The PHP bindings will now work again with a version of PHP built with ZTS
478   enabled (which is the default on Microsoft Windows).  This was broken by
479   the changes to support subclassing in PHP in the version of SWIG used since
480   1.2.6.
482 Python:
484 * Add a module docstring.  (Fixes bug #573)
486 * The python testsuite now checks for object leaks during each testcase.
488 * In test_matchingterms_iter, run the code we're testing for leaks twice, and
489   only check for leaks the second time to avoid falsely reporting a leak when
490   some cached value gets initialised under Python 2.5.
492 Ruby:
494 * Wrap optional prefix parameter to Database::allterms.
496 Xapian-bindings 1.2.7 (2011-08-10):
498 Documentation:
500 * INSTALL: Pull in a few updates from the latest version of the automake
501   document which this file was originally based on.  Add in the missing
502   copyright and licensing information.
504 * INSTALL: Add --with-lua to list of options.
506 * INSTALL,README: It's no longer noteworthy that Mac OS X 10.1 and 10.2 aren't
507   supported as Apple ditched them long ago, so drop this as a "Known Issue" in
508   INSTALL and instead just say "Mac OS X >= 10.3" in the discussion of
509   supported platforms in the README.
511 * HACKING: Update and start section on deprecation warnings for the bindings.
513 General:
515 * Add missing wrappers for Database::has_positions() and
516   TermIterator::positionlist_count(), and correct the return type of
517   Database::get_doclength() from double to Xapian::termcount.
519 CSharp:
521 * README: Note a recent version of Mono which we've tested the C# bindings
522   with.
524 * Check that exactly the sources we expect are generated, and add some sources
525   which were missing from the list.
527 * Fix "make uninstall" so the compiled C++ module (typically _XapianSharp.so)
528   gets removed.
530 * Fix iterator ++ and -- so that the reference to the object isn't released
531   prematurely, which was causing an occasional crash if the garbage collection
532   happened at just the wrong moment,
534 * Add test coverage for QueryParser.ParseQuery() with flags argument.
536 * Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
538 Java:
540 * SmokeTest.java: Fix == comparisons with strings to use equals().
542 * Add test that string passing is zero byte safe.
544 * Fix MyExpandDecider.accept() to really check the passed parameter.
546 Java-SWIG:
548 * Put the SWIG-generated Java bindings in package org.xapian.
550 * Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
552 * SmokeTest.java: Fix == comparisons with literal strings to use equals()
554 * Add test that string passing is zero byte safe.
556 * Fix MyExpandDecider.accept() to really check the passed parameter.
558 * Fix the compile JNI code to have a .jnilib extension on Mac OS X.
560 * Create an HTML documentation page based on java/README.
562 * Copy java examples from the hand-coded JNI ones.
564 * docs/examples/SimpleIndex.java: Update to use commit() rather than flush().
566 * Check that exactly the sources we expect are generated, and add some sources
567   which were missing from the list.
569 Lua:
571 * Merge latest Lua changes from Xiaona Han.
573 * lua/smoketest.lua: Add simple test for Database::positionlist_begin().
575 * simpleexpand.lua: Don't try to add anything to the RSet if there are no
576   matches.
578 Perl:
580 * Sync updates to examples from XS Search::Xapian:
582   + Require Perl >= 5.6 so we can "use warnings;".
584   + Loop over file using while() (which reads a line per iteration) not
585     foreach() (which reads the whole file up front).
587 * Wrap MatchAll and MatchNothing for Perl (as Search::Xapian::Query::MatchAll
588   and Search::Xapian::Query::MatchNothing).  (ticket#158)
590 * perl/t/termgenerator.t: Test TermIterator::index_text() with two arguments.
592 * perl/Makefile.am: Fix "make check".
594 * perl/t/symbol-test.t: Fix to work when built against an installed
595   xapian-core.  (ticket#558)
597 PHP:
599 * php/smoketest.php: Install an error handler so the test fails if there are
600   any errors, warnings, notices, etc.
602 * Change PHP examples and test program to use 'include "xapian.php"' like user
603   code should (rather than 'include "php5/xapian.php"' as they did previously).
605 * Wrap MatchAll and MatchNothing for PHP as XapianQuery::MatchAll() and
606   XapianQuery::MatchNothing(). (ticket#158)
608 Ruby:
610 * Wrap MatchAll and MatchNothing for Ruby.  (ticket#158)
612 Xapian-bindings 1.2.6 (2011-06-12):
614 General:
616 * SWIG-based bindings are now generated with a newer version of SWIG
617   (ticket#538).
619 Portability:
621 * On Mac OS X 10.5 or later, and 10.4 on x86, build Java JNI library with a
622   .jnilib extension as we do for older versions.
624 CSharp:
626 * Upgrading to newer SWIG fixes issues with strings with newer C# versions.
628 Java:
630 * Fix memory leaks when functions taking string parameters throw exceptions.
632 * Previously a hash table was used to map Java objects to C++ ones, but we
633   now just cast the address of the C++ object to a jlong (which is 64 bits
634   so will hold a pointer on current platforms).  This is more efficient and
635   avoids the need for thread locks around accesses to the hash table.
637 * Remove explicit checks for NULL around calls to delete.
639 * Mark makefiles which build Java code as .NOTPARALLEL to avoid race conditions
640   during parallel builds.
642 Lua:
644 * Add support for Lua, which is being developed by Xiaona Han during GSoC this
645   year.  The current support should be regarded as experimental - it passes
646   its automated tests, but the details of the Lua API are likely to evolve as
647   the project progresses.
649 Perl:
651 * README: say that Perl bindings probably need Perl 5.8 or later.
653 PHP:
655 * Directors now work for PHP (ticket#488).  New simplematchdecider.php example.
657 Python:
659 * python/pythontest2.py: With Python 2.7, gc.collect() doesn't always collect
660   all the garbage, so repeat until no further objects are freed.
661   (http://bugs.debian.org/625679 and https://bugs.gentoo.org/349484).
663 Ruby:
665 * ruby/smoketest.rb: Older Ruby 1.8.x doesn't have Dir.mktmpdir() - just skip
666   the compaction tests for these versions.
668 Xapian-bindings 1.2.5 (2011-04-04):
670 Documentation:
672 * README: Update info on SWIG-based Perl bindings.
674 * INSTALL: Copy new Multi-Arch section from xapian-core/INSTALL.  Replace VPATH
675   section with better equivalent from xapian-core/INSTALL.
677 General:
679 * Wrap ESet::get_eset() with min_wt parameter (new in C++ API in 1.2.5).
681 * configure: If xapian-core is a different release series, promote the
682   mismatched versions warning to an error.
684 Portability:
686 * Mac OS X: Don't override MACOSX_DEPLOYMENT_TARGET on 10.5 and later, or
687   10.4 on x86, as the default if unset on these versions is the current OS
688   version.  (ticket#541)
690 * python/pythontest2.py: In test_compactor(), close any open databases before
691   removing the directory as you can't delete an open database on Microsoft
692   Windows.  (ticket#526)
694 CSharp:
696 * Don't pass extra flags to Microsoft's gacutil.  (ticket#516)
698 * Clarify the licence is GPL "version 2 or later" in the meta information
699   we put in the module.
701 Python:
703 * Remove old and broken Enquire.get_matching_terms() method.  We deprecated
704   Enquire.get_matching_terms() in 1.0.x, and removed it in 1.1.0, but
705   accidentally left an older version of get_matching_terms() exposed.
707 * Remove broken implementation of MSet.__contains__.  This appears never to
708   have worked, and to have been broken for at least the past 3.5 years without
709   anyone mentioning it, and is probably of little use anyway, so no need to
710   deprecate.
712 * python/docs/index.html: Document that MSet.items and ESet.items are
713   deprecated, and what to use instead.  Note that MSET_DOCUMENT never worked on
714   the tuple returned by MSet.items.  (ticket#531)
716 * Add test coverage for mset.items.
718 Ruby:
720 * Add test coverage for Xapian::Compactor.
722 * Handle an empty response to $RUBY --version specially.  This gives a less
723   opaque error in cases where the user specified RUBY but the value given
724   wasn't an executable file.
726 Xapian-bindings 1.2.4 (2010-12-19):
728 General:
730 * Wrap the new Xapian::Compactor class.  The resolve_duplicate_metadata()
731   virtual method is wrapped for subclassing for Python and Ruby currently.
733 * Eliminate separate Makefile.am in the docs subdirectory of each language
734   subdirectory and just inline any rules into the main sub-Makefile.am, which
735   allows more of the build to run in parallel.
737 * Don't ship some files which are generated at build time.
739 * configure: Need python in maintainer mode to run doxy2swig.py.
741 Packaging:
743 * RPM: Package the Perl bindings.
745 * RPM: Don't package _XapianSharp.la.
747 Portability:
749 * For Mac OS X builds, set DYLD_LIBRARY_PATH to allow tests to find an
750   uninstalled Xapian library.  See ticket #322.
752 * configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
754 CSharp:
756 * Don't install _XapianSharp.la.
758 Perl:
760 * Merge SWIG-based Perl bindings originally developed by Kosei Moriyama during
761   GSoC 2009.  These are close to being a compatible replacement for the
762   hand-coded XS bindings in Search::Xapian but also offer a more complete
763   wrapping of the C++ API.  We're planning to replace the XS bindings with the
764   SWIG ones for easier maintenance.  We encourage you to try them and let us
765   know how you get on - particularly if you find cases where code which works
766   with the XS bindings doesn't work with the SWIG ones.
768 PHP:
770 * Document that iterators shouldn't be dereferenced or advanced when at their
771   end points (ticket#520).
773 Python:
775 * Fix memory leaks in typemaps which return Python lists.
777 * MatchSpy can now be subclassed in Python.  Remote use isn't currently
778   supported.
780 * configure: Use sys.version_info tuple, rather than string splicing which
781   assumes the Python "major.minor" is 3 characters (which would fail if Python
782   2.10 were ever released, for example).
784 Xapian-bindings 1.2.3 (2010-08-24):
786 Packaging:
788 * xapian-bindings.spec: Don't run autoreconf - it's no longer required.
790 Xapian-bindings 1.2.2 (2010-06-27):
792 * No user-visible change except for bumping the version to indicate
793   compatibility with Xapian-core 1.2.2.
795 Xapian-bindings 1.2.1 (2010-06-22):
797 This release includes all changes from 1.0.21 which are relevant.
799 General:
801 * Wrap Xapian::StemImplementation.  Currently this has only been tested for
802   Python.  (ticket#448)
804 Guile:
806 * Remove non-functional disabled guile bindings left over from Open Muscat
807   days - if someone wanted to add guile bindings, it would be easier to start
808   from scratch.
810 Java-SWIG:
812 * Update list of generated java sources in the SWIG-based Java bindings.
814 PHP:
816 * zend_throw_exception() returns, so return control to PHP directly after
817   calling it to avoid needless extra work and possible issues.
819 Python:
821 * Fix "from xapian import *".  (ticket#477)
823 * Fix testcase weight_normalise - a change in xapian-core means that
824   get_max_possible() can now return zero for a non-existent term, so don't
825   blindly calculate the reciprocal of it.
827 * python/replicationtest2.py: Extend to check that changesets get applied
828   correctly.
830 * python/smoketest2.py: Check len(mset) works (improving test coverage of
831   Python-specific wrapping).
833 Xapian-bindings 1.2.0 (2010-04-28):
835 This release includes all changes from 1.0.20 which are relevant.
837 Portability:
839 * configure: Tell libtool not to link in deplibs on platforms where we know
840   they aren't needed.
842 * configure: On Linux, extract the library search path from ldconfig which
843   gives us the default entries reliably.
845 Xapian-bindings 1.1.5 (2010-04-15):
847 This release includes all changes from 1.0.19 which are relevant.
849 Tcl:
851 * tcl8/docs/index.html: Document WritableDatabase::close() as a way to
852   sidestep the whole destructor issue.  (ticket#62)
854 Xapian-bindings 1.1.4 (2010-02-15):
856 This release includes all changes from 1.0.18 which are relevant.
858 General:
860 * Update for the new Brass backend and other C++ API changes.
862 * Wrap Database::get_doclength_lower_bound(),
863   Database::get_doclength_upper_bound(), Database::get_wdf_upper_bound(),
864   Database::valuestream_begin() and Database::valuestream_end() for all
865   languages. (ticket#431)
867 * Wrap ValueIterator::skip_to() and ValueIterator::check() for all languages.
869 Python:
871 * Wrap valuestreams as Database.valuestream(), returning a ValueStreamIter
872   object which dereferences to a ValueStreamItem object,
874 * Fix Enquire.clear_matchspies() wrapper which crashed in 1.1.3.
876 Ruby:
878 * Add safe wrapper for the valuestream iterator.
880 Xapian-bindings 1.1.3 (2009-11-18):
882 This release includes all changes from 1.0.15-1.0.17 which are relevant.
884 General:
886 * configure: Default to looking for xapian-config-1.1 unless XAPIAN_CONFIG is
887   specified.
889 * Wrap the new MatchSpy class, and associated features.
891 * Don't wrap PostingSource::serialise(), Weight::serialise() and
892   Weight::unserialise() as they aren't useful from the bindings.
894 * Update for the Sorter to KeyMaker changes.
896 PHP:
898 * Fix PHP bindings to build when PHP has been compiled in multithreaded mode,
899   as it standardly is on Microsoft Windows.  Fixes #411.
901 * Merged the PHP "smoketest" back together now we don't need to support
902   PHP4 now.
904 Python:
906 * Fix a memory leak on error (in theory - we've not got a way to generate this
907   error, so haven't been able to reproduce the leak or test the fix).
909 Xapian-bindings 1.1.2 (2009-07-23):
911 This release includes all changes from 1.0.14 which are relevant to trunk.
913 Python:
915 * Several changes towards fully supporting Python 3, but more work is required.
916   (ticket#246)
918 Xapian-bindings 1.1.1 (2009-06-09):
920 This release includes all changes from 1.0.13 which are relevant to trunk.
922 General:
924 * Wrap the recently added extra parameter to Enquire::set_collapse_key().
926 CSharp:
928 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
929   C# yet, and to use Query("") and Query() instead.
931 * configure: If we don't find a C# compiler, don't test an empty command name
932   further which saves a fork and avoids an odd looking message.
934 PHP:
936 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
937   PHP yet, and to use Query("") and Query() instead.
939 Python:
941 * Wrap Query::MatchAll and Query::MatchNothing for Python and document how they
942   are wrapped (ticket#158).
944 * python/smoketest2.py,python/smoketest3.py: Update tests with FLAG_PARTIAL to
945   expect SYNONYM in generated query.
947 Ruby:
949 * Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
950   Ruby yet, and to use Query("") and Query() instead.
952 Tcl:
954 * Wrap Query::MatchAll and Query::MatchNothing for Tcl and document how they
955   are wrapped (ticket#158).
957 Xapian-bindings 1.1.0 (2009-04-22):
959 Documentation:
961 * INSTALL: Python 2.6 and later look in ~/.local for Python modules so update
962   the instructions to suggest users use this standard location for installing
963   without root access.
965 General:
967 * All deprecated features slated for removal in 1.1.0 have been removed.
969 * All new C++ API features have been wrapped.  Also, since we now supply some
970   standard MatchDecider subclasses, we now wrap Enquire::get_mset() so that
971   these can be passed in even for languages for which SWIG doesn't support
972   subclassing.
974 Packaging:
976 * xapian-bindings.spec: Updated to reflect the new Python packaging.
978 Portability:
980 * configure: Use XAPIAN_CXXFLAGS for test compiles since it may include options
981   to put the compiler into ISO C++ mode).
983 PHP:
985 * PHP4 support has been removed, since PHP4 is no longer supported upstream
986   as of 2008-08-08.
988 Python:
990 * Python 2.3 or later is now required.  2.2 is essentially unsupported
991   upstream.
993 * The import method used has been changed (by using a newer SWIG version)
994   and no longer gives a warning with Python 2.6.
996 * Initial support for Python 3.0 has been added.  This currently doesn't
997   work correctly and should be treated as experimental. (ticket#346)
999 * The newer SWIG version handles exceptions in director methods correctly
1000   so we no longer need our workaround for ticket #289.
1002 * Database::metadata_keys_begin() and Database::metadata_keys_end() are
1003   wrapped for Python as Database.metadata_keys().
1005 * The Python bindings are now installed as a python package, with the
1006   files in a xapian subdirectory, hiding the internal _xapian module
1007   better.
1009 * Python now flags deprecation warnings for the single argument form and old
1010   parameter name (ascending) in set_sort_by_key(), set_sort_by_value() and
1011   friends.
1013 Xapian-bindings 1.0.23 (2011-01-14):
1015 Portability:
1017 * configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
1019 PHP:
1021 * Document that iterators shouldn't be dereferenced or advanced when at their
1022   end points (ticket#520).
1024 Python:
1026 * Fix memory leaks in typemaps which return Python lists.
1028 Xapian-bindings 1.0.22 (2010-10-03):
1030 Packaging:
1032 * RPM: Don't package _XapianSharp.la.
1034 CSharp:
1036 * Don't install _XapianSharp.la.
1038 Python:
1040 * configure: Use sys.version_info tuple, rather than string splicing which
1041   assumes the Python "major.minor" is 3 characters (which would fail if Python
1042   2.10 were ever released, for example).
1044 * Add test_xapian_star.py to distribution - fixes failure of "test_import_star"
1045   testcase in pythontest.py.
1047 Xapian-bindings 1.0.21 (2010-06-18):
1049 Python:
1051 * xapian.BAD_VALUENO is now wrapped as a constant rather than variable which
1052   can't be written to. (ticket#297)
1054 * Fix cleaning of test directories to use "rm -rf" rather than "rm -f".
1056 * Add test to check that "from xapian import *" works.
1058 Xapian-bindings 1.0.20 (2010-04-27):
1060 Python:
1062 * Set PYTHONDONTWRITEBYTECODE=1 in the environment to prevent Python from
1063   generating .pyc files in srcdir for Python >= 2.6, and use a Bourne shell
1064   trap to delete them after running tests for older versions of Python.
1065   (ticket#315)
1067 Ruby:
1069 * configure: Fix typo so path to ruby is reported if Ruby < 1.8 is found.
1071 Xapian-bindings 1.0.19 (2010-04-15):
1073 Tcl:
1075 * tcl8/docs/index.html: Improve wording in a few places.
1077 Xapian-bindings 1.0.18 (2010-02-14):
1079 General:
1081 * Wrap new C++ API method Document::add_boolean_term().
1083 Ruby:
1085 * Generate entries in the Ruby rdocs for all classes which aren't documented
1086   because of Ruby-specific methods.  Fixes ticket#417.
1088 * Avoid absolute paths in the generated rdocs.
1090 Xapian-bindings 1.0.17 (2009-11-18):
1092 Packaging:
1094 * Improve RPM package summaries - the files are needed to *use* scripts as well
1095   as to develop them.  Use "Tcl" instead of "TCL" as the former is more
1096   conventional.
1098 Portability:
1100 * python/Makefile.am: Restore the "./" path to the sourced file
1101   libtoolconfig.tmp as ksh requires it.
1103 Java:
1105 * Fix memory leak when passing a MatchDecider to Enquire::get_mset().
1107 Xapian-bindings 1.0.16 (2009-09-10):
1109 Python:
1111 * Improved docstrings for QueryParser::set_default_op() and
1112   QueryParser::get_default_op() (automatically generated from changes in
1113   xapian-core).
1115 Xapian-bindings 1.0.15 (2009-08-26):
1117 Python:
1119 * Don't break long words when wrapping text in the generated API documentation
1120   comments as this was causing identifiers to be broken in two.
1122 Xapian-bindings 1.0.14 (2009-07-21):
1124 General:
1126 * configure: If $CSC is empty, don't try to run it.  This was a cosmetic bug
1127   and the only side-effect was an odd looking message.
1129 Python:
1131 * Rename methods at build-time using SWIG rather than a run-time in Python, as
1132   the latter approach adds a small time overhead when the module is being
1133   loaded.
1135 Ruby:
1137 * Fix to accept an integer value > MAXINT for a double parameter.
1139 Xapian-bindings 1.0.13 (2009-05-23):
1141 Packaging:
1143 * xapian-bindings.spec: Update C# packaging for rename of XapianSharp.so to
1144   _XapianSharp.so in 1.0.11.
1146 * xapian-bindings.spec: Update Tcl8 packaging for where we now install the
1147   bindings since 1.0.6.
1149 PHP:
1151 * Backport fix from SWIG SVN for misuse of formatted error function in
1152   SWIG-generated code.
1154 Python:
1156 * Change the SWIG-generated wrapper code so it doesn't attempt to acquire
1157   Python's Global Interpreter Lock (GIL) in situations where we know that it
1158   will already be locked.  This avoids some dead-locks with mod_python (due to
1159   mod_python bugs which are apparently unlikely to ever be fixed), and results
1160   in smaller wrappers which run a little faster (in tests with Xapian on x86-64
1161   Ubuntu 9.04, the stripped wrapper library was 11% smaller and ran 2.7%
1162   faster). (ticket#185)
1164 * README,python/docs/index.html: Update documentation of the above mod_python
1165   issue and also document the related mod_wsgi issue.  The status is now that
1166   everything seems to work if you stick to the main interpreter (ticket#364).
1168 * Backport fix from SWIG SVN for misuse of formatted error function in
1169   SWIG-generated code.
1171 * python/docs/examples/simplematchdecider.py: Read "avoid_value" from the
1172   second parameter, not the third.
1174 * python/docs/examples/simplematchdecider.py,
1175   python/docs/examples/simplesearch.py: Make use of str.join() for simpler,
1176   clearer code.
1178 Ruby:
1180 * README: Note that the testsuite fails due to a bug in the test/unit module in
1181   Ruby 1.9.0, but applications using the bindings should work, and that the
1182   testsuite works with Ruby 1.9.1.  Drop all mention of Ruby 1.6.x as that
1183   appears to be completely dead both upstream and in the wild.
1185 Xapian-bindings 1.0.12 (2009-04-19):
1187 Documentation:
1189 * INSTALL: Add a note about being able to pass variables to configure to pick
1190   which of several parallel installations of a language to build for.
1192 Python:
1194 * python/pythontest.py: Round the weights returned for the OP_SCALE_WEIGHT
1195   test to avoid failing due to rounding differences.
1197 * python/testsuite.py: Remove bare except: handlers from testsuite, so Ctrl-C
1198   stop the whole testsuite, not just the currently running testcase.
1200 Xapian-bindings 1.0.11 (2009-03-15):
1202 Documentation:
1204 * README: Note that 1.0.x doesn't (and isn't currently planned to) support
1205   Python 3, and possible current issues with Ruby 1.9.
1207 Portability:
1209 * Merge fixes from Cygwin Ports, so bindings should build out of the box on
1210   Cygwin.
1212 Python:
1214 * python/docs/examples/: Use str(obj) rather than obj.get_description() (the
1215   latter is deprecated, and support was removed in 1.0.0).
1217 * Add support for using the new name ("reverse") for the second argument of
1218   set_sort_by_key() and set_sort_by_value() and friends as a named parameter.
1219   The old name ("ascending") is still supported, but will be deprecated in
1220   1.1.0.
1222 * Keep Python references to Sorter, Stopper, and ValueRangeProcessor objects
1223   which get set on other objects to avoid segmentation faults if they go out
1224   of scope before the object they are set on does.  (ticket#341)
1226 Ruby:
1228 * Fixes for Ruby 1.9 compatibility (ticket#323).  The test harness currently
1229   fails so "make check" doesn't pass, but code using the bindings should work.
1231 Xapian-bindings 1.0.10 (2008-12-23):
1233 Python:
1235 * Need to clean testsuite.pyc from srcdir since that's where it gets generated
1236   as things stand (upstream fix for Debian bug 506090).
1238 Xapian-bindings 1.0.9 (2008-10-31):
1240 General:
1242 * configure: Add support for "--enable-quiet" like xapian-core and omega have.
1244 * Wrap new Database::metadata_keys_begin() and Database::metadata_keys_end()
1245   methods.
1247 Xapian-bindings 1.0.8 (2008-09-04):
1249 General:
1251 * configure: Report bug report URL in --help output.
1253 Python:
1255 * Fix mangling of exceptions thrown from Python subclasses of Xapian classes.
1256   (bug#289)
1258 * Fix memory leaks in the xapian.Query constructor.  (bug#294)
1260 Xapian-bindings 1.0.7 (2008-07-14):
1262 Documentation:
1264 * Document how all the database factory functions and library version functions
1265   are wrapped for all languages.
1267 General:
1269 * Fix to build against a xapian-core which has quartz and/or flint disabled.
1271 * The "program" version of Remote::open() has been wrapped for some time, so
1272   update the documentation which said it wasn't.
1274 Packaging:
1276 * xapian-bindings.spec: Remove "www." from xapian.org and oligarchy.co.uk URLs.
1278 Portability:
1280 * For Java, Python, and Ruby, use the libtool -shrext option to specify a
1281   different module extension rather than our own ugly bodge.
1283 Java:
1285 * Make passing string from Java to C++ zero-byte safe.  It doesn't appear to be
1286   simple to make C++ to Java work though.
1288 PHP:
1290 * Add test that OP_VALUE_GE works for PHP.
1292 Python:
1294 * Several corrections to the Python documentation.
1296 * configure: Fix problem with building under mingw.
1298 Ruby:
1300 * Include simplematchdecider.rb example.
1302 * smoketest.rb: Test the version reporting functions.
1304 Tcl:
1306 * Include simpleexpand.tcl example.
1308 * Fix where the Tcl module gets installed.
1310 * README: Note that Tcl 8.3 and earlier are no longer supported by upstream.
1312 Xapian-bindings 1.0.6 (2008-03-17):
1314 General:
1316 * Wrap OP_VALUE_GE and OP_VALUE_LE and the new Query constructor which they are
1317   used with.
1319 * configure: Correct the required SWIG version given in an error message.
1321 PHP:
1323 * php/smoketest.php: Add note that this script should be run using 'make check'
1324   in the build tree (rather than trying to copy it to a webserver as someone
1325   recently tried to).
1327 * php/smoketest.php: Fix to work under PHP4.
1329 Python:
1331 * The Python module now always has the extension which Python expects, which
1332   fixes a failure on Mac OS X.
1334 Ruby:
1336 * Automatically install/uninstall the Ruby rdoc-generated documentation along
1337   with the ruby bindings.
1339 Tcl:
1341 * configure: Sort out the default value of TCL_LIB, which could end up being
1342   under /usr/share in xapian-bindings 1.0.4 and 1.0.5.
1344 Xapian-bindings 1.0.5 (2007-12-21):
1346 General:
1348 * Wrap Xapian::Sorter and subclasses.
1350 * Wrap Enquire::set_sort_by_key(), Enquire::set_sort_by_key_then_relevance(),
1351   and Enquire::set_sort_by_relevance_then_key().
1353 * Factor out the code to protect multitarget rules against parallel make, and
1354   fix it to handle the source being changed while the rule is executing, and to
1355   correctly return an error code if we fail while trying to recover from the
1356   removal of a target of a multi-target rule.
1358 * configure: Improve the clarity of the error given when none of the tools
1359   needed for any supported language are found.
1361 * configure: SWIG 1.3.32 has now been released, so require at least this
1362   released version for maintainer builds.
1364 Java:
1366 * Add explicit '#include <cstring>' to fix build with the latest snapshots of
1367   GCC 4.3.
1369 * configure: Log the output of trying to compile conftest.java in config.log;
1370   if the test fails, report whether the failure was compiling or running the
1371   test program.
1373 * Check for directory existence rather than calling mkdir unconditionally as
1374   despite the "(ignored)", the error message seems to confuse some people.
1376 PHP:
1378 * Add feature test for XapianMultiValueSorter.
1380 * php/smoketest5.php: Fix use of Database_get_document to new style OO
1381   interface.  Fix the error reported when the PHP5 exception test fails.
1383 * php/smoketest.php: Add feature test to confirm that optional arguments to
1384   XapianQuery's "term" constructor are wrapped.
1386 Python:
1388 * Don't drop the GIL when calling Xapian.MSet.items and Xapian.ESet.items -
1389   these properties build a python list, so dropping the GIL isn't safe and
1390   may cause undefined behaviour in multithreaded environments.
1392 * configure: Update error message to reflect requirement for at least python
1393   2.2.
1395 * configure: Change "print foo" to "print(foo)" in python version checks, for
1396   compatibility with python 3.0.
1398 Ruby:
1400 * The Ruby bindings now work on Mac OS X (the Ruby module's extension was
1401   previously incorrect).
1403 * Run "rdoc" to generate HTML for the Ruby-specific API documentation which
1404   ruby/docs/index.html previously had a dead link to.
1406 Tcl:
1408 * configure: Overhaul code to find tcl.h since the old version no longer worked
1409   with Debian unstable.
1411 * tcl8/docs/index.html: Update documentation to cover flint and mention that
1412   quartz is now deprecated.
1414 * Remove code to handle `const char *' exceptions - as of 1.0.0 the QueryParser
1415   throws QueryParserError instead.
1417 Xapian-bindings 1.0.4 (2007-10-30):
1419 General:
1421 * Wrap new OP_SCALE_WEIGHT query operator, and corresponding Query constructor.
1422   Add feature tests for all languages.
1424 * The "bindings.html" file documenting each of the bindings has been renamed to
1425   "index.html".
1427 Packaging:
1429 * Fix the PHP Makefile.am to work with autoconf < 2.60 to fix RPM builds for
1430   older distros.
1432 Portability:
1434 * Fix warnings when compiling with GCC 4.2.
1436 PHP:
1438 * Update to newer SWIG SVN snapshot to fix memory leaks in wrapped constructors
1439   and methods/functions which return a wrapped class.
1441 * For PHP4, wrap Xapian::sortable_serialise() as xapian_sortable_serialise()
1442   and Xapian::sortable_unserialise() as xapian_sortable_unserialise().
1444 * Document how non-class functions are wrapped.
1446 * Fix wrapping of NumberValueRangeProcessor for PHP4.
1448 * smoketest.php: Split the regression test for bug#193 into separate
1449   versions for PHP4 and PHP5 as the previous version only worked for PHP5.
1451 Python:
1453 * python/docs/index.html: Promote the Pythonic iterators, and deprecate the
1454   non-pythonic iterators.  Make it clearer that the "sequence API" is
1455   deprecated.
1457 * Add test of a custom ValueRangeProcessor (ie, one written in python).
1459 * Update the examples to use the new-style attributes to access MSet item
1460   values rather than the old-style MSET_* constants.
1462 * Document MSET_DOCUMENT.
1464 Ruby:
1466 * smoketest.rb: Rename test of metadata access methods which had been named the
1467   same as the matchdecider test due to a copy-and-paste error.
1469 Xapian-bindings 1.0.3 (2007-09-28):
1471 General:
1473 * Wrap new methods Database::get_metadata() and
1474   WritableDatabase::set_metadata().
1476 * "make uninstall" now removes the loadable module we install for each of
1477   the bindings.
1479 * "make distcheck" now works.
1481 * Distribution tarballs are now in the POSIX "ustar" format since it saves
1482   about 40KB and we need to use it for xapian-core anyway.
1484 Packaging:
1486 * RPMs: Package xapian.php.
1488 CSharp:
1490 * Remove wrapper for ValueRangeProcessor::operator(), since it can't be
1491   usefully used currently.
1493 Java:
1495 * Remove wrappers for the Muscat36 backend, which has now been dropped from the
1496   C++ library.
1498 * "make clean" now removes the class files generated for inner classes.
1500 PHP:
1502 * Add feature test for DateValueRangeProcessor when used with QueryParser.
1504 * ValueRangeProcessor::apply() can now be called from PHP (bug#193).  This
1505   isn't actually very useful, since you can't subclass it in PHP currently.
1507 * Fixed wrapping of Enquire::set_cutoff() - previously this would only work
1508   if the third parameter was specified and a floating point number (e.g. 0.0).
1510 * php/docs/bindings.html: Fix errors in example code.
1512 Python:
1514 * ValueRangeProcessor::operator() is now wrapped as a __call__ method in
1515   Python which takes two strings and returns a 3-tuple (value_number,
1516   modified_begin, modified_end).  Previously this always failed with a
1517   type error, so this doesn't break existing code.
1519 * python/pythontest.py: Interpret any commandline arguments as a list of
1520   tests to be run (the default is to run all tests).
1522 * README,python/docs/bindings.html: Add a note about the problems with
1523   mod-python (as described in bug #185).
1525 * python/pythontest.py: Delete the database handles before deleting a database
1526   to fix problems running the Python tests on MS Windows (bug#179).
1528 * "make clean" now removes testsuite.pyc.
1530 Ruby:
1532 * Check for RUBY_INC, RUBY_LIB, and RUBY_LIB_ARCH in the environment or on
1533   the configure command-line.  The defaults for RUBY_LIB and RUBY_LIB_ARCH are
1534   now the site-specific directories, which is more correct when building
1535   from source.  Debian packages, etc can override this by setting RUBY_LIB and
1536   RUBY_LIB_ARCH.
1538 Tcl:
1540 * Check for TCL_LIB in the environment or on the configure command-line to
1541   allow installing without root access more cleanly.
1543 Xapian-bindings 1.0.2 (2007-07-05):
1545 Documentation:
1547 * Document use of PYTHON_LIB and PHP_EXTENSION_DIR instead of pylibdir and
1548   phpextdir.
1550 * Remove documentation of removed "--with-swig" configure option.
1552 General:
1554 * Add methods of NumberValueRangeProcessor for serialising and
1555   unserialising doubles.
1557 * Add methods and constants supporting spelling correction and synonyms.
1559 * Value of XAPIAN_CONFIG supplied to configure is now passed to distcheck,
1560   to ensure that it works with uninstalled copies of Xapian.
1562 * Value of PYTHON_LIB supplied to configure is now respected - previously
1563   it was documented, but ignored.
1565 * Add support for supplying PHP_EXTENSION_DIR to configure.
1567 * Change to using "%include", rather than reproducing contents of header
1568   files, for "queryparser.h", "document.h" and "postingiterator.h".
1570 * Add new form of get_mset() which allows a matchspy matchdecider to be
1571   set.
1573 * RPMs: Don't mention %makeinstall in a .spec file comment as that makes RPM
1574   explode.  Add in a missing "mv" in the command for installing tcl8
1575   documentation.
1577 CSharp:
1579 * Fix rule handling parallel make to include xapian_wrap.h
1581 PHP:
1583 * Install xapian.php as <PREFIX>/share/php<PHPMAJOR>/xapian.php.  There
1584   doesn't seem to be a standard location, but this works for Debian at
1585   least, and it seems better to at least try to install it.
1587 * Rename ValueRangeProcessor and subclasses and TermGenerator to have a Xapian
1588   prefix for PHP4.
1590 Python:
1592 * Fix a threading problem: the GIL was not being acquired in the exception
1593   handling code before setting the Python exception state, leading to
1594   various memory corruption symptoms in threaded programs.
1596 * Add special iterators to Database for synonyms, synonym_keys and
1597   spellings.
1599 * Add test cases for OP_VALUE_RANGE queries, getting spelling corrections,
1600   synonym iterators and spelling iterators.
1602 * In the test suite, expect_query() now adds "Xapian::Query(" and ")" around
1603   the expected description to make the tests more readable.
1605 Xapian-bindings 1.0.1 (2007-06-11):
1607 Documentation:
1609 * NEWS: Fix the recent headings which said "Xapian-core" to say
1610   "Xapian-bindings".
1612 General:
1614 * Wrap Xapian::Query constructor for creating ValueRange queries.
1616 * Wrap new forms of Xapian::Database::allterms_begin() and allterms_end()
1617   which take a prefix.
1619 Packaging:
1621 * RPMs: Use "make install" instead of %makeinstall to avoid doubled
1622   %{buildroot} prefix on most files which we then have to work around.
1624 CSharp:
1626 * SimpleIndex now uses Xapian.TermGenerator.
1628 * SimpleSearch now uses Xapian.QueryParser.
1630 * New SimpleExpand example.
1632 * Document explicitly how STEM_SOME constants are currently wrapped.
1634 * Update GetTermName() reference in documentation to GetTerm().
1636 * SmokeTest.cs: Update comment about Portable.NET bug - the bug is fixed in
1637   their CVS repo, and the fix should be in their 0.8.2 release.
1639 Java:
1641 * `configure --help' documented that environmental variable JNI_INCLUDE_DIR was
1642   looked at, but in fact its value was read but ignored.  We now use it as the
1643   first place to look for jni.h.
1645 * configure will now automatically add an extra "-I" for the
1646   linux/solaris/win32 subdirectory which Sun's JDK requires.
1648 * Document JAVA_HOME and JDK_HOME in ./configure --help and mark them as
1649   "precious" so their values are preserved for when configure is automatically
1650   rerun.
1652 PHP:
1654 * Enquire::get_mset(first, maxitems, omrset) now works for PHP5.
1656 * The PHP examples have been rewritten to be clearer and to make use of the
1657   new XapianTermGenerator class.
1659 Python:
1661 * Python examples now use xapian.QueryParser and xapian.TermGenerator.
1663 * Add support for prefix-restricted pythonic allterms iterators.
1665 * Update documentation in a couple of places to refer to updated replacements
1666   for MSetIterator.
1668 * Change testsuite output to be more vim-friendly (vim should be able to jump
1669   to the right lines now).
1671 * __str__ on Xapian::Error now includes extra information in some cases (the
1672   error_string and context, if they are set).
1674 * python/smoketest.py: Eliminate uses of the legacy sequence API.
1676 * python/pythontest.py: The legacy sequence API is only supported for Python
1677   2.3 and later, so don't run tests for it when running under Python 2.2.
1679 * We now generate and install xapian.pyo as well as xapian.pyc.
1681 Ruby:
1683 * The Ruby examples now use the Xapian::QueryParser and Xapian::TermGenerator
1684   classes.
1686 * Add missing rename for the C++ TermGenerator::set_document() method so it can
1687   be used as "tg.document = doc" in Ruby.
1689 * Fixed compilation on Mac OS X and warning from GCC on 32-bit Linux platforms.
1691 Tcl:
1693 * tcl8/docs/examples/simpleexpand.tcl: New example to demonstrate relevance
1694   feedback, based on C++ simpleexpand.cc.
1696 * tcl8/docs/example/simpleindex.tcl: New simpler example making use of the
1697   TermGenerator class.
1699 * tcl8/docs/example/simplesearch.tcl: New simpler example making use of the
1700   QueryParser class.
1702 * tcl8/docs/bindings.html: Document how constants are wrapped.
1704 * Update smoketest and examples to require version 1.0.0 - previously this
1705   required 0.9.6, which failed since TCL doesn't accept differing major
1706   version numbers.
1708 * pkgIndex.tcl is now generated by configure.
1710 Packaging:
1712 * The required automake version has been lowered to 1.8.3, so RPMs can now be
1713   built on RHEL 4 and SLES 9.
1715 Xapian-bindings 1.0.0 (2007-05-17):
1717 Documentation:
1719 * Document Unicode support for each language.
1721 * Assorted minor improvements and typo fixes.
1723 General:
1725 * Add wrappers for ExpandDecider, and Enquire::get_eset() variants which use
1726   it, for languages where SWIG supports directors.
1728 * Wrap new features: TermGenerator, ValueRangeProcessor hierarchy, the
1729   OP_VALUE_RANGE query operator, the new overloaded form of parse_query, which
1730   allows the "default_prefix" argument to be supplied, QueryParser flags
1731   FLAG_PURE_NOT and FLAG_PARTIAL.
1733 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
1735 * Remove wrappers for deprecated features removed from the C++ API (see
1736   docs/deprecation.html in xapian-core for full details and upgrade
1737   information).
1739 * Deprecate ESetIterator::get_termname() in favour of ESetIterator::get_term().
1741 * QueryParserError is now a real error, so remove special handling for "const
1742   char *" exceptions.
1744 * Use a stamp file in "make" rules with multiple targets so that parallel
1745   make works.
1747 * configure: Now quotes $PYTHON, etc so that you can specify a program with
1748   arguments.
1750 * configure: If the user specifies a program which doesn't exist (e.g.
1751   PYTHON=/opt/bin/ptyhon) don't autoprobe after failing to find it.
1753 * configure: Disable probes for f77, gcj, and rc completely by preventing
1754   the probe code from even appearing in configure - this reduces the size of
1755   configure by 28% and should speed it up significantly.
1757 * configure: If the version check against the xapian-core version detects a
1758   mismatch, we now issue a warning rather than a hard error since if you're
1759   careful this can work.  The warning is issued late on in configure, so it's
1760   harder for the user to miss.
1762 * configure: The --with-swig option has been removed.  It no longer has a
1763   purpose as we now ship the files which are generated by SWIG.
1765 Portability:
1767 * The PHP bindings can now be built with MSVC for Microsoft Windows.
1769 CSharp:
1771 * When using Mono 1.2, we must build with gmcs (the C# 2.0 compiler) rather
1772   than mcs to avoid segmentation faults at runtime due to unimplemented
1773   features in mcs.  Document this, and update configure to prefer gmcs.
1775 * The return type of MatchDecider::operator() is now `bool' rather than `int'
1776   (in line with the same change in the C++ API).
1778 * Xapian.Stem.StemWord() deprecated in favour of Xapian.Stem.Apply().
1780 Java:
1782 * The Java bindings have been updated to use C++ replacements for deprecated
1783   methods, so they still build.  The Java wrappers still provide the old
1784   deprecated names for now though.  The longer term plan is to replace the
1785   hand-written JNI with SWIG generated wrappers (work has now begun on this)
1786   which is likely to require some API changes, and it seems more sensible to
1787   make any changes to align with C++ API changes at the same time.
1789 * Enquire.getQuery() is implemented entirely in Java, so strip out the unused
1790   MyQuery mechanism, and so fix a memory link which it caused (bug#105).
1792 PHP:
1794 * Fix undefined behaviour in get_matching_terms().
1796 * Document the (existing) renaming of methods which are PHP reserved words
1797   (empty() to is_empty() and clone() to clone_object()).
1799 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
1801 Python:
1803 * The Python bindings now throw exceptions as classes with a hierarchy which
1804   mirrors that of the C++ Xapian::Error and its subclasses.  The xapian.Error
1805   base class inherits from the standard Python Exception class.
1807 * All Python methods which accept strings can now be passed either a unicode
1808   object or a simple string.  Strings are returned as simple strings: unicode
1809   input will be returned as utf-8 encoded output.  The documentation now
1810   contains a "Unicode" section.
1812 * The Python bindings should now be usable more efficiently from threaded
1813   Python applications since we now use SWIG's -threads option when generating
1814   them, so that the GIL is released during long-running Xapian operations
1815   (bug#137).
1817 * Most classes, methods, functions, etc now have docstrings which are either
1818   automatically extracted from the C++ documentation comments, or overridden by
1819   more appropriate versions.
1821 * Most of the Pythonic iterators now return an object instead of a sequence,
1822   which means they now lazily fetch the information which previously had to be
1823   fetched to put it in the sequence.  The old sequence API is supported for
1824   compatibility, but is scheduled for removal in Xapian 1.1.0.
1826 * Those Python iterators which have skip_to() methods now return the item
1827   skipped to, and next() will return the following item.  Previously, they
1828   returned None, and next() returned the item skipped to.  Several bugs in the
1829   skip_to() wrappers were fixed.
1831 * Because of the lazy access, some objects returned by iterators will raise
1832   an error if the lazy evaluation happens after the iterator has moved on
1833   (since the underlying Xapian API doesn't allow efficient access to the
1834   information in this situation).  The exact semantics are defined in the
1835   docstrings for each iterator.
1837 * Those Pythonic iterators which return only a list of terms now return
1838   simple strings, instead of a sequence or an object containing the term.  This
1839   is an incompatible change with earlier releases.  The affected iterators are
1840   Enquire.matching_terms, Query.__iter__, QueryParser.stoplist and
1841   QueryParser.unstemlist.
1843 * The contents of an MSet can now be iterated in the standard Python way.
1844   The iteration will return MSetItem objects.  The __contains__ and __getitem__
1845   methods are also implemented, allowing the "in" and [] operators to work.
1846   MSet.__getitem__ is a synonym for MSet.get_hit.
1848 * MSet.get_hit() now returns an MSetItem object instead of an MSetIterator,
1849   so that lazy access to its attributes is supported.  MSetItem has some
1850   deprecated methods which mimic the MSetIterator interface to allow old code
1851   to work without modification until release 1.1.0.
1853 * MSetItem provides access to the collapse_key and collapse_count, which
1854   weren't accessible from the sequence returned by the iterators before this
1855   release.
1857 * Out-of-range access to MSets will now raise an IndexError - it used to
1858   cause undefined behaviour (usually a crash).
1860 * The Python testsuite is now much more extensive, and supports colour output
1861   and verbosity levels, much like the C++ testsuite.  Tests of deprecated
1862   features are separated out, so that they can easily be removed when the
1863   features are removed.  The Python tests currently focus mainly on Python
1864   specific iterators and related functionality - general Xapian behaviour is
1865   tested by the C++ testsuite.
1867 * The pure Python code in the bindings now uses new-style classes, since we
1868   have required Python >= 2.2 since Xapian release 0.9.9.
1870 * Enquire.get_matching_terms is now deprecated - use Enquire.matching_terms
1871   instead.
1873 * The get_description() method which many classes support has been deprecated
1874   in favour of new more pythonic __str__ methods, so that the str() builtin can
1875   be used.  get_description() is deprecated and scheduled for removal in 1.1.0.
1877 Ruby:
1879 * We no longer regard the Ruby bindings as "beta quality", so remove the
1880   warning from their documentation.
1882 * Document that that C++ operator() becomes the method "call" in Ruby.
1884 * Don't read termfreq in safe wrapper for Document::termlist_begin().  Don't
1885   read wdf in safe wrapper for Database::allterms_begin() (bug#133).
1887 Tcl:
1889 * Deprecated Xapian::Stem's stem_word() method in favour of apply().
1891 Xapian-bindings 0.9.10.1 (2007-04-04):
1893 PHP:
1895 * Fix PHP5 class wrapper generation in a few cases for overloaded methods with
1896   default parameters.  The most notable case was a missing Query constructor
1897   which meant that QueryParser was unusable.
1899 * Fix compilation of the PHP4 bindings with ZTS-enabled versions of PHP
1900   (which mostly seems to mean the MS Windows version).
1902 * Fix PHP5 crash on exit with ZTS-enabled versions of PHP (which mostly
1903   seems to mean the MS Windows version).
1905 * Add note to the documentation that PHP examples are written for CLI version
1906   of PHP, but that the bindings work with any version.
1908 * Add check to all PHP examples that they are being run under a CLI version of
1909   PHP.
1911 Python:
1913 * simpleexpand.py: Print each term's expand weight as a floating point value,
1914   not an integer.
1916 Ruby:
1918 * INSTALL: document how to install Xapian's Ruby bindings in your home
1919   directory.
1921 Xapian-bindings 0.9.10 (2007-03-04):
1923 Java:
1925 * Under Mac OS X, automatically look in the standard location for jni.h,
1926   and automatically rename the JNI library we build to ".jnilib", as is
1927   required by the OS X JVM.
1929 * java/README: Note success with Sun's JDK 1.5.0_06-b05, plus the requirement
1930   to add the linux header directory to the include path when using this JDK.
1932 * Add missing default constructor for RSet class - it's not much use without
1933   this!
1935 * Fix Enquire.getESet() to actually work.
1937 * Fix bug in ESetIterator.hasNext().
1939 * Fix MatchDecider and ExpandDecider so subclassing in Java actually works.
1941 * Fix memory leak with some JVMs in the "Query from array" constructor.
1943 * Fix memory leak in Enquire.setQuery().
1945 * SmokeTest.java: Add regression tests for RSet default constructor,
1946   Enquire.getESet(), ESetIterator.hasNext(), MatchDecider, ExpandDecider.
1947   Add feature tests for Enquire.getQuery(), and to make sure we get passed
1948   the right document in a java subclass of MatchDecider.
1950 * configure: Look for jni.h in $JAVA_HOME/include and $JDK_HOME/include if the
1951   respective variables are set.
1953 PHP:
1955 * Update the documentation to fix out-of-date information and document the
1956   differences between the PHP4 and PHP5 wrappers.
1958 * Update the examples to use the new Object Oriented API, and provide versions
1959   for both PHP4 and PHP5.
1961 * Add a "simpleexpand" example.
1963 * For PHP4, Xapian::DB_CREATE_OR_OPEN should be wrapped as
1964   Xapian_DB_CREATE_OR_OPEN not DB_CREATE_OR_OPEN, so wrap it with the
1965   new name, but keep the old name for now for backward compatibility.
1967 * configure: Try `$(PHP_CONFIG) --php-binary` when looking for a PHP
1968   interpreter - this works with PHP5.
1970 * configure: Remove the sanity check for PHP_EXTENSION_DIR added in Xapian
1971   0.9.8 - if Xapian is the first PHP extension to be installed, the extension
1972   directory may not exist and "make install" will create it.
1974 * configure: If zend.h isn't found and configure was run with "--with-php",
1975   exit with an error rather than automatically disabling PHP support.
1977 Python:
1979 * Fix a problem which preventing building for Python 2.5 on 64 bit platforms.
1981 Packaging:
1983 * RPMs: Add support for passing "--without python" to rpmbuild.  Document the
1984   various "--without" options in a comment at the start of the .spec file.
1986 * RPMs: Remove "." from the end of the Summary.
1988 Xapian-bindings 0.9.9 (2006-11-09):
1990 Documentation:
1992 * Ship our custom INSTALL file rather than the generic one from autoconf which
1993   we've accidentally been shipping instead since 0.9.5.
1995 General:
1997 * Wrap Flint::open() and Flint::open_writable().
1999 * configure: Require SWIG 1.3.30 (1.3.30 isn't out yet, but 1.3.30rc1 is
2000   suitable).
2002 Python:
2004 * Generate the bindings using SWIG 1.3.30rc1 which fixes a build error on 64
2005   bit platforms with Python 2.5.
2007 Packaging:
2009 * RPMs: Prevent binaries getting an rpath for /usr/lib64 on FC6.
2011 * RPMs: The Python bindings now require Python >= 2.2.
2013 Portability:
2015 * configure: Remove unnecessary backticks from tclsh version test.
2017 Xapian-bindings 0.9.8 (2006-11-02):
2019 General:
2021 * Wrap the "prog" form of Remote::open() (which is suitable for general purpose
2022   use as of 0.9.7) and the Remote::open_writable() methods (new in 0.9.7).
2024 * The C++ method QueryParser::parse_query() current throws "std:string"
2025   exceptions if there's a parse error.  Previously the bindings didn't catch
2026   these.  Now we catch them and handle them as if they were exceptions of
2027   type Xapian::QueryParserError (in anticipation of this changing in
2028   xapian-core).  Added testcases for this for PHP, Python, and C#.
2030 * configure: Note that SWIG is only useful for Xapian developers in --help
2031   output.
2033 * configure: If we failed to find any languages to build for, give a more
2034   helpful message.
2036 CSharp:
2038 * SmokeTest.cs: Fix warning about unused variable in OP_ELITE_SET check.
2040 Java:
2042 * configure: Fix check for jni.h in /usr/lib/jvm/java-gcj/include to actually
2043   work rather than using the cached failure of the first jni.h check.
2045 * SmokeTest.java: Fix check for value of Query.OP_ELITE_SET.
2047 * SmokeTest.java: Avoid gcj "set but not used" warning.
2049 PHP:
2051 * configure: Sanity check PHP_EXTENSION_DIR and PHP_INC.
2053 * smoketest4.php,smoketest5.php: Check the exception message given by the
2054   DocNotFoundError testcase.
2056 Python:
2058 * Drop support for Python 2.1.
2060 Xapian-bindings 0.9.7 (2006-10-10):
2062 Documentation:
2064 * NEWS: Fix the recent headings which said "Xapian-core" to say
2065   "Xapian-bindings".
2067 General:
2069 * Specify required automake version in the call to AM_INIT_AUTOMAKE in
2070   configure.ac.
2072 * If we're building with GCC 4.0 or higher, pass -fvisibility=hidden when
2073   compiling SWIG generated code which makes the compiled modules a few percent
2074   smaller and perhaps a little faster.
2076 * Wrap the newly implemented transaction API.
2078 * configure: Use "-fno-strict-aliasing" when compiling all the SWIG bindings
2079   (this option was supposed to be used to compile the Python bindings from
2080   0.9.3 onwards, but this wasn't actually working correctly).
2082 * Use CVS snapshot of SWIG to generate files (fixes bugs #83, #85).
2084 * In maintainer-mode, "make clean" now removes the SWIG generated files
2085   which would otherwise only be removed on "make maintainer-clean".
2087 CSharp:
2089 * Xapian::MatchDecider can now be subclassed in C#.
2091 * The value of OP_ELITE_SET was wrong in C# which caused an error if you tried
2092   to use it.  This has been fixed and a regression test added.
2094 * SmokeTest.cs: Added exception handling test.
2096 Java:
2098 * Correct two misuses of delete to delete[].  Fixes bug#78.
2100 * configure: We need to look for jni.h in /usr/lib/jvm/java-gcj/include on some
2101   Debian and Ubuntu boxes at least.
2103 PHP:
2105 * We now generate class wrappers for PHP5.
2107 * We now generate proxy classes for PHP4, which is an incompatible change
2108   from previous versions of xapian-bindings.  A perl script to upgrade
2109   your scripts is included.
2111 * smoketest.php:
2113   + Now that we're throwing PHP exceptions with PHP5 we need separate versions
2114     of the exception handling test for PHP4 and PHP5.  Fixes bug#76.
2116   + Rely on xapian.php to load the extension module for us.
2118   + Fix error messages to show PHP code, not Python code.
2120 * When running smoketest.php, pass the "-q" option to php, which suppresses
2121   HTTP header output for PHP < 4.3 and is ignored for compatibility by more
2122   recent versions of PHP.
2124 * configure: Fix typo - PHP_tried should be PHP_found.  This might have caused
2125   the PHP interpreter not to be found in some cases when it was actually
2126   available, but it's only used to run the smoketest not for building the
2127   bindings.
2129 Python:
2131 * configure: Fixed check for PYTHON_PATHSEP to use $PYTHON rather than python,
2132   and also report the check and its result to the user.
2134 * python/Makefile.am: xapian.pyc can't be generated until _xapian.la has been
2135   built, so add an explicit dependency so that this works reliably in parallel
2136   builds.  Fixes bug#77.
2138 * In examples and documentation, don't call the MatchDecider class/object
2139   "matcher", since we use the term "matcher" to mean something else in
2140   the library documentation.
2142 * smoketest.py:
2144   + Add test of exception handling.
2146   + Add test that MatchDecider can be subclassed successfully.
2148 * Wrap TermIterator::skip_to() so that it can be used from the TermIter
2149   pythonic iterator class.
2151 Ruby:
2153 * Xapian::MatchDecider can now be subclassed in Ruby.
2155 * configure: Look for ruby interpreter as "ruby1.8" since it's called that
2156   (with no "ruby" alias) on Ubuntu dapper at least.
2158 * simplesearch.rb: Lowercase terms before stemming.  "First ten" is inaccurate
2159   since we may have less than 10 matches, so say "1-<N>" instead.
2161 * simplematchdecider.rb: Implemented.
2163 Tcl:
2165 * Implement saner exception handling for Tcl and document it.
2167 * smoketest.tcl:
2169   + Add check that xapian::Query_OP_ELITE_SET has the right value.
2171   + Rework how the smoketest gets run to eliminate special code for using
2172     uninstalled bindings from smoketest.tcl itself.  This allows the smoketest
2173     to be run using installed bindings, and also makes it a better example
2174     program.
2176   + Add test for exception handling.
2178   + Send error messages to stderr.
2180   + Add comment about Tcl storing zero bytes as \xc0\x80.
2182 * simpleindex.tcl,simplesearch.tcl: Print $errorCode in the exception handler.
2184 * For SVN snapshots, remove any _svn6789 suffix from the Xapian version number
2185   used for the Tcl bindings.
2187 Xapian-bindings 0.9.6 (2006-05-15):
2189 Documentation:
2191 * INSTALL: Add section describing how to install without root access.
2193 General:
2195 * Updated to reflect the renaming of Xapian::xapian_version_string and
2196   companions to Xapian::version_string.
2198 * Wrap optional length parameter to Enquire::set_query().
2200 * In PHP, Python, and Tcl bindings, rename get_document_id to get_docid for
2201   consistency.  Keep get_document_id as an alias for now for backward
2202   compatibility.
2204 * Fixed ESet::empty() to return bool instead of Xapian::termcount (this was
2205   probably a largely harmless error).
2207 * Stop SWIG from adding exception handling wrappers to the calls which return
2208   version strings, since they can't throw exceptions.
2210 * xapian.i: Removed superfluous "const" from return type "docid" which is just
2211   a typedef for an unsigned integer type.
2213 * configure: Add some missing "checking ..." messages so the user has more idea
2214   what is going on.
2216 * Language specific util.i files can now define
2217   XAPIAN_TERMITERATOR_PAIR_OUTPUT_TYPEMAP and
2218   XAPIAN_MIXED_VECTOR_QUERY_INPUT_TYPEMAP to indicate which optional typemaps
2219   are provided for each language.  This avoids needing to keep this
2220   information in two different places.
2222 * xapian.i: Uncomment commented-out parameter names and fix duplicate
2223   parameter names (for the benefit of bindings which use the parameter names,
2224   like the OO PHP5 patch for SWIG I'm working on...)
2226 Portability:
2228 * configure: Fix warning flags passed for Intel C++ compiler.
2230 CSharp:
2232 * We now support building with Portable.NET.
2234 * Note that the passing of strings from C# into Xapian and back isn't currently
2235   zero byte safe.  If you try to handle string containing zero bytes, you'll
2236   find they get truncated at the zero byte.
2238 * C# bindings now build and pass tests when srcdir != builddir.
2240 * In configure.ac, the "#" in "C#" seems to sometimes confuse autoconf so
2241   always say "CSharp" instead.
2243 * Not all machines are set up to run compiled C# programs when invoked
2244   directly, so get configure to check if we can, and otherwise see if using
2245   mono or ilrun works.  If not, just skip the C# tests.
2247 * configure: If "mcs" isn't found, we now look for a CSharp compiler as "gmcs"
2248   (alternative name for "mcs"), "cscc" (Portable.NET), and then "csc"
2249   (Microsoft, but we check it isn't the unrelated Chicken csc program.)
2251 * Move the C# specific %rename list to csharp/util.i.
2253 * Store the strong name key in the key container so we reuse it for later
2254   builds.
2256 * Wrap the version functions as more sensible names and document them (and
2257   continue to provide the older undocumented names for now just in case anyone
2258   was using them.)
2260 * Set the version of XapianSharp.dll correctly when building a snapshot from
2261   SVN and set informational attributes (which e.g. MS Windows Explorer shows.)
2263 * SmokeTest.cs: Add test of version functions.
2265 Guile:
2267 * The Guile bindings don't work and aren't being actively worked on, so we're
2268   no longer including them in the distributed tarball to avoid disappointing
2269   users who notice a "guile" subdirectory.  It also makes the download smaller.
2271 Java:
2273 * Simplify (and improve portability of) run-java-test by using "libtool
2274   --mode=execute"'s -dlopen option.
2276 * Need to make sure "built" subdirectory exists or building from clean fails.
2278 * Fix "make check" to work when srcdir != builddir.
2280 PHP:
2282 * Using "php -c myphp.ini" still loads the system php.ini (at least for PHP
2283   4.3.10), so use "php -n" and then set the options we specifically want using
2284   "-d".
2286 * Fix the smoketest invocation to work better when srcdir != builddir.
2288 * Look for PHP interpreter first in prefix given by "php-config --prefix".
2290 * Fix SWIG_RuntimeError to be handled as an exception in PHP5.
2292 * simplesearch.php: MAX_PROB_TERM_LENGTH isn't used here so remove it.
2294 * smoketest.php:
2296   + Add test for version reporting functions
2298   + If a test fails, say which one to aid debugging.
2300   + Added simple test that zero-bytes are handled correctly when passing
2301     strings to and from Xapian.
2303 Python:
2305 * README: Note that Python bindings have been built with MSVC.
2307 * Install xapian.py and xapian.pyc as _DATA not _SCRIPTS because we don't want
2308   to make them executable (they don't have a #! line).
2310 * simplematchdecider.py: Rename confusingly-named "mymatcher" to
2311   "mymatchdecider".  Add description of what this example does.
2313 * simpleexpand.py: Don't define MAX_PROB_TERM_LENGTH as it isn't used.
2315 * smoketest.py: Added simple test that zero-bytes are handled when passing
2316   strings to and from Xapian.
2318 Ruby:
2320 * Added new Ruby bindings from Paul Legato.
2322 Tcl:
2324 * smoketest.tcl:
2326   + Add test for version reporting functions
2328   + If a test fails, say which one to aid debugging.
2330   + Added simple test that zero-bytes are handled correctly when passing
2331     strings to and from Xapian.
2333 Xapian-bindings 0.9.5 (2006-04-08):
2335 Documentation:
2337 * HACKING,README: Split off HACKING to contain information which is only
2338   relevant to those wishing to modify the bindings.
2340 General:
2342 * SWIG-based bindings are now built with SWIG 1.3.29.
2344 * configure: Report which languages we're building bindings for just before
2345   configure finishes.
2347 * xapian.i: Make the stub definitions for disabled backends static.
2349 * configure: Don't quote $PHP in AC_PATH_PROGS to avoid "checking for ... no"
2350   message.
2352 * xapian.i: Wrap new method Enquire::set_sort_by_relevance_then_value().
2354 Packaging:
2356 * RPMs: xapian-bindings.spec.in: Use "%{_libdir}" instead of "/usr/lib" for
2357   Python bindings to support 64 bit systems.
2359 * RPMs: Package the C# bindings.
2361 Portability:
2363 * java/run-java-test: Fix to work on platforms where LD_LIBRARY_PATH has a
2364   different name.
2366 * configure: Detect Intel's C++ compiler and set suitable warning flags to
2367   avoid noise from compiling generated code.
2369 CSharp:
2371 * Rename Database::GetDoccount() to Database::GetDocCount() for consistency.
2373 Guile:
2375 * configure: Disable --with-guile since Guile support doesn't currently work.
2377 Java:
2379 * Override deprecation warnings for Xapian methods/functions/etc.
2381 * SmokeTest.java: Write a helpful diagnostic to stderr if a check fails so we
2382   have some idea what went wrong!
2384 * Rework how we include headers to get hash_map to avoid compiler warnings
2385   since it's usually not in the std namespace nowadays.
2387 * Previously the "all" target also ran the "install" target, but this has
2388   proved very problematic, so change "make check" to use the uninstalled JNI
2389   glue library, and update the instructions to say that "make install" is now
2390   required.
2392 * Use JAVA_PATHSEP when specifying the classpath for compiling .java files to
2393   .class files.
2395 * README: Note that some platforms need "-pthread" or similar flags.
2397 * Add a new Query constructor wrapper which take an OP_xxx and an array of
2398   Query objects.
2400 * Compiling a .java file to a .class file now deletes the .jar file to ensure
2401   it gets updated.
2403 PHP:
2405 * php -n avoids reading any php.ini, but the compiled in default may be to
2406   enable the dubiously named "safe_mode" which prevents dl() being used so
2407   "make check" fails.  So instead provide a very simple php.ini which turns off
2408   safe_mode and makes sure enable_dl is on.
2410 * Fix handling of bool parameters when resolving overloaded methods and/or
2411   default arguments.  This fixes Enquire_sort_by_value() to work when the
2412   second argument is specified.  Added regression test for this case.
2414 * simpleindex.php: Lowercase terms before stemming.  Fixes bug#73.
2416 * Fix segmentation fault when PHP "Null" is passed where C++ wants an object
2417   passed by reference.  Fixes bug#74.
2419 * simpleindex.php: Flushing after every call to WritableDatabase_add_document
2420   isn't required and will kill performance, so stop doing it.  Fixes bug#75.
2422 Python:
2424 * Use the fairly new "swig -O" option for the "modern" python bindings as
2425   it generates a smaller glue library and runs faster.  Some of the features
2426   enabled also work on python 2.1, so enable these for the "olde" bindings.
2428 * configure: Catch the case where the user has python installed but not the
2429   module "distutils.sysconfig" and explain that they probably need to install a
2430   python-dev or python-devel package.
2432 * "make check" now works in VPATH builds.
2434 * smoketest.py: If a check fails, write a diagnostic message to stderr so we
2435   know which check it was!
2437 * smoketest.py: catch Exception objects and print them.
2439 * smoketest.py: Add feature tests for the various pythonic iterator
2440   wrappers
2442 * python/docs/bindings.html: Document the Pythonic iterators.
2444 * Fix TermIter not to try to read termfreqs or positions if they aren't
2445   meaningful for the current TermIter.
2447 Xapian-bindings 0.9.4 (2006-02-21):
2449 Documentation:
2451 * COPYING: Updated FSF address.
2453 General:
2455 * Wrap Stopper::get_description().
2457 * Wrap xapian_version_string() and related functions.
2459 Portability:
2461 * If we're overriding MACOSX_DEPLOYMENT_TARGET then override it for commands
2462   run from "make" too.
2464 PHP:
2466 * Fix so that generated code compiles with ZTS-enabled PHP (which is the
2467   default on Windows).
2469 Python:
2471 * smoketest.py: Test wrapping of xapian_version_string() and related functions.
2473 Xapian-bindings 0.9.3 (2006-02-16):
2475 Documentation:
2477 * README: Updated and expanded (now covers supported platforms, and lists
2478   criteria which bindings for an additional language need to fulfil before
2479   we're likely to accept them).
2481 * INSTALL: Updated and improved.
2483 * TODO: Move C#-specific TODO to top level so we can track to-do items for
2484   all languages.
2486 General:
2488 * configure: Change how the user selects which bindings to build.  If no
2489   --with* arguments are passed, then we default to building bindings we detect
2490   the required tools for (as before).  But instead of requiring the user to
2491   deselect all bindings they don't actually want, we now let them select the
2492   bindings they do want.  So "./configure --with-python" will only build the
2493   python bindings (and will fail if the required tools aren't installed).
2495 * Every wrapped method contains exception handling code.  The bulk of this
2496   is now factored out into a single helper function, which cuts the compile
2497   time by around a factor of 3 and halves the size of the stripped library
2498   (figures are for Tcl on x86_64).
2500 * configure: Rework how XAPIAN_CXXFLAGS is passed through so that the user can
2501   override CXXFLAGS in the make invocation like so: make CXXFLAGS=-g
2503 * configure: Bump required SWIG version to 1.3.28 and drop the special
2504   requirement for 1.3.22 for PHP (hurrah!)  Note that you don't need
2505   SWIG to install the bindings - SWIG is run by the Xapian developers
2506   so these updated requirements are only relevant if you want to modify
2507   the bindings.
2509 * Eliminate separate Makefile in each examples subdirectory, which makes the
2510   build system simpler, smaller, and a little faster.
2512 * xapian.i: Include default constructors for all classes so that SWIG knows it
2513   doesn't have to use SwigValueWrapper for them, which makes the bindings code
2514   a bit smaller and faster.  Also stop SWIG using SwigValueWrapper for
2515   std::pair<...>.
2517 * configure: Document special environmental variables which configure
2518   recognises.  Enhance handling of environmental variables so you can
2519   e.g. './configure PYTHON=python23' (previously you had to give a full
2520   path in such environmental variables or they would be ignored.
2522 Packaging:
2524 * RPM spec file:
2526   + Automatically detect the python version.
2528   + Rename "php4" references to "php".
2530   + Automatically detect the PHP extension directory.
2532   + Relax Tcl requirement to >= 8.1, since that's what we actually require.
2534   + Add support for "--without php" and --without tcl8" options to rpmbuild.
2536 Portability:
2538 * configure: On Mac OS X, ensure MACOSX_DEPLOYMENT_TARGET is set to at least
2539   10.3.  This is required to link the bindings, and it doesn't seem to be
2540   possible to link them on 10.1 or 10.2 anyway.
2542 * configure: Add -lstdc++ to XAPIAN_LIBS if we're using GCC.  OpenBSD needs it
2543   to be explicitly specified and libtool correctly handles platforms where it
2544   would have been implicitly linked with anyway.
2546 * Try to enable PHP bindings to build out of the box on cygwin (needs testing).
2548 * configure: Add missing ";;" on the last alternative in some case statements.
2550 * Only pass -no-undefined on platforms where it is required in order to link a
2551   shared library at all (it causes problems on Mac OS X in some cases).
2553 CSharp:
2555 * This release includes a lot of improvements for the C# bindings.  They're
2556   now pretty much on a par with the other language bindings.
2558 * Added documentation and examples.
2560 * Method and function names are now renamed to match C# conventions
2561   (e.g. from get_description() to GetDescription()).  This is obviously an
2562   incompatible change, but the C# bindings haven't been suitable for real world
2563   use prior to this release.
2565 * Optional parameters are now wrapped so no longer need be specified
2566   explicitly.
2568 * Overload ++ and -- for iterators.
2570 * Overload == and != for iterators.  Now comparisons with the end iterator
2571   work as expected, and SmokeTest passes.
2573 * SmokeTest now reports exceptions verbosely.
2575 * Xapian::InMemory::open() is now wrapped as Xapian.InMemory.Open(), and
2576   similarly for other database factory functions.
2578 * Heed compatibility warnings from mcs and use different forms for
2579   command-line switches to the C# compiler (presumably for compatibility with
2580   Microsoft's compiler, though the warnings don't actually say that
2581   explicitly).
2583 Guile:
2585 * Rewrote guile/util.i.  The old version caused SWIG warnings and wasn't
2586   zero-byte safe.  The guile bindings are still a long way from actually
2587   working though.
2589 Java:
2591 * Wrap optional second parameter (query length) to Enquire::set_query().
2593 * configure now probes for the Java path separator, which we then use to
2594   separate entries in the java -classpath command line option so we can
2595   build on platforms where it isn't ":".
2597 * SmokeTest.java: Expand to test more features.
2599 * java/README:
2601   + Note that the bindings work with the Eclipse javac and GIJ 4.0.1.
2603   + Add note about how wrapped methods are named.
2605 * Query.java: OP_* code 9 no longer exists, so add it to those rejected by the
2606   validity check.
2608 * Query.java: Comment out unused code.
2610 * Fixed memory leak in Query-from-array-of-strings constructor.
2612 * Eliminate the "_errormap" hashmap - we don't need to use RTTI here, since
2613   Xapian::Error subclasses can tell you their typename directly (using
2614   get_type()).
2616 PHP:
2618 * Some problems with overloaded methods in PHP have been fixed by a major
2619   overhaul of SWIG's PHP support.  So we no longer rename such methods
2620   for PHP.  This is an incompatible change, but it's easy to update your
2621   PHP scripts (just change new_Query_from_term_pair -> new_Query, etc).
2623 * Previously the documentation and simpleindex.php suggested that you
2624   should call delete_CLASS().  This was incorrect and resulted in a
2625   double-free() in some cases, so we've fixed the documentation and
2626   examples and eliminated the delete_CLASS() wrappers.  This is another
2627   incompatible change, but again easy to update for.
2629 * We now support PHP5 as well as PHP4, so the configure test now looks
2630   for either and all references to "PHP4" or "php4" have been adjusted.
2632 * PHP5 supports exceptions, so throw exceptions under PHP5.  For PHP4
2633   we now handle DocNotFoundError and FeatureUnavailableError by issuing a
2634   warning and making the method return "Null".  This isn't ideal, but it's
2635   the best we can easily do without proper exceptions.
2637 * For the smoketest, instead of using "$(PHP) -c $(srcdir)" and having an
2638   empty php.ini in srcdir (which we were failing to distribute anyway), use
2639   "$(PHP) -n" which tells PHP not to use any php.ini file.
2641 * Update PHP documentation to include new features.
2643 * Redo Xapian section in phpinfo() to look more like most other modules.
2645 * You can now construct a Query object from an array of strings or Query
2646   objects (or even a mixture).
2648 * PHP examples now give a more useful error message if a database can't be
2649   opened.
2651 * smoketest.php: Expanded the tests performed, including feature tests for
2652   the new Query-from-list constuctor.
2654 * simplesearch.php: Use newly wrapped Query-from-list constructor.
2656 * Use std::string::data() instead of c_str() as it may be more efficient for
2657   some STL implementations.
2659 * Enquire::get_matching_terms() now generates the PHP list directly from the
2660   TermIterator rather than constructing a temporary C++ std::list, which is
2661   faster and requires less temporary memory.
2663 Python:
2665 * The Python constructor xapian.Query(OP, LIST_OF_STRINGS [, PARAM]) works
2666   once again (it has been broken since 0.9.0).  Added a regression test to
2667   help keep this working.
2669 * Enhance the above constructor to accept any Python sequence (e.g. a tuple
2670   instead of a list).  Also the sequence can contain xapian.Query objects or
2671   strings or a mixture.  Documented these enhancements.
2673 * smoketest.py: Expanded the tests performed.
2675 * Convert C++ strings to python ones in a zero-byte clean way.
2677 * Added more error checking of the results of calls into the python
2678   interpreter.
2680 * If using GCC, compile the python bindings with -fno-strict-aliasing (python
2681   itself is compiled with this option to avoid problems and it appears we ought
2682   to use it too to avoid the risk of hitting the same problems, although I'm
2683   not aware of anyone actually encountering such problems).
2685 * When making xapian.pyc, "import _xapian;" before we "import xapian;" to
2686   avoid creating a broken xapian.pyc is the shared library can't be loaded for
2687   some reason.
2689 * Enquire::get_matching_terms() now generates the Python list directly from the
2690   TermIterator rather than constructing a temporary C++ std::list, which is
2691   faster and requires less temporary memory.
2693 Tcl:
2695 * Terms with a leading underscore now work (thanks to changes in SWIG).
2697 * Implement custom typemaps for Tcl, so that you can now construct a Query from
2698   a list of Query objects and/or strings, and Enquire::get_matching_terms is
2699   now wrapped.
2701 * simplesearch.tcl: Use the new Query from list constructor.
2703 * simplesearch.tcl: Fix to lowercase and stem query terms.
2705 * simpleindex.tcl: Tweak regex to not tokenise "foo--bar" as "foo-" and "bar".
2707 * simpleindex.tcl,simplesearch.tcl: Need explicit "xapian::" on constants.
2709 Xapian-bindings 0.9.2 (2005-07-15):
2711 General:
2713 * Added wrappers for new optional flags argument to QueryParser::parse_query().
2715 CSharp:
2717 * Enhance configure to check that "mcs" is actually GNU Mono mcs and not
2718   another tool with the same name.
2720 Java:
2722 * Include SmokeTest.java in the distribution so "make check" works.
2724 * Added success report for Sun java 1.4.1_01a.
2726 Python:
2728 * When converting a python list to vector<string> we know the number of elements
2729   so reserve that number in the vector.
2731 Xapian-bindings 0.9.1 (2005-06-06):
2733 General:
2735 * Releases are now created using libtool 1.5.18 and automake 1.9.5.
2737 Tcl:
2739 * Updated documentation to include information from Michael Schlenker about how
2740   to delete a database object such that the destructor gets called.
2742 Xapian-bindings 0.9.0 (2005-05-13):
2744 General:
2746 * Updated SWIG-based bindings to latest Xapian API
2748 * Improve support for building the bindings on MS Windows:
2750   + Provide stub versions of any backend functions which are disabled in the
2751     library we're wrapping to avoid a link failure on MS Windows (where the
2752     remote backend is automatically disabled).  These stubs just throw
2753     Xapian::FeatureUnavailableError.
2755   + Add -no-undefined to *_la_LDFLAGS.
2757   + Use $(PATH_SEPARATOR) or Python's os.pathsep instead of ':' where
2758     appropriate.
2760   + For python, paths for finding headers and installing libraries are now
2761     handled so they work on MS Windows; an extra static library needs to be
2762     linked in too.
2764 * Wrap the Muscat36 Database factory functions (easy to do now we have stubs
2765   for disabled backends).
2767 * Don't wrap MSet::max_size() as it's there for STL compatibility rather than
2768   being useful functionality.
2770 * configure: Fix all SWIG warnings and pass -Werror to SWIG so any which get
2771   introduced in future get fixed.
2773 * configure: Fix version test to allow for _svn6789 suffix which SVN snapshots
2774   have.
2776 * Generate SWIG bindings with SWIG 1.3.24 (except for PHP which we still use
2777   1.3.22 for as more recent versions don't work with methods with optional
2778   arguments - the arguments become non-optional!)
2780 Guile:
2782 * configure: Disable guile by default, as it needs more work.
2784 Java:
2786 * Updated to compile against 0.9.0 API.
2788 * Added missing make rule to build SmokeTestWrap.class to "make check" works.
2790 * Wrap optional parameters to Query(term) constructor.
2792 PHP4:
2794 * For PHP4, rename default Database constructor to Database_empty
2795   instead of suppressing the much more useful Database(const string &path)
2796   constructor.
2798 * Use a blank config file when running PHP4 tests to avoid problems
2799   when the bindings are already installed as an extension which is
2800   loaded automatically in the default config.
2802 * configure.ac: If configure can't find the PHP interpreter (as php4 or php),
2803   it probably just means it's not in PATH.  We only need it for running tests,
2804   so substitute a trivial shell script which just exits with code 77 so PHP
2805   tests are skipped (previously we substituted "missing" which caused the tests
2806   to fail).
2808 Python:
2810 * Added Python-style iterators ESetIter, TermIter, PostingIter, PositionIter,
2811   and ValueIter.
2813 * configure: If python is found, also check that Python.h exists (it may not be
2814   if the python-dev package (or similar) isn't installed).
2816 Xapian-bindings 0.8.5.1 (2005-02-23):
2818 General:
2820 * configure: Run compiler feature tests using the C++ compiler, not the C
2821   compiler.
2823 * Allow bindings version to have an extra "patchlevel", yet still match with
2824   corresponding xapian-core version (e.g. 0.8.5.1 and 0.8.5);
2826 Java:
2828 * Added a missing .java source file and removed several unused ones.
2830 * Fixed several glitches in the java bindings automake build system.
2832 * Use "-Wno-unused" when compiling JNI C++ code to ignore harmless
2833   warnings in generated code (we were carefully passing "-Wunused"
2834   which is the opposite of what is needed!)
2836 * Fixed a couple of warnings from GCJ.
2838 * Wrapped a few missing methods added since Eric created the bindings.  There
2839   are still some missing methods - there's now a (probably incomplete) list in
2840   java/README.
2842 * Added various useful bits of information to java/README.
2844 * Tweaked SimpleSearch.java to be more like the C++ version.
2846 PHP4:
2848 * 0.8.5 was generated with SWIG 1.3.24, but PHP support is broken there so
2849   we now generate the PHP bindings with SWIG 1.3.22 and everything else with
2850   a more recent version.
2852 * configure: Check for "php" as a program name as well as "php4", and
2853   fall-back to missing so the error message from "make check" is better.
2855 Xapian-bindings 0.8.5 (2004-12-23):
2857 General:
2859 * INSTALL: Added non-generic installation instructions.
2861 Python:
2863 * Fixed bytecode compilation of xapian.py.  xapian.pyc was being generated in
2864   the same directory as xapian.py, but Makefile.am was looking in current
2865   directory when installing it.  Additionally, VPATH builds were broken.
2866   These problems were introduced by changes in 0.8.4.
2868 Xapian-bindings 0.8.4 (2004-12-08):
2870 General:
2872 * README: Now clearly says which languages we currently support, which people
2873   are working on, etc.
2875 * Instead of requiring the user to have a really recent SWIG installed, ship
2876   the files SWIG generates.  Disable all the SWIG rules unless configure is run
2877   with --enable-maintainer-mode to make sure they aren't triggered accidentally
2878   (e.g. by make with dodgy VPATH).
2880 * configure: Require SWIG 1.3.22 or higher (but note that SWIG is no longer
2881   needed if you just want to install the bindings).
2883 * Wrap the new Database and WritableDatabase constructors which replace
2884   Auto::open().
2886 * It turns out that we do need to wrap MSet::MSet() (wrapping removed in 0.8.2)
2887   (for example, simpleexpand.py needs it).
2889 * In the Query constructor which takes a vector of terms, only call set_window
2890   if window is non-zero.  Otherwise things go wrong if we're passed an empty
2891   vector.
2893 * Second argument to Document::add_posting() isn't optional, but xapian.i
2894   indicated that it was.
2896 * xapian.i: Added wrappers for Xapian::Weight and standard subclasses.
2897   Deriving your own weight class in the scripting language isn't currently
2898   supported.
2900 * xapian.i: %name is deprecated, so use %rename instead.  This also works
2901   around a bug in SWIG 1.3.23.
2903 * configure: Removed pointless probe for a C compiler - everything we compile
2904   is C++.
2906 * configure: Reinstated the check that the bindings version matches the version
2907   of the xapian library.  It was added in 0.8.2, but accidentally removed in
2908   0.8.3.
2910 * Use newly added option `xapian-config --swigflags` which (a) avoids always
2911   passing -I/usr/include which could cause problems if we're using a Xapian
2912   install not in /usr and there's another one in /usr and (b) avoids problems
2913   if `xapian-config --cxxflags` contains flags other than -I<something>.
2915 CSharp:
2917 * Richard Boulton has put together bindings for C#.  These build successfully
2918   with the Mono tools, but the smoketest currently fails.  Unclear if the
2919   problem is the bindings or the smoketest code.
2921 Guile:
2923 * The guile bindings now build successfully, so we've enabled the guile
2924   detection machinery in configure.  They're untested though (we don't
2925   know guile!) so success or failure reports are encouraged!
2927 PHP4:
2929 * Mention the example scripts near the start of the documentation, not right at
2930   the end.
2932 * Remove documentation explicitly saying how we wrap Xapian::QueryParser and
2933   Xapian::Stem since we wrap them exactly as we wrap everything else we don't
2934   mention!
2936 Python:
2938 * Make overloaded Query(Query::op, vector<string>*, termpos) constructor
2939   work in Python.
2941 * Changed examples to use the newly wrapped Query from list of terms ctor.
2943 * Mention the example scripts near the start of the documentation, not right at
2944   the end.
2946 * python/Makefile.am: Added xapian_wrap.h as a target for the rule which runs
2947   SWIG.
2949 * Remove documentation explicitly saying how we wrap Xapian::QueryParser and
2950   Xapian::Stem since we wrap them exactly as we wrap everything else we don't
2951   mention!
2953 * Mention simpleexpand example in documentation.
2955 * Examples now report messages for Xapian exceptions.
2957 * Removed MAX_PROB_TERM_LENGTH from example scripts which don't use it.
2959 * Make the example MatchDecider exclude documents matching a value, rather than
2960   a term.  The latter is a very inefficient way to do what AND_NOT does, and we
2961   don't want examples to mislead like that.
2963 * python/docs/bindings.html: Note that you can construct a query
2964   from a list of terms, even if you can't from a list of queries.
2965   Add HTML links to the examples.
2967 * simpleindex.py: Trim spaces from the start as well as from the end of each
2968   line.  Simplify the loop slightly.
2970 Tcl:
2972 * Wrap in a tcl8 namespace "Xapian".
2974 * Added a smoketest.
2976 * Translated simpleindex and simplesearch into Tcl.
2978 * Set the Tcl package version.
2980 * Create pkgIndex.tcl so the package can be loaded in the usual Tcl way.
2982 * Install in "xapian<VERSION>" directory in the conventional Tcl way.
2984 * Added documentation for tcl8 bindings.
2986 * Use the TCL_STUBS mechanism so that compiled extensions are portable between
2987   different versions of Tcl.  This needs Tcl 8.1, so bump the required Tcl
2988   version (was 8.0).
2990 * configure.ac: Noted that the bindings can easily be compiled for use with
2991   Tcl 8.0, in case anybody needs that for some reason.
2993 * Don't wrap the factory functions which return a quartz WritableDatabase as
2994   the destructor never gets called so changes aren't flushed and the lock file
2995   isn't removed.
2997 Xapian-bindings 0.8.3 (2004-09-20):
2999 General:
3001 * Fixed mismatching versions of libtool used to produce configure and
3002   ltmain.sh.  The obvious symptom was ".so" missing from the shared object
3003   names.
3005 * RPM spec file contributed by Fabrice Colin.  Currently this packages Python,
3006   PHP4, and Tcl bindings.
3008 Java:
3010 * Pass -classpath to javac to fix build problems.
3012 * Make sure errors subdirectory is built before we try to build the jar file.
3014 * Fixed "make install" to not give libtool error.
3016 PHP4:
3018 * Include PHP4 documentation and exmples in the tarball.
3020 * Reverted "Use special SWIG PHP ldflags when linking the PHP glue library."
3021   change from 0.8.2 - it turns out we only need to pass these flags if we use
3022   swig's -noruntime option (which we don't do).
3024 Python:
3026 * Use swig's -modern switch for Python 2.2 and up - it gives cleaner, leaner,
3027   faster Python wrapper code.
3029 Tcl:
3031 * Don't install xapian.la.
3033 * Improved configure check for tcl.h to work with Fedora Core 2.
3035 Xapian-bindings 0.8.2 (2004-09-13):
3037 General:
3039 * Added wrappers for recently added methods: ESet::back() and
3040   Database::get_lastdocid(), and wrap the new optional third parameter
3041   to Enquire::set_sorting().
3043 * No longer wrap MSet::MSet() - it's not of use in scripting languages.
3045 * Wrap operator-- as prev() for MSetIterator and ESetIterator.
3047 * Wrap Quartz, InMemory, and Remote database factory functions as
3048   quartz_open(), inmemory_open(), and remote_open().
3050 * Added missing wrappers for static Stem::get_available_languages() and
3051   Stem::get_description().
3053 * Wrap renamed method Query::empty() (was Query::is_empty()).
3055 * Remove renaming of other empty() methods to is_empty() (but keep is_empty()
3056   as an alias for now).
3058 * Require autoconf 2.59 and automake 1.8.5.
3060 * configure: Added check that the bindings version matches the version of
3061   the xapian library.
3063 * configure: Check if we're using GCC and only pass GCC specific warning
3064   control options if we are.
3066 * configure: When running with GCC, also pass -Wno-uninitialized so the
3067   SWIG glue builds without warnings.
3069 * README: Updated list of languages which SWIG supports.
3071 PHP4:
3073 * Document that the 2 argument form of Xapian::Auto::open() for opening a
3074   writable database is wrapped as open_writable() (bug #32).
3076 * Include Xapian version in output from phpinfo().
3078 * Build the SWIG glue library like we build the others rather than using
3079   SWIG's -phpfull option.  This avoids problems with newer automake versions
3080   and means we can build against an uninstalled xapian library.
3082 * Corrected documentation to refer to Xapian::DB_* not Xapian::Auto::DB_*.
3083   Fixed documentation of how Xapian::Query::OP_* are wrapped.
3085 * Use special SWIG PHP ldflags when linking the PHP glue library.
3087 * simplesearch.py now works with multi-term queries.
3089 * Added documentation on how to install the PHP4 bindings.
3091 * Added a simple testcase to at least ensure the PHP4 bindings can be
3092   initialised and some simple operations work.
3094 Python:
3096 * configure: Now checks for Python >= 2.1 which we need for __cmp__ and __eq__.
3098 * Don't install _xapian.la and _xapian.a.
3100 * Byte compile xapian.py to xapian.pyc and install it.
3102 * Suppress SWIG warning about MatchDecider::operator() director discarding
3103   const.
3105 * "make clean" no longer leaves "xapian_wrap.h" behind.
3107 * Added a simple testcase to at least ensure the python bindings can be
3108   initialised and some simple operations work.
3110 Tcl8:
3112 * configure: Disable building tcl8 bindings if the headers are missing
3113   (probably because the tcl8.X-dev package isn't installed).
3115 Xapian-bindings 0.8.1 (2004-06-30):
3117 General:
3119 * configure: Require SWIG 1.3.20 or higher (previously was 1.3.14).
3121 * Add "-I/usr/include" to the swig line.  This is needed when xapian is
3122   installed with a prefix of /usr, since "xapian-config --cxxflags" carefully
3123   doesn't emit -I/usr/include in this situation (because it causes problems
3124   with some GCC versions).
3126 * Fixed the %exception handler to cover all the exceptions Xapian can throw,
3127   not just a subset.
3129 Java:
3131 * Removed wrappers for unused error classes which have been pruned from C++.
3133 * Make finalize() methods of Database and WritableDatabase public so they can
3134   be called from by the user.
3136 * Document Document.add_term_nopos() as deprecated.
3138 PHP4:
3140 * Make sure that PHP bindings build a module which exports get_module() so PHP
3141   is able to load it.
3143 * Configure now checks that phpize can actually be run, rather than just that
3144   it's executable (test -x isn't portable anyhow).
3146 * Added basic documentation and examples to PHP4 bindings.
3148 * Rename overloaded methods and constructors.
3150 * Add simple access to the prefixes map in QueryParser.
3152 * Correct simpleindex ports to never generate empty termnames.
3154 Python:
3156 * configure: Use $PYTHON instead of python when running python to determine
3157   library and include paths and version number.
3159 * Actually ship python examples and documentation.
3161 Xapian-bindings 0.8.0 (2004-04-20):
3163 * README: Started collecting information on supporting Xapian from even
3164   more languages.
3166 * Added configure tests to enable bindings only where the necessary tools
3167   are installed and have a supported version.  ./configure --without-LANGUAGE
3168   allows particular languages to be forcibly disabled.
3170 * Added Xapian::Document::add_term() - the new name for add_term_nopos().
3172 * A couple of Xapian::Query constructors weren't being wrapped - fixed.
3174 * Added Eric B. Ridge's JNI bindings for Java.  The JNI bindings themselves
3175   have been well tested, but integration with the xapian-bindings configure
3176   system hasn't been tested at all - please alert us to any problems.
3178 * Xapian can now be used from TCL.
3180 * Python: MSet now provides a Python iterator.
3182 * Python: OMMSET_* and OMESET_* renamed to MSET_* and ESET_*.
3184 * Python: enable directors for MatchDecider, to allow subclassing in Python.
3186 * Python: Added basic documentation, and some examples.