1Xapian-bindings 1.2.25 (2017-09-26):
2
3Java:
4
5* Disable parallel make for java subdirectory as it causes random build
6  failures.  Reported by Lucas Nussbaum in https://bugs.debian.org/848733
7
8Xapian-bindings 1.2.24 (2016-09-16):
9
10Documentation:
11
12* python/doxy2swig.py: Specify encoding so we can handle UTF-8 doxygen
13  comments.  Patch from Vivek Pal.
14
15Java:
16
17* Fix configure to find jni_md.h on Cygwin, OS X, *BSD, AIX.  The issue with
18  Cygwin was reported by John Bankert on xapian-discuss.  There doesn't seem to
19  be an explicit list of the subdirectory names jni_md.h can be in anywhere,
20  but grepping the OpenJDK 8 source code finds additional values "darwin" and
21  "aix", and *BSD seems to use "bsd".
22
23Perl:
24
25* Fix typo in POD docs for Perl bindings (outputing -> outputting).  Fixes
26  #730, reported by Nick Morrott.
27
28Xapian-bindings 1.2.23 (2016-03-28):
29
30Documentation:
31
32* Update links to Xapian website and trac to use https, which is now supported,
33  thanks to James Aylett.
34
35PHP:
36
37* Check that the PHP interpreter we find is actually PHP5, and if not look
38  harder.  On current Debian unstable, php-config5 --php-binary reports
39  /usr/bin/php which can be PHP7.
40
41* Document that PHP7 isn't currently supported, and explicitly check for and
42  reject it in configure.
43
44Ruby:
45
46* configure: Stop preferring rdoc-1.8 to rdoc (this only happened in a
47  fall-back case when rdoc wasn't found in the same directory as the ruby
48  interpreter).
49
50Xapian-bindings 1.2.22 (2015-12-29):
51
52Documentation:
53
54* Stop maintaining ChangeLog files.  They make merging patches harder, and stop
55  'git cherry-pick' from working as it should.  The git repo history should be
56  sufficient for complying with GPLv2 2(a).
57
58General:
59
60* Stop wrapping internal methods of Xapian::Weight.
61
62* Return Error::get_description() rather than get_type + ": " + get_msg().  In
63  many cases this is the same, but if context or errno are available,
64  get_description() includes them.
65
66* Catch and report std::exception rather than handling it as an unknown error
67  (so in particular std::bad_alloc will now be reported more helpfully).
68
69CSharp:
70
71* Fix configure test for whether $MONO can run CSharp programs - previously it
72  would always fail, which would mean that the CSharp tests would only be run
73  on systems where CSharp programs can be run directly.
74
75Lua:
76
77* Send stderr from lua version check to config.log instead of letting it appear
78  on the terminal.
79
80PHP:
81
82* Fix memory leak and crash when using PHP subclasses of Xapian functors.
83
84* Subclasses of XapianMatchSpy and XapianPostingSource with implicit
85  constructors now work.
86
87Python:
88
89* Add new testcase to catch any internal functions, methods, constants, etc
90  which have accidentally been wrapped.
91
92Xapian-bindings 1.2.21 (2015-05-20):
93
94Lua:
95
96* README: Remove note about the Lua bindings being experimental - it's not
97  really been true for some time now.
98
99Perl:
100
101* Wrap missing constants OP_SYNONYM and STEM_ALL_Z.
102
103* Add workaround for Perl defining a seed() macro which breaks compilation with
104  GCC in C++11 mode (due to <algorithm> now pulling in random number generation
105  classes with a method called seed).
106
107* Update list of unwrapped things in POD documentation.
108
109* Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
110  during parallel builds.
111
112* Add test coverage for Enquire::set_collapse_key() with 1 and 2 parameters.
113
114* Add test that we can create all the stemmers returned by
115  Stem::get_available_languages().
116
117* t/symbol-test.t: If the symboltest module build fails, skip the test - it's
118  likely due to external reasons, like incompatible compiler flags being taken
119  from Perl's Config module, due to Perl having been built with a different
120  compiler to Xapian.
121
122* Use croak_sv() or ERRSV if defined.
123
124PHP:
125
126* README: Remove note about the subclassing bug with PHP 5.4 and later - that
127  was fixed in 1.2.19.
128
129Python:
130
131* README: Add note that 1.3.2 has Python 3 support, and that this will be in
132  stable release 1.4.0.
133
134Ruby:
135
136* smoketest.rb: Fix "warning: assigned but unused variable - mset".
137
138* Ship generate-rdoc-stubs in the tarball.  Reported by Matthias Klose in
139  https://bugs.debian.org/782270
140
141Xapian-bindings 1.2.20 (2015-03-04):
142
143Portability:
144
145* configure: Avoid using \? in sed command in Lua detection - it isn't
146  supported by all sed implementations.
147
148Lua:
149
150* configure: Rework LUA_SO checks to be clearer and to properly handle LUA_SO
151  being specified without a leading '.'.
152
153* configure: Add an example of specifying LUA_SO to --help output.
154
155PHP:
156
157* Remove text about subclassing bug with PHP 5.4 and later - that was fixed in
158  1.2.19.
159
160* In current PHP releases, dl() is disabled in most SAPIs, and even where
161  available it will now only look in the configured extension directory.  The
162  upshot is that there no longer seems to be a sane way to install the PHP
163  bindings without being root, so update the documentation to reflect this.
164  Fixes #661, reported by Felix Ostmann.
165
166Xapian-bindings 1.2.19 (2014-10-21):
167
168PHP:
169
170* Fix up SWIG generated C++ wrapper code so that subclassing of wrapped classes
171  in PHP works with PHP 5.4 and later.  (Fixes #652, reported by Sebastian
172  Gottfried)
173
174* Fix XapianQueryParser::set_stopper() and XapianTermGenerator::set_stopper()
175  which were getting incorrectly wrapped such that they didn't actually do
176  anything.  Fixes #659, reported by jmienert.  This bug was introduced by the
177  reference tracking fix in 1.2.14.
178
179Ruby:
180
181* README: Note that Ruby 2.1 works too.
182
183Xapian-bindings 1.2.18 (2014-06-22):
184
185Documentation:
186
187* README: Add links to Erlang and Node.js bindings.
188
189Lua:
190
191* lua/smoketest.lua: Change expect() parameter order to the more natural (got,
192  expected), which most of the calls already used, and fix up the few calls
193  which passed (expected, got).
194
195PHP:
196
197* php/smoketest.php: Add missing "exit(1);" after reporting failure of check
198  that MatchDecider returns an MSet with the expected docid in.  Luckily this
199  wasn't masking a test failure.
200
201Python:
202
203* python/pythontest.py: There's no longer a need to use chert_open() explicitly
204  - chert is the default backend now, and both chert and brass support the
205  required functionality for the tests which do this, so this just needlessly
206  causes the tests to fail if chert is disabled in xapian-core.
207
208* configure: If the Python version is too new or too old, only report it once
209  not twice.
210
211Ruby:
212
213* configure: Fix Ruby bindings to build on Windows (and other platforms where
214  allow_undefined_flag=unsupported. (fixes#634, reported by Alexis Denis)
215
216Xapian-bindings 1.2.17 (2014-01-29):
217
218Portability:
219
220* Improve workaround which allows building against an uninstalled xapian-core
221  on OS X - this should now work with any uninstalled xapian-core (not only in
222  a tree with the same layout as an SVN or git checkout) and it also won't try
223  to build against "../xapian-core/.libs" just because it happens to exist.
224  (Backported from 1.3.1; fixes #322)
225
226Python:
227
228* configure: Some distros now point /usr/bin/python at Python 3, so the check
229  for a Python 2 interpreter now checks for 'python2' first, and checks that
230  the version of found interpreter is 2.x.
231
232Ruby:
233
234* Tweak configure to work with Ruby 2.0.
235
236Tcl:
237
238* Link against -ltclstubX.Y for Tcl 8.5 and later (reported by Sergei Golovan
239  in http://bugs.debian.org/724830).
240
241* Use a better check for TCL_INC for Tcl 8.5 and later.
242
243Xapian-bindings 1.2.16 (2013-12-04):
244
245Documentation:
246
247* README: Note that the SWIG Perl bindings should replace the XS ones in 1.4.x.
248
249General:
250
251* Compress source tarballs with xz instead of gzip.
252
253* configure: Handle git snapshot naming.
254
255Portability:
256
257* configure: Update list of platforms where we tell libtool not to link in
258  deplibs to match the list used for xapian-core.
259
260Perl:
261
262* Pass 0 instead of NULL for non-pointer parameter to av_fetch (spotted due to
263  GCC 4.7 warning).
264
265* symboltest.t: Pass $CPPFLAGS and $CXXFLAGS from the environment through to
266  the sub-build, fixing failure when built with CPPFLAGS=-D_GLIBCXX_DEBUG.
267
268PHP:
269
270* smoketest.php: If running under PHP >= 5.4, skip the tests we know will fail
271  with a message explaining this.
272
273Python:
274
275* Provide bindings version in xapian.__version__ as per PEP 396.  (see #346)
276
277* python/docs/examples/simpleexpand.py: Use Pythonic iteration over the ESet.
278
279* pythontest.py: Fix testcase checking we get an exception from using
280  non-random-access iterators after then have advanced - previously these
281  didn't actually test as fully as intended.
282
283Ruby:
284
285* Omit internal classes and methods from the rdocs.
286
287Xapian-bindings 1.2.15 (2013-04-16):
288
289General:
290
291* Fix configure --enable-quiet option to actually work for the bindings.
292
293Perl:
294
295* Fix doc typo: "as as" -> "as a"
296
297Ruby:
298
299* Fix deprecation warning in configure from Ruby 1.9.3.
300
301Xapian-bindings 1.2.14 (2013-03-14):
302
303Python:
304
305* Fix typo in doccomment.
306
307PHP:
308
309* Keep references to the PHP wrapper object when an object is set on another
310  object.  (fixes #614)
311
312Tcl:
313
314* Allow TCL_INC to be passed to configure.  (fixes #612)
315
316Xapian-bindings 1.2.13 (2012-11-09):
317
318CSharp:
319
320* configure: Overhaul checks for C# tools to use modern names in preference.
321
322Lua:
323
324* Fix examples to use str(query) to get the query description.  (Fixes #600)
325
326* Document that get_description() is mapped to str(), and end() to _end().
327
328* Fix functor wrappers which return strings to be zero-byte clean.
329
330Perl:
331
332* Forward port tests of StringValueRangeProcessor with a prefix or suffix from
333  1.2's XS Search::Xapian.  (ticket#607)
334
335* Update testsuite not to use UNIVERSAL::isa() as a function, since doing so
336  is deprecated.
337
338PHP:
339
340* Document that subclassing Xapian classes in PHP currently doesn't work with
341  PHP 5.4.
342
343Xapian-bindings 1.2.12 (2012-06-27):
344
345No changes since 1.2.11 except to bump the version - this release was made to
346fix an incorrect library version information update in xapian-core 1.2.11.
347
348Xapian-bindings 1.2.11 (2012-06-26):
349
350General:
351
352* Ship the scripts which generate the except.i files for Lua, Perl and Python.
353
354Perl:
355
356* In generated C++ code, pass 0 instead of NULL for non-pointer parameter to
357  av_fetch() (spotted due to GCC 4.7 warning).
358
359PHP:
360
361* Fix "make check" to work for PHP when building from a release tarball with
362  srcdir != builddir.
363
364* Work around "undefined symbol: zend_error_noreturn" error.
365
366Xapian-bindings 1.2.10 (2012-05-09):
367
368CSharp:
369
370* Use -keyfile and -keycontainer options to the C# compiler, because it warns
371  us to do this instead of setting them in AssemblyInfo.cs.
372
373* Use diff's -c option when comparing the files SWIG generated against those we
374  were expecting to get as the output should be easier to understand.
375
376* Sort both the lists of expected and of found SWIG-generated sources with
377  Perl, to avoid problems with locale-specific sort orders.
378
379Java-SWIG:
380
381* Remove now superfluous old check that SWIG generated at least the sources we
382  want - we now check it generated *exactly* the sources we want.
383
384* Use diff's -c option when comparing the files SWIG generated against those we
385  were expecting to get as the output should be easier to understand.
386
387* Sort both the lists of expected and of found SWIG-generated sources with
388  Perl, to avoid problems with locale-specific sort orders.
389
390Lua:
391
392* Now works with Lua 5.2.
393
394* "require 'xapian'" now returns the module table.  (ticket #593)
395
396* lua/smoketest.lua: Improve reporting of test failures.
397
398Perl:
399
400* Avoid importing isa from UNIVERSAL to fix Perl 5.12 deprecation warning.
401
402* Remove #! lines with -W to fix "Name "Test::More::TODO" used only once:
403  possible typo at /usr/share/perl/5.14/Exporter/Heavy.pm line 190." warnings.
404
405Python:
406
407* python/docs/examples/simpleexpand.py: Update to not use deprecated MSet
408  iteration features which have been removed on trunk.  This also fixes a
409  segfault if there are no matches and no documents are explicitly marked as
410  relevant.
411
412* python/testsuite2.py: Explicitly suggest "make check VERBOSE=1" as a simple
413  way to rerun tests with verbose output.
414
415Ruby:
416
417* configure: Make sure the ruby subdirectory exists before trying to create
418  ruby/rubyio.h, so this works in a VPATH build from a clean tree.
419
420Xapian-bindings 1.2.9 (2012-03-08):
421
422Java:
423
424* configure: Fix test for jni.h to try looking for jni.h relative to the real
425  location of javac, which should work for more JDKs.
426
427Lua:
428
429* Handle an exception from C++ by raising a xapian.Error object as an error in
430  Lua.
431
432* Rename get_description() methods to __tostring(), so that you can use write
433  tostring(obj) in Lua.
434
435* configure: Honour LUA_LIB if already set.  Fixes #581.
436
437* configure: Improve probing for LUA_LIB, and also probe for LUA_SO so we
438  support platforms where the compiled Lua module isn't called .so.
439
440Perl:
441
442* Add tests of Document::get_docid().
443
444PHP:
445
446* Add a test that Query constructor taking OP_NEAR with a window size works.
447
448Python:
449
450* python/testsuite2.py: Don't run off the traceback looking for a test function
451  if the exception wasn't from a test function.
452
453Xapian-bindings 1.2.8 (2011-12-13):
454
455Lua:
456
457* Wrap user-subclassable functor objects by allowing the user to pass a
458  Lua function where the functor object would be passed in the C++ API.
459
460PHP:
461
462* Fix "PHP Notice:  Undefined variable: r in xapian.php".  (Fixes bug#576)
463
464* The PHP bindings will now work again with a version of PHP built with ZTS
465  enabled (which is the default on Microsoft Windows).  This was broken by
466  the changes to support subclassing in PHP in the version of SWIG used since
467  1.2.6.
468
469Python:
470
471* Add a module docstring.  (Fixes bug #573)
472
473* The python testsuite now checks for object leaks during each testcase.
474
475* In test_matchingterms_iter, run the code we're testing for leaks twice, and
476  only check for leaks the second time to avoid falsely reporting a leak when
477  some cached value gets initialised under Python 2.5.
478
479Ruby:
480
481* Wrap optional prefix parameter to Database::allterms.
482
483Xapian-bindings 1.2.7 (2011-08-10):
484
485Documentation:
486
487* INSTALL: Pull in a few updates from the latest version of the automake
488  document which this file was originally based on.  Add in the missing
489  copyright and licensing information.
490
491* INSTALL: Add --with-lua to list of options.
492
493* INSTALL,README: It's no longer noteworthy that Mac OS X 10.1 and 10.2 aren't
494  supported as Apple ditched them long ago, so drop this as a "Known Issue" in
495  INSTALL and instead just say "Mac OS X >= 10.3" in the discussion of
496  supported platforms in the README.
497
498* HACKING: Update and start section on deprecation warnings for the bindings.
499
500General:
501
502* Add missing wrappers for Database::has_positions() and
503  TermIterator::positionlist_count(), and correct the return type of
504  Database::get_doclength() from double to Xapian::termcount.
505
506CSharp:
507
508* README: Note a recent version of Mono which we've tested the C# bindings
509  with.
510
511* Check that exactly the sources we expect are generated, and add some sources
512  which were missing from the list.
513
514* Fix "make uninstall" so the compiled C++ module (typically _XapianSharp.so)
515  gets removed.
516
517* Fix iterator ++ and -- so that the reference to the object isn't released
518  prematurely, which was causing an occasional crash if the garbage collection
519  happened at just the wrong moment,
520
521* Add test coverage for QueryParser.ParseQuery() with flags argument.
522
523* Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
524
525Java:
526
527* SmokeTest.java: Fix == comparisons with strings to use equals().
528
529* Add test that string passing is zero byte safe.
530
531* Fix MyExpandDecider.accept() to really check the passed parameter.
532
533Java-SWIG:
534
535* Put the SWIG-generated Java bindings in package org.xapian.
536
537* Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
538
539* SmokeTest.java: Fix == comparisons with literal strings to use equals()
540
541* Add test that string passing is zero byte safe.
542
543* Fix MyExpandDecider.accept() to really check the passed parameter.
544
545* Fix the compile JNI code to have a .jnilib extension on Mac OS X.
546
547* Create an HTML documentation page based on java/README.
548
549* Copy java examples from the hand-coded JNI ones.
550
551* docs/examples/SimpleIndex.java: Update to use commit() rather than flush().
552
553* Check that exactly the sources we expect are generated, and add some sources
554  which were missing from the list.
555
556Lua:
557
558* Merge latest Lua changes from Xiaona Han.
559
560* lua/smoketest.lua: Add simple test for Database::positionlist_begin().
561
562* simpleexpand.lua: Don't try to add anything to the RSet if there are no
563  matches.
564
565Perl:
566
567* Sync updates to examples from XS Search::Xapian:
568
569  + Require Perl >= 5.6 so we can "use warnings;".
570
571  + Loop over file using while() (which reads a line per iteration) not
572    foreach() (which reads the whole file up front).
573
574* Wrap MatchAll and MatchNothing for Perl (as Search::Xapian::Query::MatchAll
575  and Search::Xapian::Query::MatchNothing).  (ticket#158)
576
577* perl/t/termgenerator.t: Test TermIterator::index_text() with two arguments.
578
579* perl/Makefile.am: Fix "make check".
580
581* perl/t/symbol-test.t: Fix to work when built against an installed
582  xapian-core.  (ticket#558)
583
584PHP:
585
586* php/smoketest.php: Install an error handler so the test fails if there are
587  any errors, warnings, notices, etc.
588
589* Change PHP examples and test program to use 'include "xapian.php"' like user
590  code should (rather than 'include "php5/xapian.php"' as they did previously).
591
592* Wrap MatchAll and MatchNothing for PHP as XapianQuery::MatchAll() and
593  XapianQuery::MatchNothing(). (ticket#158)
594
595Ruby:
596
597* Wrap MatchAll and MatchNothing for Ruby.  (ticket#158)
598
599Xapian-bindings 1.2.6 (2011-06-12):
600
601General:
602
603* SWIG-based bindings are now generated with a newer version of SWIG
604  (ticket#538).
605
606Portability:
607
608* On Mac OS X 10.5 or later, and 10.4 on x86, build Java JNI library with a
609  .jnilib extension as we do for older versions.
610
611CSharp:
612
613* Upgrading to newer SWIG fixes issues with strings with newer C# versions.
614
615Java:
616
617* Fix memory leaks when functions taking string parameters throw exceptions.
618
619* Previously a hash table was used to map Java objects to C++ ones, but we
620  now just cast the address of the C++ object to a jlong (which is 64 bits
621  so will hold a pointer on current platforms).  This is more efficient and
622  avoids the need for thread locks around accesses to the hash table.
623
624* Remove explicit checks for NULL around calls to delete.
625
626* Mark makefiles which build Java code as .NOTPARALLEL to avoid race conditions
627  during parallel builds.
628
629Lua:
630
631* Add support for Lua, which is being developed by Xiaona Han during GSoC this
632  year.  The current support should be regarded as experimental - it passes
633  its automated tests, but the details of the Lua API are likely to evolve as
634  the project progresses.
635
636Perl:
637
638* README: say that Perl bindings probably need Perl 5.8 or later.
639
640PHP:
641
642* Directors now work for PHP (ticket#488).  New simplematchdecider.php example.
643
644Python:
645
646* python/pythontest2.py: With Python 2.7, gc.collect() doesn't always collect
647  all the garbage, so repeat until no further objects are freed.
648  (http://bugs.debian.org/625679 and https://bugs.gentoo.org/349484).
649
650Ruby:
651
652* ruby/smoketest.rb: Older Ruby 1.8.x doesn't have Dir.mktmpdir() - just skip
653  the compaction tests for these versions.
654
655Xapian-bindings 1.2.5 (2011-04-04):
656
657Documentation:
658
659* README: Update info on SWIG-based Perl bindings.
660
661* INSTALL: Copy new Multi-Arch section from xapian-core/INSTALL.  Replace VPATH
662  section with better equivalent from xapian-core/INSTALL.
663
664General:
665
666* Wrap ESet::get_eset() with min_wt parameter (new in C++ API in 1.2.5).
667
668* configure: If xapian-core is a different release series, promote the
669  mismatched versions warning to an error.
670
671Portability:
672
673* Mac OS X: Don't override MACOSX_DEPLOYMENT_TARGET on 10.5 and later, or
674  10.4 on x86, as the default if unset on these versions is the current OS
675  version.  (ticket#541)
676
677* python/pythontest2.py: In test_compactor(), close any open databases before
678  removing the directory as you can't delete an open database on Microsoft
679  Windows.  (ticket#526)
680
681CSharp:
682
683* Don't pass extra flags to Microsoft's gacutil.  (ticket#516)
684
685* Clarify the licence is GPL "version 2 or later" in the meta information
686  we put in the module.
687
688Python:
689
690* Remove old and broken Enquire.get_matching_terms() method.  We deprecated
691  Enquire.get_matching_terms() in 1.0.x, and removed it in 1.1.0, but
692  accidentally left an older version of get_matching_terms() exposed.
693
694* Remove broken implementation of MSet.__contains__.  This appears never to
695  have worked, and to have been broken for at least the past 3.5 years without
696  anyone mentioning it, and is probably of little use anyway, so no need to
697  deprecate.
698
699* python/docs/index.html: Document that MSet.items and ESet.items are
700  deprecated, and what to use instead.  Note that MSET_DOCUMENT never worked on
701  the tuple returned by MSet.items.  (ticket#531)
702
703* Add test coverage for mset.items.
704
705Ruby:
706
707* Add test coverage for Xapian::Compactor.
708
709* Handle an empty response to $RUBY --version specially.  This gives a less
710  opaque error in cases where the user specified RUBY but the value given
711  wasn't an executable file.
712
713Xapian-bindings 1.2.4 (2010-12-19):
714
715General:
716
717* Wrap the new Xapian::Compactor class.  The resolve_duplicate_metadata()
718  virtual method is wrapped for subclassing for Python and Ruby currently.
719
720* Eliminate separate Makefile.am in the docs subdirectory of each language
721  subdirectory and just inline any rules into the main sub-Makefile.am, which
722  allows more of the build to run in parallel.
723
724* Don't ship some files which are generated at build time.
725
726* configure: Need python in maintainer mode to run doxy2swig.py.
727
728Packaging:
729
730* RPM: Package the Perl bindings.
731
732* RPM: Don't package _XapianSharp.la.
733
734Portability:
735
736* For Mac OS X builds, set DYLD_LIBRARY_PATH to allow tests to find an
737  uninstalled Xapian library.  See ticket #322.
738
739* configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
740
741CSharp:
742
743* Don't install _XapianSharp.la.
744
745Perl:
746
747* Merge SWIG-based Perl bindings originally developed by Kosei Moriyama during
748  GSoC 2009.  These are close to being a compatible replacement for the
749  hand-coded XS bindings in Search::Xapian but also offer a more complete
750  wrapping of the C++ API.  We're planning to replace the XS bindings with the
751  SWIG ones for easier maintenance.  We encourage you to try them and let us
752  know how you get on - particularly if you find cases where code which works
753  with the XS bindings doesn't work with the SWIG ones.
754
755PHP:
756
757* Document that iterators shouldn't be dereferenced or advanced when at their
758  end points (ticket#520).
759
760Python:
761
762* Fix memory leaks in typemaps which return Python lists.
763
764* MatchSpy can now be subclassed in Python.  Remote use isn't currently
765  supported.
766
767* configure: Use sys.version_info tuple, rather than string splicing which
768  assumes the Python "major.minor" is 3 characters (which would fail if Python
769  2.10 were ever released, for example).
770
771Xapian-bindings 1.2.3 (2010-08-24):
772
773Packaging:
774
775* xapian-bindings.spec: Don't run autoreconf - it's no longer required.
776
777Xapian-bindings 1.2.2 (2010-06-27):
778
779* No user-visible change except for bumping the version to indicate
780  compatibility with Xapian-core 1.2.2.
781
782Xapian-bindings 1.2.1 (2010-06-22):
783
784This release includes all changes from 1.0.21 which are relevant.
785
786General:
787
788* Wrap Xapian::StemImplementation.  Currently this has only been tested for
789  Python.  (ticket#448)
790
791Guile:
792
793* Remove non-functional disabled guile bindings left over from Open Muscat
794  days - if someone wanted to add guile bindings, it would be easier to start
795  from scratch.
796
797Java-SWIG:
798
799* Update list of generated java sources in the SWIG-based Java bindings.
800
801PHP:
802
803* zend_throw_exception() returns, so return control to PHP directly after
804  calling it to avoid needless extra work and possible issues.
805
806Python:
807
808* Fix "from xapian import *".  (ticket#477)
809
810* Fix testcase weight_normalise - a change in xapian-core means that
811  get_max_possible() can now return zero for a non-existent term, so don't
812  blindly calculate the reciprocal of it.
813
814* python/replicationtest2.py: Extend to check that changesets get applied
815  correctly.
816
817* python/smoketest2.py: Check len(mset) works (improving test coverage of
818  Python-specific wrapping).
819
820Xapian-bindings 1.2.0 (2010-04-28):
821
822This release includes all changes from 1.0.20 which are relevant.
823
824Portability:
825
826* configure: Tell libtool not to link in deplibs on platforms where we know
827  they aren't needed.
828
829* configure: On Linux, extract the library search path from ldconfig which
830  gives us the default entries reliably.
831
832Xapian-bindings 1.1.5 (2010-04-15):
833
834This release includes all changes from 1.0.19 which are relevant.
835
836Tcl:
837
838* tcl8/docs/index.html: Document WritableDatabase::close() as a way to
839  sidestep the whole destructor issue.  (ticket#62)
840
841Xapian-bindings 1.1.4 (2010-02-15):
842
843This release includes all changes from 1.0.18 which are relevant.
844
845General:
846
847* Update for the new Brass backend and other C++ API changes.
848
849* Wrap Database::get_doclength_lower_bound(),
850  Database::get_doclength_upper_bound(), Database::get_wdf_upper_bound(),
851  Database::valuestream_begin() and Database::valuestream_end() for all
852  languages. (ticket#431)
853
854* Wrap ValueIterator::skip_to() and ValueIterator::check() for all languages.
855
856Python:
857
858* Wrap valuestreams as Database.valuestream(), returning a ValueStreamIter
859  object which dereferences to a ValueStreamItem object,
860
861* Fix Enquire.clear_matchspies() wrapper which crashed in 1.1.3.
862
863Ruby:
864
865* Add safe wrapper for the valuestream iterator.
866
867Xapian-bindings 1.1.3 (2009-11-18):
868
869This release includes all changes from 1.0.15-1.0.17 which are relevant.
870
871General:
872
873* configure: Default to looking for xapian-config-1.1 unless XAPIAN_CONFIG is
874  specified.
875
876* Wrap the new MatchSpy class, and associated features.
877
878* Don't wrap PostingSource::serialise(), Weight::serialise() and
879  Weight::unserialise() as they aren't useful from the bindings.
880
881* Update for the Sorter to KeyMaker changes.
882
883PHP:
884
885* Fix PHP bindings to build when PHP has been compiled in multithreaded mode,
886  as it standardly is on Microsoft Windows.  Fixes #411.
887
888* Merged the PHP "smoketest" back together now we don't need to support
889  PHP4 now.
890
891Python:
892
893* Fix a memory leak on error (in theory - we've not got a way to generate this
894  error, so haven't been able to reproduce the leak or test the fix).
895
896Xapian-bindings 1.1.2 (2009-07-23):
897
898This release includes all changes from 1.0.14 which are relevant to trunk.
899
900Python:
901
902* Several changes towards fully supporting Python 3, but more work is required.
903  (ticket#246)
904
905Xapian-bindings 1.1.1 (2009-06-09):
906
907This release includes all changes from 1.0.13 which are relevant to trunk.
908
909General:
910
911* Wrap the recently added extra parameter to Enquire::set_collapse_key().
912
913CSharp:
914
915* Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
916  C# yet, and to use Query("") and Query() instead.
917
918* configure: If we don't find a C# compiler, don't test an empty command name
919  further which saves a fork and avoids an odd looking message.
920
921PHP:
922
923* Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
924  PHP yet, and to use Query("") and Query() instead.
925
926Python:
927
928* Wrap Query::MatchAll and Query::MatchNothing for Python and document how they
929  are wrapped (ticket#158).
930
931* python/smoketest2.py,python/smoketest3.py: Update tests with FLAG_PARTIAL to
932  expect SYNONYM in generated query.
933
934Ruby:
935
936* Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
937  Ruby yet, and to use Query("") and Query() instead.
938
939Tcl:
940
941* Wrap Query::MatchAll and Query::MatchNothing for Tcl and document how they
942  are wrapped (ticket#158).
943
944Xapian-bindings 1.1.0 (2009-04-22):
945
946Documentation:
947
948* INSTALL: Python 2.6 and later look in ~/.local for Python modules so update
949  the instructions to suggest users use this standard location for installing
950  without root access.
951
952General:
953
954* All deprecated features slated for removal in 1.1.0 have been removed.
955
956* All new C++ API features have been wrapped.  Also, since we now supply some
957  standard MatchDecider subclasses, we now wrap Enquire::get_mset() so that
958  these can be passed in even for languages for which SWIG doesn't support
959  subclassing.
960
961Packaging:
962
963* xapian-bindings.spec: Updated to reflect the new Python packaging.
964
965Portability:
966
967* configure: Use XAPIAN_CXXFLAGS for test compiles since it may include options
968  to put the compiler into ISO C++ mode).
969
970PHP:
971
972* PHP4 support has been removed, since PHP4 is no longer supported upstream
973  as of 2008-08-08.
974
975Python:
976
977* Python 2.3 or later is now required.  2.2 is essentially unsupported
978  upstream.
979
980* The import method used has been changed (by using a newer SWIG version)
981  and no longer gives a warning with Python 2.6.
982
983* Initial support for Python 3.0 has been added.  This currently doesn't
984  work correctly and should be treated as experimental. (ticket#346)
985
986* The newer SWIG version handles exceptions in director methods correctly
987  so we no longer need our workaround for ticket #289.
988
989* Database::metadata_keys_begin() and Database::metadata_keys_end() are
990  wrapped for Python as Database.metadata_keys().
991
992* The Python bindings are now installed as a python package, with the
993  files in a xapian subdirectory, hiding the internal _xapian module
994  better.
995
996* Python now flags deprecation warnings for the single argument form and old
997  parameter name (ascending) in set_sort_by_key(), set_sort_by_value() and
998  friends.
999
1000Xapian-bindings 1.0.23 (2011-01-14):
1001
1002Portability:
1003
1004* configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
1005
1006PHP:
1007
1008* Document that iterators shouldn't be dereferenced or advanced when at their
1009  end points (ticket#520).
1010
1011Python:
1012
1013* Fix memory leaks in typemaps which return Python lists.
1014
1015Xapian-bindings 1.0.22 (2010-10-03):
1016
1017Packaging:
1018
1019* RPM: Don't package _XapianSharp.la.
1020
1021CSharp:
1022
1023* Don't install _XapianSharp.la.
1024
1025Python:
1026
1027* configure: Use sys.version_info tuple, rather than string splicing which
1028  assumes the Python "major.minor" is 3 characters (which would fail if Python
1029  2.10 were ever released, for example).
1030
1031* Add test_xapian_star.py to distribution - fixes failure of "test_import_star"
1032  testcase in pythontest.py.
1033
1034Xapian-bindings 1.0.21 (2010-06-18):
1035
1036Python:
1037
1038* xapian.BAD_VALUENO is now wrapped as a constant rather than variable which
1039  can't be written to. (ticket#297)
1040
1041* Fix cleaning of test directories to use "rm -rf" rather than "rm -f".
1042
1043* Add test to check that "from xapian import *" works.
1044
1045Xapian-bindings 1.0.20 (2010-04-27):
1046
1047Python:
1048
1049* Set PYTHONDONTWRITEBYTECODE=1 in the environment to prevent Python from
1050  generating .pyc files in srcdir for Python >= 2.6, and use a Bourne shell
1051  trap to delete them after running tests for older versions of Python.
1052  (ticket#315)
1053
1054Ruby:
1055
1056* configure: Fix typo so path to ruby is reported if Ruby < 1.8 is found.
1057
1058Xapian-bindings 1.0.19 (2010-04-15):
1059
1060Tcl:
1061
1062* tcl8/docs/index.html: Improve wording in a few places.
1063
1064Xapian-bindings 1.0.18 (2010-02-14):
1065
1066General:
1067
1068* Wrap new C++ API method Document::add_boolean_term().
1069
1070Ruby:
1071
1072* Generate entries in the Ruby rdocs for all classes which aren't documented
1073  because of Ruby-specific methods.  Fixes ticket#417.
1074
1075* Avoid absolute paths in the generated rdocs.
1076
1077Xapian-bindings 1.0.17 (2009-11-18):
1078
1079Packaging:
1080
1081* Improve RPM package summaries - the files are needed to *use* scripts as well
1082  as to develop them.  Use "Tcl" instead of "TCL" as the former is more
1083  conventional.
1084
1085Portability:
1086
1087* python/Makefile.am: Restore the "./" path to the sourced file
1088  libtoolconfig.tmp as ksh requires it.
1089
1090Java:
1091
1092* Fix memory leak when passing a MatchDecider to Enquire::get_mset().
1093
1094Xapian-bindings 1.0.16 (2009-09-10):
1095
1096Python:
1097
1098* Improved docstrings for QueryParser::set_default_op() and
1099  QueryParser::get_default_op() (automatically generated from changes in
1100  xapian-core).
1101
1102Xapian-bindings 1.0.15 (2009-08-26):
1103
1104Python:
1105
1106* Don't break long words when wrapping text in the generated API documentation
1107  comments as this was causing identifiers to be broken in two.
1108
1109Xapian-bindings 1.0.14 (2009-07-21):
1110
1111General:
1112
1113* configure: If $CSC is empty, don't try to run it.  This was a cosmetic bug
1114  and the only side-effect was an odd looking message.
1115
1116Python:
1117
1118* Rename methods at build-time using SWIG rather than a run-time in Python, as
1119  the latter approach adds a small time overhead when the module is being
1120  loaded.
1121
1122Ruby:
1123
1124* Fix to accept an integer value > MAXINT for a double parameter.
1125
1126Xapian-bindings 1.0.13 (2009-05-23):
1127
1128Packaging:
1129
1130* xapian-bindings.spec: Update C# packaging for rename of XapianSharp.so to
1131  _XapianSharp.so in 1.0.11.
1132
1133* xapian-bindings.spec: Update Tcl8 packaging for where we now install the
1134  bindings since 1.0.6.
1135
1136PHP:
1137
1138* Backport fix from SWIG SVN for misuse of formatted error function in
1139  SWIG-generated code.
1140
1141Python:
1142
1143* Change the SWIG-generated wrapper code so it doesn't attempt to acquire
1144  Python's Global Interpreter Lock (GIL) in situations where we know that it
1145  will already be locked.  This avoids some dead-locks with mod_python (due to
1146  mod_python bugs which are apparently unlikely to ever be fixed), and results
1147  in smaller wrappers which run a little faster (in tests with Xapian on x86-64
1148  Ubuntu 9.04, the stripped wrapper library was 11% smaller and ran 2.7%
1149  faster). (ticket#185)
1150
1151* README,python/docs/index.html: Update documentation of the above mod_python
1152  issue and also document the related mod_wsgi issue.  The status is now that
1153  everything seems to work if you stick to the main interpreter (ticket#364).
1154
1155* Backport fix from SWIG SVN for misuse of formatted error function in
1156  SWIG-generated code.
1157
1158* python/docs/examples/simplematchdecider.py: Read "avoid_value" from the
1159  second parameter, not the third.
1160
1161* python/docs/examples/simplematchdecider.py,
1162  python/docs/examples/simplesearch.py: Make use of str.join() for simpler,
1163  clearer code.
1164
1165Ruby:
1166
1167* README: Note that the testsuite fails due to a bug in the test/unit module in
1168  Ruby 1.9.0, but applications using the bindings should work, and that the
1169  testsuite works with Ruby 1.9.1.  Drop all mention of Ruby 1.6.x as that
1170  appears to be completely dead both upstream and in the wild.
1171
1172Xapian-bindings 1.0.12 (2009-04-19):
1173
1174Documentation:
1175
1176* INSTALL: Add a note about being able to pass variables to configure to pick
1177  which of several parallel installations of a language to build for.
1178
1179Python:
1180
1181* python/pythontest.py: Round the weights returned for the OP_SCALE_WEIGHT
1182  test to avoid failing due to rounding differences.
1183
1184* python/testsuite.py: Remove bare except: handlers from testsuite, so Ctrl-C
1185  stop the whole testsuite, not just the currently running testcase.
1186
1187Xapian-bindings 1.0.11 (2009-03-15):
1188
1189Documentation:
1190
1191* README: Note that 1.0.x doesn't (and isn't currently planned to) support
1192  Python 3, and possible current issues with Ruby 1.9.
1193
1194Portability:
1195
1196* Merge fixes from Cygwin Ports, so bindings should build out of the box on
1197  Cygwin.
1198
1199Python:
1200
1201* python/docs/examples/: Use str(obj) rather than obj.get_description() (the
1202  latter is deprecated, and support was removed in 1.0.0).
1203
1204* Add support for using the new name ("reverse") for the second argument of
1205  set_sort_by_key() and set_sort_by_value() and friends as a named parameter.
1206  The old name ("ascending") is still supported, but will be deprecated in
1207  1.1.0.
1208
1209* Keep Python references to Sorter, Stopper, and ValueRangeProcessor objects
1210  which get set on other objects to avoid segmentation faults if they go out
1211  of scope before the object they are set on does.  (ticket#341)
1212
1213Ruby:
1214
1215* Fixes for Ruby 1.9 compatibility (ticket#323).  The test harness currently
1216  fails so "make check" doesn't pass, but code using the bindings should work.
1217
1218Xapian-bindings 1.0.10 (2008-12-23):
1219
1220Python:
1221
1222* Need to clean testsuite.pyc from srcdir since that's where it gets generated
1223  as things stand (upstream fix for Debian bug 506090).
1224
1225Xapian-bindings 1.0.9 (2008-10-31):
1226
1227General:
1228
1229* configure: Add support for "--enable-quiet" like xapian-core and omega have.
1230
1231* Wrap new Database::metadata_keys_begin() and Database::metadata_keys_end()
1232  methods.
1233
1234Xapian-bindings 1.0.8 (2008-09-04):
1235
1236General:
1237
1238* configure: Report bug report URL in --help output.
1239
1240Python:
1241
1242* Fix mangling of exceptions thrown from Python subclasses of Xapian classes.
1243  (bug#289)
1244
1245* Fix memory leaks in the xapian.Query constructor.  (bug#294)
1246
1247Xapian-bindings 1.0.7 (2008-07-14):
1248
1249Documentation:
1250
1251* Document how all the database factory functions and library version functions
1252  are wrapped for all languages.
1253
1254General:
1255
1256* Fix to build against a xapian-core which has quartz and/or flint disabled.
1257
1258* The "program" version of Remote::open() has been wrapped for some time, so
1259  update the documentation which said it wasn't.
1260
1261Packaging:
1262
1263* xapian-bindings.spec: Remove "www." from xapian.org and oligarchy.co.uk URLs.
1264
1265Portability:
1266
1267* For Java, Python, and Ruby, use the libtool -shrext option to specify a
1268  different module extension rather than our own ugly bodge.
1269
1270Java:
1271
1272* Make passing string from Java to C++ zero-byte safe.  It doesn't appear to be
1273  simple to make C++ to Java work though.
1274
1275PHP:
1276
1277* Add test that OP_VALUE_GE works for PHP.
1278
1279Python:
1280
1281* Several corrections to the Python documentation.
1282
1283* configure: Fix problem with building under mingw.
1284
1285Ruby:
1286
1287* Include simplematchdecider.rb example.
1288
1289* smoketest.rb: Test the version reporting functions.
1290
1291Tcl:
1292
1293* Include simpleexpand.tcl example.
1294
1295* Fix where the Tcl module gets installed.
1296
1297* README: Note that Tcl 8.3 and earlier are no longer supported by upstream.
1298
1299Xapian-bindings 1.0.6 (2008-03-17):
1300
1301General:
1302
1303* Wrap OP_VALUE_GE and OP_VALUE_LE and the new Query constructor which they are
1304  used with.
1305
1306* configure: Correct the required SWIG version given in an error message.
1307
1308PHP:
1309
1310* php/smoketest.php: Add note that this script should be run using 'make check'
1311  in the build tree (rather than trying to copy it to a webserver as someone
1312  recently tried to).
1313
1314* php/smoketest.php: Fix to work under PHP4.
1315
1316Python:
1317
1318* The Python module now always has the extension which Python expects, which
1319  fixes a failure on Mac OS X.
1320
1321Ruby:
1322
1323* Automatically install/uninstall the Ruby rdoc-generated documentation along
1324  with the ruby bindings.
1325
1326Tcl:
1327
1328* configure: Sort out the default value of TCL_LIB, which could end up being
1329  under /usr/share in xapian-bindings 1.0.4 and 1.0.5.
1330
1331Xapian-bindings 1.0.5 (2007-12-21):
1332
1333General:
1334
1335* Wrap Xapian::Sorter and subclasses.
1336
1337* Wrap Enquire::set_sort_by_key(), Enquire::set_sort_by_key_then_relevance(),
1338  and Enquire::set_sort_by_relevance_then_key().
1339
1340* Factor out the code to protect multitarget rules against parallel make, and
1341  fix it to handle the source being changed while the rule is executing, and to
1342  correctly return an error code if we fail while trying to recover from the
1343  removal of a target of a multi-target rule.
1344
1345* configure: Improve the clarity of the error given when none of the tools
1346  needed for any supported language are found.
1347
1348* configure: SWIG 1.3.32 has now been released, so require at least this
1349  released version for maintainer builds.
1350
1351Java:
1352
1353* Add explicit '#include <cstring>' to fix build with the latest snapshots of
1354  GCC 4.3.
1355
1356* configure: Log the output of trying to compile conftest.java in config.log;
1357  if the test fails, report whether the failure was compiling or running the
1358  test program.
1359
1360* Check for directory existence rather than calling mkdir unconditionally as
1361  despite the "(ignored)", the error message seems to confuse some people.
1362
1363PHP:
1364
1365* Add feature test for XapianMultiValueSorter.
1366
1367* php/smoketest5.php: Fix use of Database_get_document to new style OO
1368  interface.  Fix the error reported when the PHP5 exception test fails.
1369
1370* php/smoketest.php: Add feature test to confirm that optional arguments to
1371  XapianQuery's "term" constructor are wrapped.
1372
1373Python:
1374
1375* Don't drop the GIL when calling Xapian.MSet.items and Xapian.ESet.items -
1376  these properties build a python list, so dropping the GIL isn't safe and
1377  may cause undefined behaviour in multithreaded environments.
1378
1379* configure: Update error message to reflect requirement for at least python
1380  2.2.
1381
1382* configure: Change "print foo" to "print(foo)" in python version checks, for
1383  compatibility with python 3.0.
1384
1385Ruby:
1386
1387* The Ruby bindings now work on Mac OS X (the Ruby module's extension was
1388  previously incorrect).
1389
1390* Run "rdoc" to generate HTML for the Ruby-specific API documentation which
1391  ruby/docs/index.html previously had a dead link to.
1392
1393Tcl:
1394
1395* configure: Overhaul code to find tcl.h since the old version no longer worked
1396  with Debian unstable.
1397
1398* tcl8/docs/index.html: Update documentation to cover flint and mention that
1399  quartz is now deprecated.
1400
1401* Remove code to handle `const char *' exceptions - as of 1.0.0 the QueryParser
1402  throws QueryParserError instead.
1403
1404Xapian-bindings 1.0.4 (2007-10-30):
1405
1406General:
1407
1408* Wrap new OP_SCALE_WEIGHT query operator, and corresponding Query constructor.
1409  Add feature tests for all languages.
1410
1411* The "bindings.html" file documenting each of the bindings has been renamed to
1412  "index.html".
1413
1414Packaging:
1415
1416* Fix the PHP Makefile.am to work with autoconf < 2.60 to fix RPM builds for
1417  older distros.
1418
1419Portability:
1420
1421* Fix warnings when compiling with GCC 4.2.
1422
1423PHP:
1424
1425* Update to newer SWIG SVN snapshot to fix memory leaks in wrapped constructors
1426  and methods/functions which return a wrapped class.
1427
1428* For PHP4, wrap Xapian::sortable_serialise() as xapian_sortable_serialise()
1429  and Xapian::sortable_unserialise() as xapian_sortable_unserialise().
1430
1431* Document how non-class functions are wrapped.
1432
1433* Fix wrapping of NumberValueRangeProcessor for PHP4.
1434
1435* smoketest.php: Split the regression test for bug#193 into separate
1436  versions for PHP4 and PHP5 as the previous version only worked for PHP5.
1437
1438Python:
1439
1440* python/docs/index.html: Promote the Pythonic iterators, and deprecate the
1441  non-pythonic iterators.  Make it clearer that the "sequence API" is
1442  deprecated.
1443
1444* Add test of a custom ValueRangeProcessor (ie, one written in python).
1445
1446* Update the examples to use the new-style attributes to access MSet item
1447  values rather than the old-style MSET_* constants.
1448
1449* Document MSET_DOCUMENT.
1450
1451Ruby:
1452
1453* smoketest.rb: Rename test of metadata access methods which had been named the
1454  same as the matchdecider test due to a copy-and-paste error.
1455
1456Xapian-bindings 1.0.3 (2007-09-28):
1457
1458General:
1459
1460* Wrap new methods Database::get_metadata() and
1461  WritableDatabase::set_metadata().
1462
1463* "make uninstall" now removes the loadable module we install for each of
1464  the bindings.
1465
1466* "make distcheck" now works.
1467
1468* Distribution tarballs are now in the POSIX "ustar" format since it saves
1469  about 40KB and we need to use it for xapian-core anyway.
1470
1471Packaging:
1472
1473* RPMs: Package xapian.php.
1474
1475CSharp:
1476
1477* Remove wrapper for ValueRangeProcessor::operator(), since it can't be
1478  usefully used currently.
1479
1480Java:
1481
1482* Remove wrappers for the Muscat36 backend, which has now been dropped from the
1483  C++ library.
1484
1485* "make clean" now removes the class files generated for inner classes.
1486
1487PHP:
1488
1489* Add feature test for DateValueRangeProcessor when used with QueryParser.
1490
1491* ValueRangeProcessor::apply() can now be called from PHP (bug#193).  This
1492  isn't actually very useful, since you can't subclass it in PHP currently.
1493
1494* Fixed wrapping of Enquire::set_cutoff() - previously this would only work
1495  if the third parameter was specified and a floating point number (e.g. 0.0).
1496
1497* php/docs/bindings.html: Fix errors in example code.
1498
1499Python:
1500
1501* ValueRangeProcessor::operator() is now wrapped as a __call__ method in
1502  Python which takes two strings and returns a 3-tuple (value_number,
1503  modified_begin, modified_end).  Previously this always failed with a
1504  type error, so this doesn't break existing code.
1505
1506* python/pythontest.py: Interpret any commandline arguments as a list of
1507  tests to be run (the default is to run all tests).
1508
1509* README,python/docs/bindings.html: Add a note about the problems with
1510  mod-python (as described in bug #185).
1511
1512* python/pythontest.py: Delete the database handles before deleting a database
1513  to fix problems running the Python tests on MS Windows (bug#179).
1514
1515* "make clean" now removes testsuite.pyc.
1516
1517Ruby:
1518
1519* Check for RUBY_INC, RUBY_LIB, and RUBY_LIB_ARCH in the environment or on
1520  the configure command-line.  The defaults for RUBY_LIB and RUBY_LIB_ARCH are
1521  now the site-specific directories, which is more correct when building
1522  from source.  Debian packages, etc can override this by setting RUBY_LIB and
1523  RUBY_LIB_ARCH.
1524
1525Tcl:
1526
1527* Check for TCL_LIB in the environment or on the configure command-line to
1528  allow installing without root access more cleanly.
1529
1530Xapian-bindings 1.0.2 (2007-07-05):
1531
1532Documentation:
1533
1534* Document use of PYTHON_LIB and PHP_EXTENSION_DIR instead of pylibdir and
1535  phpextdir.
1536
1537* Remove documentation of removed "--with-swig" configure option.
1538
1539General:
1540
1541* Add methods of NumberValueRangeProcessor for serialising and
1542  unserialising doubles.
1543
1544* Add methods and constants supporting spelling correction and synonyms.
1545
1546* Value of XAPIAN_CONFIG supplied to configure is now passed to distcheck,
1547  to ensure that it works with uninstalled copies of Xapian.
1548
1549* Value of PYTHON_LIB supplied to configure is now respected - previously
1550  it was documented, but ignored.
1551
1552* Add support for supplying PHP_EXTENSION_DIR to configure.
1553
1554* Change to using "%include", rather than reproducing contents of header
1555  files, for "queryparser.h", "document.h" and "postingiterator.h".
1556
1557* Add new form of get_mset() which allows a matchspy matchdecider to be
1558  set.
1559
1560* RPMs: Don't mention %makeinstall in a .spec file comment as that makes RPM
1561  explode.  Add in a missing "mv" in the command for installing tcl8
1562  documentation.
1563
1564CSharp:
1565
1566* Fix rule handling parallel make to include xapian_wrap.h
1567
1568PHP:
1569
1570* Install xapian.php as <PREFIX>/share/php<PHPMAJOR>/xapian.php.  There
1571  doesn't seem to be a standard location, but this works for Debian at
1572  least, and it seems better to at least try to install it.
1573
1574* Rename ValueRangeProcessor and subclasses and TermGenerator to have a Xapian
1575  prefix for PHP4.
1576
1577Python:
1578
1579* Fix a threading problem: the GIL was not being acquired in the exception
1580  handling code before setting the Python exception state, leading to
1581  various memory corruption symptoms in threaded programs.
1582
1583* Add special iterators to Database for synonyms, synonym_keys and
1584  spellings.
1585
1586* Add test cases for OP_VALUE_RANGE queries, getting spelling corrections,
1587  synonym iterators and spelling iterators.
1588
1589* In the test suite, expect_query() now adds "Xapian::Query(" and ")" around
1590  the expected description to make the tests more readable.
1591
1592Xapian-bindings 1.0.1 (2007-06-11):
1593
1594Documentation:
1595
1596* NEWS: Fix the recent headings which said "Xapian-core" to say
1597  "Xapian-bindings".
1598
1599General:
1600
1601* Wrap Xapian::Query constructor for creating ValueRange queries.
1602
1603* Wrap new forms of Xapian::Database::allterms_begin() and allterms_end()
1604  which take a prefix.
1605
1606Packaging:
1607
1608* RPMs: Use "make install" instead of %makeinstall to avoid doubled
1609  %{buildroot} prefix on most files which we then have to work around.
1610
1611CSharp:
1612
1613* SimpleIndex now uses Xapian.TermGenerator.
1614
1615* SimpleSearch now uses Xapian.QueryParser.
1616
1617* New SimpleExpand example.
1618
1619* Document explicitly how STEM_SOME constants are currently wrapped.
1620
1621* Update GetTermName() reference in documentation to GetTerm().
1622
1623* SmokeTest.cs: Update comment about Portable.NET bug - the bug is fixed in
1624  their CVS repo, and the fix should be in their 0.8.2 release.
1625
1626Java:
1627
1628* `configure --help' documented that environmental variable JNI_INCLUDE_DIR was
1629  looked at, but in fact its value was read but ignored.  We now use it as the
1630  first place to look for jni.h.
1631
1632* configure will now automatically add an extra "-I" for the
1633  linux/solaris/win32 subdirectory which Sun's JDK requires.
1634
1635* Document JAVA_HOME and JDK_HOME in ./configure --help and mark them as
1636  "precious" so their values are preserved for when configure is automatically
1637  rerun.
1638
1639PHP:
1640
1641* Enquire::get_mset(first, maxitems, omrset) now works for PHP5.
1642
1643* The PHP examples have been rewritten to be clearer and to make use of the
1644  new XapianTermGenerator class.
1645
1646Python:
1647
1648* Python examples now use xapian.QueryParser and xapian.TermGenerator.
1649
1650* Add support for prefix-restricted pythonic allterms iterators.
1651
1652* Update documentation in a couple of places to refer to updated replacements
1653  for MSetIterator.
1654
1655* Change testsuite output to be more vim-friendly (vim should be able to jump
1656  to the right lines now).
1657
1658* __str__ on Xapian::Error now includes extra information in some cases (the
1659  error_string and context, if they are set).
1660
1661* python/smoketest.py: Eliminate uses of the legacy sequence API.
1662
1663* python/pythontest.py: The legacy sequence API is only supported for Python
1664  2.3 and later, so don't run tests for it when running under Python 2.2.
1665
1666* We now generate and install xapian.pyo as well as xapian.pyc.
1667
1668Ruby:
1669
1670* The Ruby examples now use the Xapian::QueryParser and Xapian::TermGenerator
1671  classes.
1672
1673* Add missing rename for the C++ TermGenerator::set_document() method so it can
1674  be used as "tg.document = doc" in Ruby.
1675
1676* Fixed compilation on Mac OS X and warning from GCC on 32-bit Linux platforms.
1677
1678Tcl:
1679
1680* tcl8/docs/examples/simpleexpand.tcl: New example to demonstrate relevance
1681  feedback, based on C++ simpleexpand.cc.
1682
1683* tcl8/docs/example/simpleindex.tcl: New simpler example making use of the
1684  TermGenerator class.
1685
1686* tcl8/docs/example/simplesearch.tcl: New simpler example making use of the
1687  QueryParser class.
1688
1689* tcl8/docs/bindings.html: Document how constants are wrapped.
1690
1691* Update smoketest and examples to require version 1.0.0 - previously this
1692  required 0.9.6, which failed since TCL doesn't accept differing major
1693  version numbers.
1694
1695* pkgIndex.tcl is now generated by configure.
1696
1697Packaging:
1698
1699* The required automake version has been lowered to 1.8.3, so RPMs can now be
1700  built on RHEL 4 and SLES 9.
1701
1702Xapian-bindings 1.0.0 (2007-05-17):
1703
1704Documentation:
1705
1706* Document Unicode support for each language.
1707
1708* Assorted minor improvements and typo fixes.
1709
1710General:
1711
1712* Add wrappers for ExpandDecider, and Enquire::get_eset() variants which use
1713  it, for languages where SWIG supports directors.
1714
1715* Wrap new features: TermGenerator, ValueRangeProcessor hierarchy, the
1716  OP_VALUE_RANGE query operator, the new overloaded form of parse_query, which
1717  allows the "default_prefix" argument to be supplied, QueryParser flags
1718  FLAG_PURE_NOT and FLAG_PARTIAL.
1719
1720* Deprecated Xapian::Stem's stem_word() method in favour of apply().
1721
1722* Remove wrappers for deprecated features removed from the C++ API (see
1723  docs/deprecation.html in xapian-core for full details and upgrade
1724  information).
1725
1726* Deprecate ESetIterator::get_termname() in favour of ESetIterator::get_term().
1727
1728* QueryParserError is now a real error, so remove special handling for "const
1729  char *" exceptions.
1730
1731* Use a stamp file in "make" rules with multiple targets so that parallel
1732  make works.
1733
1734* configure: Now quotes $PYTHON, etc so that you can specify a program with
1735  arguments.
1736
1737* configure: If the user specifies a program which doesn't exist (e.g.
1738  PYTHON=/opt/bin/ptyhon) don't autoprobe after failing to find it.
1739
1740* configure: Disable probes for f77, gcj, and rc completely by preventing
1741  the probe code from even appearing in configure - this reduces the size of
1742  configure by 28% and should speed it up significantly.
1743
1744* configure: If the version check against the xapian-core version detects a
1745  mismatch, we now issue a warning rather than a hard error since if you're
1746  careful this can work.  The warning is issued late on in configure, so it's
1747  harder for the user to miss.
1748
1749* configure: The --with-swig option has been removed.  It no longer has a
1750  purpose as we now ship the files which are generated by SWIG.
1751
1752Portability:
1753
1754* The PHP bindings can now be built with MSVC for Microsoft Windows.
1755
1756CSharp:
1757
1758* When using Mono 1.2, we must build with gmcs (the C# 2.0 compiler) rather
1759  than mcs to avoid segmentation faults at runtime due to unimplemented
1760  features in mcs.  Document this, and update configure to prefer gmcs.
1761
1762* The return type of MatchDecider::operator() is now `bool' rather than `int'
1763  (in line with the same change in the C++ API).
1764
1765* Xapian.Stem.StemWord() deprecated in favour of Xapian.Stem.Apply().
1766
1767Java:
1768
1769* The Java bindings have been updated to use C++ replacements for deprecated
1770  methods, so they still build.  The Java wrappers still provide the old
1771  deprecated names for now though.  The longer term plan is to replace the
1772  hand-written JNI with SWIG generated wrappers (work has now begun on this)
1773  which is likely to require some API changes, and it seems more sensible to
1774  make any changes to align with C++ API changes at the same time.
1775
1776* Enquire.getQuery() is implemented entirely in Java, so strip out the unused
1777  MyQuery mechanism, and so fix a memory link which it caused (bug#105).
1778
1779PHP:
1780
1781* Fix undefined behaviour in get_matching_terms().
1782
1783* Document the (existing) renaming of methods which are PHP reserved words
1784  (empty() to is_empty() and clone() to clone_object()).
1785
1786* Deprecated Xapian::Stem's stem_word() method in favour of apply().
1787
1788Python:
1789
1790* The Python bindings now throw exceptions as classes with a hierarchy which
1791  mirrors that of the C++ Xapian::Error and its subclasses.  The xapian.Error
1792  base class inherits from the standard Python Exception class.
1793
1794* All Python methods which accept strings can now be passed either a unicode
1795  object or a simple string.  Strings are returned as simple strings: unicode
1796  input will be returned as utf-8 encoded output.  The documentation now
1797  contains a "Unicode" section.
1798
1799* The Python bindings should now be usable more efficiently from threaded
1800  Python applications since we now use SWIG's -threads option when generating
1801  them, so that the GIL is released during long-running Xapian operations
1802  (bug#137).
1803
1804* Most classes, methods, functions, etc now have docstrings which are either
1805  automatically extracted from the C++ documentation comments, or overridden by
1806  more appropriate versions.
1807
1808* Most of the Pythonic iterators now return an object instead of a sequence,
1809  which means they now lazily fetch the information which previously had to be
1810  fetched to put it in the sequence.  The old sequence API is supported for
1811  compatibility, but is scheduled for removal in Xapian 1.1.0.
1812
1813* Those Python iterators which have skip_to() methods now return the item
1814  skipped to, and next() will return the following item.  Previously, they
1815  returned None, and next() returned the item skipped to.  Several bugs in the
1816  skip_to() wrappers were fixed.
1817
1818* Because of the lazy access, some objects returned by iterators will raise
1819  an error if the lazy evaluation happens after the iterator has moved on
1820  (since the underlying Xapian API doesn't allow efficient access to the
1821  information in this situation).  The exact semantics are defined in the
1822  docstrings for each iterator.
1823
1824* Those Pythonic iterators which return only a list of terms now return
1825  simple strings, instead of a sequence or an object containing the term.  This
1826  is an incompatible change with earlier releases.  The affected iterators are
1827  Enquire.matching_terms, Query.__iter__, QueryParser.stoplist and
1828  QueryParser.unstemlist.
1829
1830* The contents of an MSet can now be iterated in the standard Python way.
1831  The iteration will return MSetItem objects.  The __contains__ and __getitem__
1832  methods are also implemented, allowing the "in" and [] operators to work.
1833  MSet.__getitem__ is a synonym for MSet.get_hit.
1834
1835* MSet.get_hit() now returns an MSetItem object instead of an MSetIterator,
1836  so that lazy access to its attributes is supported.  MSetItem has some
1837  deprecated methods which mimic the MSetIterator interface to allow old code
1838  to work without modification until release 1.1.0.
1839
1840* MSetItem provides access to the collapse_key and collapse_count, which
1841  weren't accessible from the sequence returned by the iterators before this
1842  release.
1843
1844* Out-of-range access to MSets will now raise an IndexError - it used to
1845  cause undefined behaviour (usually a crash).
1846
1847* The Python testsuite is now much more extensive, and supports colour output
1848  and verbosity levels, much like the C++ testsuite.  Tests of deprecated
1849  features are separated out, so that they can easily be removed when the
1850  features are removed.  The Python tests currently focus mainly on Python
1851  specific iterators and related functionality - general Xapian behaviour is
1852  tested by the C++ testsuite.
1853
1854* The pure Python code in the bindings now uses new-style classes, since we
1855  have required Python >= 2.2 since Xapian release 0.9.9.
1856
1857* Enquire.get_matching_terms is now deprecated - use Enquire.matching_terms
1858  instead.
1859
1860* The get_description() method which many classes support has been deprecated
1861  in favour of new more pythonic __str__ methods, so that the str() builtin can
1862  be used.  get_description() is deprecated and scheduled for removal in 1.1.0.
1863
1864Ruby:
1865
1866* We no longer regard the Ruby bindings as "beta quality", so remove the
1867  warning from their documentation.
1868
1869* Document that that C++ operator() becomes the method "call" in Ruby.
1870
1871* Don't read termfreq in safe wrapper for Document::termlist_begin().  Don't
1872  read wdf in safe wrapper for Database::allterms_begin() (bug#133).
1873
1874Tcl:
1875
1876* Deprecated Xapian::Stem's stem_word() method in favour of apply().
1877
1878Xapian-bindings 0.9.10.1 (2007-04-04):
1879
1880PHP:
1881
1882* Fix PHP5 class wrapper generation in a few cases for overloaded methods with
1883  default parameters.  The most notable case was a missing Query constructor
1884  which meant that QueryParser was unusable.
1885
1886* Fix compilation of the PHP4 bindings with ZTS-enabled versions of PHP
1887  (which mostly seems to mean the MS Windows version).
1888
1889* Fix PHP5 crash on exit with ZTS-enabled versions of PHP (which mostly
1890  seems to mean the MS Windows version).
1891
1892* Add note to the documentation that PHP examples are written for CLI version
1893  of PHP, but that the bindings work with any version.
1894
1895* Add check to all PHP examples that they are being run under a CLI version of
1896  PHP.
1897
1898Python:
1899
1900* simpleexpand.py: Print each term's expand weight as a floating point value,
1901  not an integer.
1902
1903Ruby:
1904
1905* INSTALL: document how to install Xapian's Ruby bindings in your home
1906  directory.
1907
1908Xapian-bindings 0.9.10 (2007-03-04):
1909
1910Java:
1911
1912* Under Mac OS X, automatically look in the standard location for jni.h,
1913  and automatically rename the JNI library we build to ".jnilib", as is
1914  required by the OS X JVM.
1915
1916* java/README: Note success with Sun's JDK 1.5.0_06-b05, plus the requirement
1917  to add the linux header directory to the include path when using this JDK.
1918
1919* Add missing default constructor for RSet class - it's not much use without
1920  this!
1921
1922* Fix Enquire.getESet() to actually work.
1923
1924* Fix bug in ESetIterator.hasNext().
1925
1926* Fix MatchDecider and ExpandDecider so subclassing in Java actually works.
1927
1928* Fix memory leak with some JVMs in the "Query from array" constructor.
1929
1930* Fix memory leak in Enquire.setQuery().
1931
1932* SmokeTest.java: Add regression tests for RSet default constructor,
1933  Enquire.getESet(), ESetIterator.hasNext(), MatchDecider, ExpandDecider.
1934  Add feature tests for Enquire.getQuery(), and to make sure we get passed
1935  the right document in a java subclass of MatchDecider.
1936
1937* configure: Look for jni.h in $JAVA_HOME/include and $JDK_HOME/include if the
1938  respective variables are set.
1939
1940PHP:
1941
1942* Update the documentation to fix out-of-date information and document the
1943  differences between the PHP4 and PHP5 wrappers.
1944
1945* Update the examples to use the new Object Oriented API, and provide versions
1946  for both PHP4 and PHP5.
1947
1948* Add a "simpleexpand" example.
1949
1950* For PHP4, Xapian::DB_CREATE_OR_OPEN should be wrapped as
1951  Xapian_DB_CREATE_OR_OPEN not DB_CREATE_OR_OPEN, so wrap it with the
1952  new name, but keep the old name for now for backward compatibility.
1953
1954* configure: Try `$(PHP_CONFIG) --php-binary` when looking for a PHP
1955  interpreter - this works with PHP5.
1956
1957* configure: Remove the sanity check for PHP_EXTENSION_DIR added in Xapian
1958  0.9.8 - if Xapian is the first PHP extension to be installed, the extension
1959  directory may not exist and "make install" will create it.
1960
1961* configure: If zend.h isn't found and configure was run with "--with-php",
1962  exit with an error rather than automatically disabling PHP support.
1963
1964Python:
1965
1966* Fix a problem which preventing building for Python 2.5 on 64 bit platforms.
1967
1968Packaging:
1969
1970* RPMs: Add support for passing "--without python" to rpmbuild.  Document the
1971  various "--without" options in a comment at the start of the .spec file.
1972
1973* RPMs: Remove "." from the end of the Summary.
1974
1975Xapian-bindings 0.9.9 (2006-11-09):
1976
1977Documentation:
1978
1979* Ship our custom INSTALL file rather than the generic one from autoconf which
1980  we've accidentally been shipping instead since 0.9.5.
1981
1982General:
1983
1984* Wrap Flint::open() and Flint::open_writable().
1985
1986* configure: Require SWIG 1.3.30 (1.3.30 isn't out yet, but 1.3.30rc1 is
1987  suitable).
1988
1989Python:
1990
1991* Generate the bindings using SWIG 1.3.30rc1 which fixes a build error on 64
1992  bit platforms with Python 2.5.
1993
1994Packaging:
1995
1996* RPMs: Prevent binaries getting an rpath for /usr/lib64 on FC6.
1997
1998* RPMs: The Python bindings now require Python >= 2.2.
1999
2000Portability:
2001
2002* configure: Remove unnecessary backticks from tclsh version test.
2003
2004Xapian-bindings 0.9.8 (2006-11-02):
2005
2006General:
2007
2008* Wrap the "prog" form of Remote::open() (which is suitable for general purpose
2009  use as of 0.9.7) and the Remote::open_writable() methods (new in 0.9.7).
2010
2011* The C++ method QueryParser::parse_query() current throws "std:string"
2012  exceptions if there's a parse error.  Previously the bindings didn't catch
2013  these.  Now we catch them and handle them as if they were exceptions of
2014  type Xapian::QueryParserError (in anticipation of this changing in
2015  xapian-core).  Added testcases for this for PHP, Python, and C#.
2016
2017* configure: Note that SWIG is only useful for Xapian developers in --help
2018  output.
2019
2020* configure: If we failed to find any languages to build for, give a more
2021  helpful message.
2022
2023CSharp:
2024
2025* SmokeTest.cs: Fix warning about unused variable in OP_ELITE_SET check.
2026
2027Java:
2028
2029* configure: Fix check for jni.h in /usr/lib/jvm/java-gcj/include to actually
2030  work rather than using the cached failure of the first jni.h check.
2031
2032* SmokeTest.java: Fix check for value of Query.OP_ELITE_SET.
2033
2034* SmokeTest.java: Avoid gcj "set but not used" warning.
2035
2036PHP:
2037
2038* configure: Sanity check PHP_EXTENSION_DIR and PHP_INC.
2039
2040* smoketest4.php,smoketest5.php: Check the exception message given by the
2041  DocNotFoundError testcase.
2042
2043Python:
2044
2045* Drop support for Python 2.1.
2046
2047Xapian-bindings 0.9.7 (2006-10-10):
2048
2049Documentation:
2050
2051* NEWS: Fix the recent headings which said "Xapian-core" to say
2052  "Xapian-bindings".
2053
2054General:
2055
2056* Specify required automake version in the call to AM_INIT_AUTOMAKE in
2057  configure.ac.
2058
2059* If we're building with GCC 4.0 or higher, pass -fvisibility=hidden when
2060  compiling SWIG generated code which makes the compiled modules a few percent
2061  smaller and perhaps a little faster.
2062
2063* Wrap the newly implemented transaction API.
2064
2065* configure: Use "-fno-strict-aliasing" when compiling all the SWIG bindings
2066  (this option was supposed to be used to compile the Python bindings from
2067  0.9.3 onwards, but this wasn't actually working correctly).
2068
2069* Use CVS snapshot of SWIG to generate files (fixes bugs #83, #85).
2070
2071* In maintainer-mode, "make clean" now removes the SWIG generated files
2072  which would otherwise only be removed on "make maintainer-clean".
2073
2074CSharp:
2075
2076* Xapian::MatchDecider can now be subclassed in C#.
2077
2078* The value of OP_ELITE_SET was wrong in C# which caused an error if you tried
2079  to use it.  This has been fixed and a regression test added.
2080
2081* SmokeTest.cs: Added exception handling test.
2082
2083Java:
2084
2085* Correct two misuses of delete to delete[].  Fixes bug#78.
2086
2087* configure: We need to look for jni.h in /usr/lib/jvm/java-gcj/include on some
2088  Debian and Ubuntu boxes at least.
2089
2090PHP:
2091
2092* We now generate class wrappers for PHP5.
2093
2094* We now generate proxy classes for PHP4, which is an incompatible change
2095  from previous versions of xapian-bindings.  A perl script to upgrade
2096  your scripts is included.
2097
2098* smoketest.php:
2099
2100  + Now that we're throwing PHP exceptions with PHP5 we need separate versions
2101    of the exception handling test for PHP4 and PHP5.  Fixes bug#76.
2102
2103  + Rely on xapian.php to load the extension module for us.
2104
2105  + Fix error messages to show PHP code, not Python code.
2106
2107* When running smoketest.php, pass the "-q" option to php, which suppresses
2108  HTTP header output for PHP < 4.3 and is ignored for compatibility by more
2109  recent versions of PHP.
2110
2111* configure: Fix typo - PHP_tried should be PHP_found.  This might have caused
2112  the PHP interpreter not to be found in some cases when it was actually
2113  available, but it's only used to run the smoketest not for building the
2114  bindings.
2115
2116Python:
2117
2118* configure: Fixed check for PYTHON_PATHSEP to use $PYTHON rather than python,
2119  and also report the check and its result to the user.
2120
2121* python/Makefile.am: xapian.pyc can't be generated until _xapian.la has been
2122  built, so add an explicit dependency so that this works reliably in parallel
2123  builds.  Fixes bug#77.
2124
2125* In examples and documentation, don't call the MatchDecider class/object
2126  "matcher", since we use the term "matcher" to mean something else in
2127  the library documentation.
2128
2129* smoketest.py:
2130
2131  + Add test of exception handling.
2132
2133  + Add test that MatchDecider can be subclassed successfully.
2134
2135* Wrap TermIterator::skip_to() so that it can be used from the TermIter
2136  pythonic iterator class.
2137
2138Ruby:
2139
2140* Xapian::MatchDecider can now be subclassed in Ruby.
2141
2142* configure: Look for ruby interpreter as "ruby1.8" since it's called that
2143  (with no "ruby" alias) on Ubuntu dapper at least.
2144
2145* simplesearch.rb: Lowercase terms before stemming.  "First ten" is inaccurate
2146  since we may have less than 10 matches, so say "1-<N>" instead.
2147
2148* simplematchdecider.rb: Implemented.
2149
2150Tcl:
2151
2152* Implement saner exception handling for Tcl and document it.
2153
2154* smoketest.tcl:
2155
2156  + Add check that xapian::Query_OP_ELITE_SET has the right value.
2157
2158  + Rework how the smoketest gets run to eliminate special code for using
2159    uninstalled bindings from smoketest.tcl itself.  This allows the smoketest
2160    to be run using installed bindings, and also makes it a better example
2161    program.
2162
2163  + Add test for exception handling.
2164
2165  + Send error messages to stderr.
2166
2167  + Add comment about Tcl storing zero bytes as \xc0\x80.
2168
2169* simpleindex.tcl,simplesearch.tcl: Print $errorCode in the exception handler.
2170
2171* For SVN snapshots, remove any _svn6789 suffix from the Xapian version number
2172  used for the Tcl bindings.
2173
2174Xapian-bindings 0.9.6 (2006-05-15):
2175
2176Documentation:
2177
2178* INSTALL: Add section describing how to install without root access.
2179
2180General:
2181
2182* Updated to reflect the renaming of Xapian::xapian_version_string and
2183  companions to Xapian::version_string.
2184
2185* Wrap optional length parameter to Enquire::set_query().
2186
2187* In PHP, Python, and Tcl bindings, rename get_document_id to get_docid for
2188  consistency.  Keep get_document_id as an alias for now for backward
2189  compatibility.
2190
2191* Fixed ESet::empty() to return bool instead of Xapian::termcount (this was
2192  probably a largely harmless error).
2193
2194* Stop SWIG from adding exception handling wrappers to the calls which return
2195  version strings, since they can't throw exceptions.
2196
2197* xapian.i: Removed superfluous "const" from return type "docid" which is just
2198  a typedef for an unsigned integer type.
2199
2200* configure: Add some missing "checking ..." messages so the user has more idea
2201  what is going on.
2202
2203* Language specific util.i files can now define
2204  XAPIAN_TERMITERATOR_PAIR_OUTPUT_TYPEMAP and
2205  XAPIAN_MIXED_VECTOR_QUERY_INPUT_TYPEMAP to indicate which optional typemaps
2206  are provided for each language.  This avoids needing to keep this
2207  information in two different places.
2208
2209* xapian.i: Uncomment commented-out parameter names and fix duplicate
2210  parameter names (for the benefit of bindings which use the parameter names,
2211  like the OO PHP5 patch for SWIG I'm working on...)
2212
2213Portability:
2214
2215* configure: Fix warning flags passed for Intel C++ compiler.
2216
2217CSharp:
2218
2219* We now support building with Portable.NET.
2220
2221* Note that the passing of strings from C# into Xapian and back isn't currently
2222  zero byte safe.  If you try to handle string containing zero bytes, you'll
2223  find they get truncated at the zero byte.
2224
2225* C# bindings now build and pass tests when srcdir != builddir.
2226
2227* In configure.ac, the "#" in "C#" seems to sometimes confuse autoconf so
2228  always say "CSharp" instead.
2229
2230* Not all machines are set up to run compiled C# programs when invoked
2231  directly, so get configure to check if we can, and otherwise see if using
2232  mono or ilrun works.  If not, just skip the C# tests.
2233
2234* configure: If "mcs" isn't found, we now look for a CSharp compiler as "gmcs"
2235  (alternative name for "mcs"), "cscc" (Portable.NET), and then "csc"
2236  (Microsoft, but we check it isn't the unrelated Chicken csc program.)
2237
2238* Move the C# specific %rename list to csharp/util.i.
2239
2240* Store the strong name key in the key container so we reuse it for later
2241  builds.
2242
2243* Wrap the version functions as more sensible names and document them (and
2244  continue to provide the older undocumented names for now just in case anyone
2245  was using them.)
2246
2247* Set the version of XapianSharp.dll correctly when building a snapshot from
2248  SVN and set informational attributes (which e.g. MS Windows Explorer shows.)
2249
2250* SmokeTest.cs: Add test of version functions.
2251
2252Guile:
2253
2254* The Guile bindings don't work and aren't being actively worked on, so we're
2255  no longer including them in the distributed tarball to avoid disappointing
2256  users who notice a "guile" subdirectory.  It also makes the download smaller.
2257
2258Java:
2259
2260* Simplify (and improve portability of) run-java-test by using "libtool
2261  --mode=execute"'s -dlopen option.
2262
2263* Need to make sure "built" subdirectory exists or building from clean fails.
2264
2265* Fix "make check" to work when srcdir != builddir.
2266
2267PHP:
2268
2269* Using "php -c myphp.ini" still loads the system php.ini (at least for PHP
2270  4.3.10), so use "php -n" and then set the options we specifically want using
2271  "-d".
2272
2273* Fix the smoketest invocation to work better when srcdir != builddir.
2274
2275* Look for PHP interpreter first in prefix given by "php-config --prefix".
2276
2277* Fix SWIG_RuntimeError to be handled as an exception in PHP5.
2278
2279* simplesearch.php: MAX_PROB_TERM_LENGTH isn't used here so remove it.
2280
2281* smoketest.php:
2282
2283  + Add test for version reporting functions
2284
2285  + If a test fails, say which one to aid debugging.
2286
2287  + Added simple test that zero-bytes are handled correctly when passing
2288    strings to and from Xapian.
2289
2290Python:
2291
2292* README: Note that Python bindings have been built with MSVC.
2293
2294* Install xapian.py and xapian.pyc as _DATA not _SCRIPTS because we don't want
2295  to make them executable (they don't have a #! line).
2296
2297* simplematchdecider.py: Rename confusingly-named "mymatcher" to
2298  "mymatchdecider".  Add description of what this example does.
2299
2300* simpleexpand.py: Don't define MAX_PROB_TERM_LENGTH as it isn't used.
2301
2302* smoketest.py: Added simple test that zero-bytes are handled when passing
2303  strings to and from Xapian.
2304
2305Ruby:
2306
2307* Added new Ruby bindings from Paul Legato.
2308
2309Tcl:
2310
2311* smoketest.tcl:
2312
2313  + Add test for version reporting functions
2314
2315  + If a test fails, say which one to aid debugging.
2316
2317  + Added simple test that zero-bytes are handled correctly when passing
2318    strings to and from Xapian.
2319
2320Xapian-bindings 0.9.5 (2006-04-08):
2321
2322Documentation:
2323
2324* HACKING,README: Split off HACKING to contain information which is only
2325  relevant to those wishing to modify the bindings.
2326
2327General:
2328
2329* SWIG-based bindings are now built with SWIG 1.3.29.
2330
2331* configure: Report which languages we're building bindings for just before
2332  configure finishes.
2333
2334* xapian.i: Make the stub definitions for disabled backends static.
2335
2336* configure: Don't quote $PHP in AC_PATH_PROGS to avoid "checking for ... no"
2337  message.
2338
2339* xapian.i: Wrap new method Enquire::set_sort_by_relevance_then_value().
2340
2341Packaging:
2342
2343* RPMs: xapian-bindings.spec.in: Use "%{_libdir}" instead of "/usr/lib" for
2344  Python bindings to support 64 bit systems.
2345
2346* RPMs: Package the C# bindings.
2347
2348Portability:
2349
2350* java/run-java-test: Fix to work on platforms where LD_LIBRARY_PATH has a
2351  different name.
2352
2353* configure: Detect Intel's C++ compiler and set suitable warning flags to
2354  avoid noise from compiling generated code.
2355
2356CSharp:
2357
2358* Rename Database::GetDoccount() to Database::GetDocCount() for consistency.
2359
2360Guile:
2361
2362* configure: Disable --with-guile since Guile support doesn't currently work.
2363
2364Java:
2365
2366* Override deprecation warnings for Xapian methods/functions/etc.
2367
2368* SmokeTest.java: Write a helpful diagnostic to stderr if a check fails so we
2369  have some idea what went wrong!
2370
2371* Rework how we include headers to get hash_map to avoid compiler warnings
2372  since it's usually not in the std namespace nowadays.
2373
2374* Previously the "all" target also ran the "install" target, but this has
2375  proved very problematic, so change "make check" to use the uninstalled JNI
2376  glue library, and update the instructions to say that "make install" is now
2377  required.
2378
2379* Use JAVA_PATHSEP when specifying the classpath for compiling .java files to
2380  .class files.
2381
2382* README: Note that some platforms need "-pthread" or similar flags.
2383
2384* Add a new Query constructor wrapper which take an OP_xxx and an array of
2385  Query objects.
2386
2387* Compiling a .java file to a .class file now deletes the .jar file to ensure
2388  it gets updated.
2389
2390PHP:
2391
2392* php -n avoids reading any php.ini, but the compiled in default may be to
2393  enable the dubiously named "safe_mode" which prevents dl() being used so
2394  "make check" fails.  So instead provide a very simple php.ini which turns off
2395  safe_mode and makes sure enable_dl is on.
2396
2397* Fix handling of bool parameters when resolving overloaded methods and/or
2398  default arguments.  This fixes Enquire_sort_by_value() to work when the
2399  second argument is specified.  Added regression test for this case.
2400
2401* simpleindex.php: Lowercase terms before stemming.  Fixes bug#73.
2402
2403* Fix segmentation fault when PHP "Null" is passed where C++ wants an object
2404  passed by reference.  Fixes bug#74.
2405
2406* simpleindex.php: Flushing after every call to WritableDatabase_add_document
2407  isn't required and will kill performance, so stop doing it.  Fixes bug#75.
2408
2409Python:
2410
2411* Use the fairly new "swig -O" option for the "modern" python bindings as
2412  it generates a smaller glue library and runs faster.  Some of the features
2413  enabled also work on python 2.1, so enable these for the "olde" bindings.
2414
2415* configure: Catch the case where the user has python installed but not the
2416  module "distutils.sysconfig" and explain that they probably need to install a
2417  python-dev or python-devel package.
2418
2419* "make check" now works in VPATH builds.
2420
2421* smoketest.py: If a check fails, write a diagnostic message to stderr so we
2422  know which check it was!
2423
2424* smoketest.py: catch Exception objects and print them.
2425
2426* smoketest.py: Add feature tests for the various pythonic iterator
2427  wrappers
2428
2429* python/docs/bindings.html: Document the Pythonic iterators.
2430
2431* Fix TermIter not to try to read termfreqs or positions if they aren't
2432  meaningful for the current TermIter.
2433
2434Xapian-bindings 0.9.4 (2006-02-21):
2435
2436Documentation:
2437
2438* COPYING: Updated FSF address.
2439
2440General:
2441
2442* Wrap Stopper::get_description().
2443
2444* Wrap xapian_version_string() and related functions.
2445
2446Portability:
2447
2448* If we're overriding MACOSX_DEPLOYMENT_TARGET then override it for commands
2449  run from "make" too.
2450
2451PHP:
2452
2453* Fix so that generated code compiles with ZTS-enabled PHP (which is the
2454  default on Windows).
2455
2456Python:
2457
2458* smoketest.py: Test wrapping of xapian_version_string() and related functions.
2459
2460Xapian-bindings 0.9.3 (2006-02-16):
2461
2462Documentation:
2463
2464* README: Updated and expanded (now covers supported platforms, and lists
2465  criteria which bindings for an additional language need to fulfil before
2466  we're likely to accept them).
2467
2468* INSTALL: Updated and improved.
2469
2470* TODO: Move C#-specific TODO to top level so we can track to-do items for
2471  all languages.
2472
2473General:
2474
2475* configure: Change how the user selects which bindings to build.  If no
2476  --with* arguments are passed, then we default to building bindings we detect
2477  the required tools for (as before).  But instead of requiring the user to
2478  deselect all bindings they don't actually want, we now let them select the
2479  bindings they do want.  So "./configure --with-python" will only build the
2480  python bindings (and will fail if the required tools aren't installed).
2481
2482* Every wrapped method contains exception handling code.  The bulk of this
2483  is now factored out into a single helper function, which cuts the compile
2484  time by around a factor of 3 and halves the size of the stripped library
2485  (figures are for Tcl on x86_64).
2486
2487* configure: Rework how XAPIAN_CXXFLAGS is passed through so that the user can
2488  override CXXFLAGS in the make invocation like so: make CXXFLAGS=-g
2489
2490* configure: Bump required SWIG version to 1.3.28 and drop the special
2491  requirement for 1.3.22 for PHP (hurrah!)  Note that you don't need
2492  SWIG to install the bindings - SWIG is run by the Xapian developers
2493  so these updated requirements are only relevant if you want to modify
2494  the bindings.
2495
2496* Eliminate separate Makefile in each examples subdirectory, which makes the
2497  build system simpler, smaller, and a little faster.
2498
2499* xapian.i: Include default constructors for all classes so that SWIG knows it
2500  doesn't have to use SwigValueWrapper for them, which makes the bindings code
2501  a bit smaller and faster.  Also stop SWIG using SwigValueWrapper for
2502  std::pair<...>.
2503
2504* configure: Document special environmental variables which configure
2505  recognises.  Enhance handling of environmental variables so you can
2506  e.g. './configure PYTHON=python23' (previously you had to give a full
2507  path in such environmental variables or they would be ignored.
2508
2509Packaging:
2510
2511* RPM spec file:
2512
2513  + Automatically detect the python version.
2514
2515  + Rename "php4" references to "php".
2516
2517  + Automatically detect the PHP extension directory.
2518
2519  + Relax Tcl requirement to >= 8.1, since that's what we actually require.
2520
2521  + Add support for "--without php" and --without tcl8" options to rpmbuild.
2522
2523Portability:
2524
2525* configure: On Mac OS X, ensure MACOSX_DEPLOYMENT_TARGET is set to at least
2526  10.3.  This is required to link the bindings, and it doesn't seem to be
2527  possible to link them on 10.1 or 10.2 anyway.
2528
2529* configure: Add -lstdc++ to XAPIAN_LIBS if we're using GCC.  OpenBSD needs it
2530  to be explicitly specified and libtool correctly handles platforms where it
2531  would have been implicitly linked with anyway.
2532
2533* Try to enable PHP bindings to build out of the box on cygwin (needs testing).
2534
2535* configure: Add missing ";;" on the last alternative in some case statements.
2536
2537* Only pass -no-undefined on platforms where it is required in order to link a
2538  shared library at all (it causes problems on Mac OS X in some cases).
2539
2540CSharp:
2541
2542* This release includes a lot of improvements for the C# bindings.  They're
2543  now pretty much on a par with the other language bindings.
2544
2545* Added documentation and examples.
2546
2547* Method and function names are now renamed to match C# conventions
2548  (e.g. from get_description() to GetDescription()).  This is obviously an
2549  incompatible change, but the C# bindings haven't been suitable for real world
2550  use prior to this release.
2551
2552* Optional parameters are now wrapped so no longer need be specified
2553  explicitly.
2554
2555* Overload ++ and -- for iterators.
2556
2557* Overload == and != for iterators.  Now comparisons with the end iterator
2558  work as expected, and SmokeTest passes.
2559
2560* SmokeTest now reports exceptions verbosely.
2561
2562* Xapian::InMemory::open() is now wrapped as Xapian.InMemory.Open(), and
2563  similarly for other database factory functions.
2564
2565* Heed compatibility warnings from mcs and use different forms for
2566  command-line switches to the C# compiler (presumably for compatibility with
2567  Microsoft's compiler, though the warnings don't actually say that
2568  explicitly).
2569
2570Guile:
2571
2572* Rewrote guile/util.i.  The old version caused SWIG warnings and wasn't
2573  zero-byte safe.  The guile bindings are still a long way from actually
2574  working though.
2575
2576Java:
2577
2578* Wrap optional second parameter (query length) to Enquire::set_query().
2579
2580* configure now probes for the Java path separator, which we then use to
2581  separate entries in the java -classpath command line option so we can
2582  build on platforms where it isn't ":".
2583
2584* SmokeTest.java: Expand to test more features.
2585
2586* java/README:
2587
2588  + Note that the bindings work with the Eclipse javac and GIJ 4.0.1.
2589
2590  + Add note about how wrapped methods are named.
2591
2592* Query.java: OP_* code 9 no longer exists, so add it to those rejected by the
2593  validity check.
2594
2595* Query.java: Comment out unused code.
2596
2597* Fixed memory leak in Query-from-array-of-strings constructor.
2598
2599* Eliminate the "_errormap" hashmap - we don't need to use RTTI here, since
2600  Xapian::Error subclasses can tell you their typename directly (using
2601  get_type()).
2602
2603PHP:
2604
2605* Some problems with overloaded methods in PHP have been fixed by a major
2606  overhaul of SWIG's PHP support.  So we no longer rename such methods
2607  for PHP.  This is an incompatible change, but it's easy to update your
2608  PHP scripts (just change new_Query_from_term_pair -> new_Query, etc).
2609
2610* Previously the documentation and simpleindex.php suggested that you
2611  should call delete_CLASS().  This was incorrect and resulted in a
2612  double-free() in some cases, so we've fixed the documentation and
2613  examples and eliminated the delete_CLASS() wrappers.  This is another
2614  incompatible change, but again easy to update for.
2615
2616* We now support PHP5 as well as PHP4, so the configure test now looks
2617  for either and all references to "PHP4" or "php4" have been adjusted.
2618
2619* PHP5 supports exceptions, so throw exceptions under PHP5.  For PHP4
2620  we now handle DocNotFoundError and FeatureUnavailableError by issuing a
2621  warning and making the method return "Null".  This isn't ideal, but it's
2622  the best we can easily do without proper exceptions.
2623
2624* For the smoketest, instead of using "$(PHP) -c $(srcdir)" and having an
2625  empty php.ini in srcdir (which we were failing to distribute anyway), use
2626  "$(PHP) -n" which tells PHP not to use any php.ini file.
2627
2628* Update PHP documentation to include new features.
2629
2630* Redo Xapian section in phpinfo() to look more like most other modules.
2631
2632* You can now construct a Query object from an array of strings or Query
2633  objects (or even a mixture).
2634
2635* PHP examples now give a more useful error message if a database can't be
2636  opened.
2637
2638* smoketest.php: Expanded the tests performed, including feature tests for
2639  the new Query-from-list constuctor.
2640
2641* simplesearch.php: Use newly wrapped Query-from-list constructor.
2642
2643* Use std::string::data() instead of c_str() as it may be more efficient for
2644  some STL implementations.
2645
2646* Enquire::get_matching_terms() now generates the PHP list directly from the
2647  TermIterator rather than constructing a temporary C++ std::list, which is
2648  faster and requires less temporary memory.
2649
2650Python:
2651
2652* The Python constructor xapian.Query(OP, LIST_OF_STRINGS [, PARAM]) works
2653  once again (it has been broken since 0.9.0).  Added a regression test to
2654  help keep this working.
2655
2656* Enhance the above constructor to accept any Python sequence (e.g. a tuple
2657  instead of a list).  Also the sequence can contain xapian.Query objects or
2658  strings or a mixture.  Documented these enhancements.
2659
2660* smoketest.py: Expanded the tests performed.
2661
2662* Convert C++ strings to python ones in a zero-byte clean way.
2663
2664* Added more error checking of the results of calls into the python
2665  interpreter.
2666
2667* If using GCC, compile the python bindings with -fno-strict-aliasing (python
2668  itself is compiled with this option to avoid problems and it appears we ought
2669  to use it too to avoid the risk of hitting the same problems, although I'm
2670  not aware of anyone actually encountering such problems).
2671
2672* When making xapian.pyc, "import _xapian;" before we "import xapian;" to
2673  avoid creating a broken xapian.pyc is the shared library can't be loaded for
2674  some reason.
2675
2676* Enquire::get_matching_terms() now generates the Python list directly from the
2677  TermIterator rather than constructing a temporary C++ std::list, which is
2678  faster and requires less temporary memory.
2679
2680Tcl:
2681
2682* Terms with a leading underscore now work (thanks to changes in SWIG).
2683
2684* Implement custom typemaps for Tcl, so that you can now construct a Query from
2685  a list of Query objects and/or strings, and Enquire::get_matching_terms is
2686  now wrapped.
2687
2688* simplesearch.tcl: Use the new Query from list constructor.
2689
2690* simplesearch.tcl: Fix to lowercase and stem query terms.
2691
2692* simpleindex.tcl: Tweak regex to not tokenise "foo--bar" as "foo-" and "bar".
2693
2694* simpleindex.tcl,simplesearch.tcl: Need explicit "xapian::" on constants.
2695
2696Xapian-bindings 0.9.2 (2005-07-15):
2697
2698General:
2699
2700* Added wrappers for new optional flags argument to QueryParser::parse_query().
2701
2702CSharp:
2703
2704* Enhance configure to check that "mcs" is actually GNU Mono mcs and not
2705  another tool with the same name.
2706
2707Java:
2708
2709* Include SmokeTest.java in the distribution so "make check" works.
2710
2711* Added success report for Sun java 1.4.1_01a.
2712
2713Python:
2714
2715* When converting a python list to vector<string> we know the number of elements
2716  so reserve that number in the vector.
2717
2718Xapian-bindings 0.9.1 (2005-06-06):
2719
2720General:
2721
2722* Releases are now created using libtool 1.5.18 and automake 1.9.5.
2723
2724Tcl:
2725
2726* Updated documentation to include information from Michael Schlenker about how
2727  to delete a database object such that the destructor gets called.
2728
2729Xapian-bindings 0.9.0 (2005-05-13):
2730
2731General:
2732
2733* Updated SWIG-based bindings to latest Xapian API
2734
2735* Improve support for building the bindings on MS Windows:
2736
2737  + Provide stub versions of any backend functions which are disabled in the
2738    library we're wrapping to avoid a link failure on MS Windows (where the
2739    remote backend is automatically disabled).  These stubs just throw
2740    Xapian::FeatureUnavailableError.
2741
2742  + Add -no-undefined to *_la_LDFLAGS.
2743
2744  + Use $(PATH_SEPARATOR) or Python's os.pathsep instead of ':' where
2745    appropriate.
2746
2747  + For python, paths for finding headers and installing libraries are now
2748    handled so they work on MS Windows; an extra static library needs to be
2749    linked in too.
2750
2751* Wrap the Muscat36 Database factory functions (easy to do now we have stubs
2752  for disabled backends).
2753
2754* Don't wrap MSet::max_size() as it's there for STL compatibility rather than
2755  being useful functionality.
2756
2757* configure: Fix all SWIG warnings and pass -Werror to SWIG so any which get
2758  introduced in future get fixed.
2759
2760* configure: Fix version test to allow for _svn6789 suffix which SVN snapshots
2761  have.
2762
2763* Generate SWIG bindings with SWIG 1.3.24 (except for PHP which we still use
2764  1.3.22 for as more recent versions don't work with methods with optional
2765  arguments - the arguments become non-optional!)
2766
2767Guile:
2768
2769* configure: Disable guile by default, as it needs more work.
2770
2771Java:
2772
2773* Updated to compile against 0.9.0 API.
2774
2775* Added missing make rule to build SmokeTestWrap.class to "make check" works.
2776
2777* Wrap optional parameters to Query(term) constructor.
2778
2779PHP4:
2780
2781* For PHP4, rename default Database constructor to Database_empty
2782  instead of suppressing the much more useful Database(const string &path)
2783  constructor.
2784
2785* Use a blank config file when running PHP4 tests to avoid problems
2786  when the bindings are already installed as an extension which is
2787  loaded automatically in the default config.
2788
2789* configure.ac: If configure can't find the PHP interpreter (as php4 or php),
2790  it probably just means it's not in PATH.  We only need it for running tests,
2791  so substitute a trivial shell script which just exits with code 77 so PHP
2792  tests are skipped (previously we substituted "missing" which caused the tests
2793  to fail).
2794
2795Python:
2796
2797* Added Python-style iterators ESetIter, TermIter, PostingIter, PositionIter,
2798  and ValueIter.
2799
2800* configure: If python is found, also check that Python.h exists (it may not be
2801  if the python-dev package (or similar) isn't installed).
2802
2803Xapian-bindings 0.8.5.1 (2005-02-23):
2804
2805General:
2806
2807* configure: Run compiler feature tests using the C++ compiler, not the C
2808  compiler.
2809
2810* Allow bindings version to have an extra "patchlevel", yet still match with
2811  corresponding xapian-core version (e.g. 0.8.5.1 and 0.8.5);
2812
2813Java:
2814
2815* Added a missing .java source file and removed several unused ones.
2816
2817* Fixed several glitches in the java bindings automake build system.
2818
2819* Use "-Wno-unused" when compiling JNI C++ code to ignore harmless
2820  warnings in generated code (we were carefully passing "-Wunused"
2821  which is the opposite of what is needed!)
2822
2823* Fixed a couple of warnings from GCJ.
2824
2825* Wrapped a few missing methods added since Eric created the bindings.  There
2826  are still some missing methods - there's now a (probably incomplete) list in
2827  java/README.
2828
2829* Added various useful bits of information to java/README.
2830
2831* Tweaked SimpleSearch.java to be more like the C++ version.
2832
2833PHP4:
2834
2835* 0.8.5 was generated with SWIG 1.3.24, but PHP support is broken there so
2836  we now generate the PHP bindings with SWIG 1.3.22 and everything else with
2837  a more recent version.
2838
2839* configure: Check for "php" as a program name as well as "php4", and
2840  fall-back to missing so the error message from "make check" is better.
2841
2842Xapian-bindings 0.8.5 (2004-12-23):
2843
2844General:
2845
2846* INSTALL: Added non-generic installation instructions.
2847
2848Python:
2849
2850* Fixed bytecode compilation of xapian.py.  xapian.pyc was being generated in
2851  the same directory as xapian.py, but Makefile.am was looking in current
2852  directory when installing it.  Additionally, VPATH builds were broken.
2853  These problems were introduced by changes in 0.8.4.
2854
2855Xapian-bindings 0.8.4 (2004-12-08):
2856
2857General:
2858
2859* README: Now clearly says which languages we currently support, which people
2860  are working on, etc.
2861
2862* Instead of requiring the user to have a really recent SWIG installed, ship
2863  the files SWIG generates.  Disable all the SWIG rules unless configure is run
2864  with --enable-maintainer-mode to make sure they aren't triggered accidentally
2865  (e.g. by make with dodgy VPATH).
2866
2867* configure: Require SWIG 1.3.22 or higher (but note that SWIG is no longer
2868  needed if you just want to install the bindings).
2869
2870* Wrap the new Database and WritableDatabase constructors which replace
2871  Auto::open().
2872
2873* It turns out that we do need to wrap MSet::MSet() (wrapping removed in 0.8.2)
2874  (for example, simpleexpand.py needs it).
2875
2876* In the Query constructor which takes a vector of terms, only call set_window
2877  if window is non-zero.  Otherwise things go wrong if we're passed an empty
2878  vector.
2879
2880* Second argument to Document::add_posting() isn't optional, but xapian.i
2881  indicated that it was.
2882
2883* xapian.i: Added wrappers for Xapian::Weight and standard subclasses.
2884  Deriving your own weight class in the scripting language isn't currently
2885  supported.
2886
2887* xapian.i: %name is deprecated, so use %rename instead.  This also works
2888  around a bug in SWIG 1.3.23.
2889
2890* configure: Removed pointless probe for a C compiler - everything we compile
2891  is C++.
2892
2893* configure: Reinstated the check that the bindings version matches the version
2894  of the xapian library.  It was added in 0.8.2, but accidentally removed in
2895  0.8.3.
2896
2897* Use newly added option `xapian-config --swigflags` which (a) avoids always
2898  passing -I/usr/include which could cause problems if we're using a Xapian
2899  install not in /usr and there's another one in /usr and (b) avoids problems
2900  if `xapian-config --cxxflags` contains flags other than -I<something>.
2901
2902CSharp:
2903
2904* Richard Boulton has put together bindings for C#.  These build successfully
2905  with the Mono tools, but the smoketest currently fails.  Unclear if the
2906  problem is the bindings or the smoketest code.
2907
2908Guile:
2909
2910* The guile bindings now build successfully, so we've enabled the guile
2911  detection machinery in configure.  They're untested though (we don't
2912  know guile!) so success or failure reports are encouraged!
2913
2914PHP4:
2915
2916* Mention the example scripts near the start of the documentation, not right at
2917  the end.
2918
2919* Remove documentation explicitly saying how we wrap Xapian::QueryParser and
2920  Xapian::Stem since we wrap them exactly as we wrap everything else we don't
2921  mention!
2922
2923Python:
2924
2925* Make overloaded Query(Query::op, vector<string>*, termpos) constructor
2926  work in Python.
2927
2928* Changed examples to use the newly wrapped Query from list of terms ctor.
2929
2930* Mention the example scripts near the start of the documentation, not right at
2931  the end.
2932
2933* python/Makefile.am: Added xapian_wrap.h as a target for the rule which runs
2934  SWIG.
2935
2936* Remove documentation explicitly saying how we wrap Xapian::QueryParser and
2937  Xapian::Stem since we wrap them exactly as we wrap everything else we don't
2938  mention!
2939
2940* Mention simpleexpand example in documentation.
2941
2942* Examples now report messages for Xapian exceptions.
2943
2944* Removed MAX_PROB_TERM_LENGTH from example scripts which don't use it.
2945
2946* Make the example MatchDecider exclude documents matching a value, rather than
2947  a term.  The latter is a very inefficient way to do what AND_NOT does, and we
2948  don't want examples to mislead like that.
2949
2950* python/docs/bindings.html: Note that you can construct a query
2951  from a list of terms, even if you can't from a list of queries.
2952  Add HTML links to the examples.
2953
2954* simpleindex.py: Trim spaces from the start as well as from the end of each
2955  line.  Simplify the loop slightly.
2956
2957Tcl:
2958
2959* Wrap in a tcl8 namespace "Xapian".
2960
2961* Added a smoketest.
2962
2963* Translated simpleindex and simplesearch into Tcl.
2964
2965* Set the Tcl package version.
2966
2967* Create pkgIndex.tcl so the package can be loaded in the usual Tcl way.
2968
2969* Install in "xapian<VERSION>" directory in the conventional Tcl way.
2970
2971* Added documentation for tcl8 bindings.
2972
2973* Use the TCL_STUBS mechanism so that compiled extensions are portable between
2974  different versions of Tcl.  This needs Tcl 8.1, so bump the required Tcl
2975  version (was 8.0).
2976
2977* configure.ac: Noted that the bindings can easily be compiled for use with
2978  Tcl 8.0, in case anybody needs that for some reason.
2979
2980* Don't wrap the factory functions which return a quartz WritableDatabase as
2981  the destructor never gets called so changes aren't flushed and the lock file
2982  isn't removed.
2983
2984Xapian-bindings 0.8.3 (2004-09-20):
2985
2986General:
2987
2988* Fixed mismatching versions of libtool used to produce configure and
2989  ltmain.sh.  The obvious symptom was ".so" missing from the shared object
2990  names.
2991
2992* RPM spec file contributed by Fabrice Colin.  Currently this packages Python,
2993  PHP4, and Tcl bindings.
2994
2995Java:
2996
2997* Pass -classpath to javac to fix build problems.
2998
2999* Make sure errors subdirectory is built before we try to build the jar file.
3000
3001* Fixed "make install" to not give libtool error.
3002
3003PHP4:
3004
3005* Include PHP4 documentation and exmples in the tarball.
3006
3007* Reverted "Use special SWIG PHP ldflags when linking the PHP glue library."
3008  change from 0.8.2 - it turns out we only need to pass these flags if we use
3009  swig's -noruntime option (which we don't do).
3010
3011Python:
3012
3013* Use swig's -modern switch for Python 2.2 and up - it gives cleaner, leaner,
3014  faster Python wrapper code.
3015
3016Tcl:
3017
3018* Don't install xapian.la.
3019
3020* Improved configure check for tcl.h to work with Fedora Core 2.
3021
3022Xapian-bindings 0.8.2 (2004-09-13):
3023
3024General:
3025
3026* Added wrappers for recently added methods: ESet::back() and
3027  Database::get_lastdocid(), and wrap the new optional third parameter
3028  to Enquire::set_sorting().
3029
3030* No longer wrap MSet::MSet() - it's not of use in scripting languages.
3031
3032* Wrap operator-- as prev() for MSetIterator and ESetIterator.
3033
3034* Wrap Quartz, InMemory, and Remote database factory functions as
3035  quartz_open(), inmemory_open(), and remote_open().
3036
3037* Added missing wrappers for static Stem::get_available_languages() and
3038  Stem::get_description().
3039
3040* Wrap renamed method Query::empty() (was Query::is_empty()).
3041
3042* Remove renaming of other empty() methods to is_empty() (but keep is_empty()
3043  as an alias for now).
3044
3045* Require autoconf 2.59 and automake 1.8.5.
3046
3047* configure: Added check that the bindings version matches the version of
3048  the xapian library.
3049
3050* configure: Check if we're using GCC and only pass GCC specific warning
3051  control options if we are.
3052
3053* configure: When running with GCC, also pass -Wno-uninitialized so the
3054  SWIG glue builds without warnings.
3055
3056* README: Updated list of languages which SWIG supports.
3057
3058PHP4:
3059
3060* Document that the 2 argument form of Xapian::Auto::open() for opening a
3061  writable database is wrapped as open_writable() (bug #32).
3062
3063* Include Xapian version in output from phpinfo().
3064
3065* Build the SWIG glue library like we build the others rather than using
3066  SWIG's -phpfull option.  This avoids problems with newer automake versions
3067  and means we can build against an uninstalled xapian library.
3068
3069* Corrected documentation to refer to Xapian::DB_* not Xapian::Auto::DB_*.
3070  Fixed documentation of how Xapian::Query::OP_* are wrapped.
3071
3072* Use special SWIG PHP ldflags when linking the PHP glue library.
3073
3074* simplesearch.py now works with multi-term queries.
3075
3076* Added documentation on how to install the PHP4 bindings.
3077
3078* Added a simple testcase to at least ensure the PHP4 bindings can be
3079  initialised and some simple operations work.
3080
3081Python:
3082
3083* configure: Now checks for Python >= 2.1 which we need for __cmp__ and __eq__.
3084
3085* Don't install _xapian.la and _xapian.a.
3086
3087* Byte compile xapian.py to xapian.pyc and install it.
3088
3089* Suppress SWIG warning about MatchDecider::operator() director discarding
3090  const.
3091
3092* "make clean" no longer leaves "xapian_wrap.h" behind.
3093
3094* Added a simple testcase to at least ensure the python bindings can be
3095  initialised and some simple operations work.
3096
3097Tcl8:
3098
3099* configure: Disable building tcl8 bindings if the headers are missing
3100  (probably because the tcl8.X-dev package isn't installed).
3101
3102Xapian-bindings 0.8.1 (2004-06-30):
3103
3104General:
3105
3106* configure: Require SWIG 1.3.20 or higher (previously was 1.3.14).
3107
3108* Add "-I/usr/include" to the swig line.  This is needed when xapian is
3109  installed with a prefix of /usr, since "xapian-config --cxxflags" carefully
3110  doesn't emit -I/usr/include in this situation (because it causes problems
3111  with some GCC versions).
3112
3113* Fixed the %exception handler to cover all the exceptions Xapian can throw,
3114  not just a subset.
3115
3116Java:
3117
3118* Removed wrappers for unused error classes which have been pruned from C++.
3119
3120* Make finalize() methods of Database and WritableDatabase public so they can
3121  be called from by the user.
3122
3123* Document Document.add_term_nopos() as deprecated.
3124
3125PHP4:
3126
3127* Make sure that PHP bindings build a module which exports get_module() so PHP
3128  is able to load it.
3129
3130* Configure now checks that phpize can actually be run, rather than just that
3131  it's executable (test -x isn't portable anyhow).
3132
3133* Added basic documentation and examples to PHP4 bindings.
3134
3135* Rename overloaded methods and constructors.
3136
3137* Add simple access to the prefixes map in QueryParser.
3138
3139* Correct simpleindex ports to never generate empty termnames.
3140
3141Python:
3142
3143* configure: Use $PYTHON instead of python when running python to determine
3144  library and include paths and version number.
3145
3146* Actually ship python examples and documentation.
3147
3148Xapian-bindings 0.8.0 (2004-04-20):
3149
3150* README: Started collecting information on supporting Xapian from even
3151  more languages.
3152
3153* Added configure tests to enable bindings only where the necessary tools
3154  are installed and have a supported version.  ./configure --without-LANGUAGE
3155  allows particular languages to be forcibly disabled.
3156
3157* Added Xapian::Document::add_term() - the new name for add_term_nopos().
3158
3159* A couple of Xapian::Query constructors weren't being wrapped - fixed.
3160
3161* Added Eric B. Ridge's JNI bindings for Java.  The JNI bindings themselves
3162  have been well tested, but integration with the xapian-bindings configure
3163  system hasn't been tested at all - please alert us to any problems.
3164
3165* Xapian can now be used from TCL.
3166
3167* Python: MSet now provides a Python iterator.
3168
3169* Python: OMMSET_* and OMESET_* renamed to MSET_* and ESET_*.
3170
3171* Python: enable directors for MatchDecider, to allow subclassing in Python.
3172
3173* Python: Added basic documentation, and some examples.
3174