1Xapian-bindings 1.4.18 (2021-01-14):
2
3Portability:
4
5* Support macOS 11.0 - AC_CANONICAL_HOST identifies this as darwin20, which
6  wasn't caught by our glob pattern.  Patch from FX Coudert in
7  https://github.com/xapian/xapian/pull/319
8
9CSharp:
10
11* Wrap const std::string* parameters to accept a string or null in C#.  See #204.
12
13Java:
14
15* Wrap const std::string* parameters to accept a String or null in Java.
16
17Perl:
18
19* Fix minor documentation typo.
20
21Xapian-bindings 1.4.17 (2020-08-21):
22
23* No user-visible change except for bumping the version to indicate
24  compatibility with Xapian-core 1.4.17.
25
26Xapian-bindings 1.4.16 (2020-06-08):
27
28General:
29
30* Remove code to support SVN snapshots since we stopped using SVN more than 5
31  years ago.
32
33* Ignore overloads for logical ops, *, /.  These were already ignored for
34  several languages, and aren't actually usefully wrapped for any of the other
35  languages.
36
37CSharp:
38
39* Work around mono terminfo parsing bug in more cases.  With this, "make",
40  "make check", "make install" and "make uninstall" all work on Ubuntu 18.10.
41  Patch from Dipanshu Garg, fixes https://github.com/xapian/xapian/pull/287 and
42  #801.
43
44Lua:
45
46* Allow passing a Lua function as a MatchSpy.  This was supposed to be
47  supported already, but the typemaps weren't set up.
48
49* On platforms where sizeof(long) is 4, SWIG was wrapping Xapian::BAD_VALUENO
50  as a negative constant in Lua, which was then rejected by a check which
51  disallows passing negative values for unsigned C++ types.  We now direct SWIG
52  to handle Xapian::valueno as double (which is what numbers in Lua usually
53  actually are) which gives us an unsigned constant, and also eliminates the
54  negative value check.
55
56* Correct documentation - get_description() is wrapped as tostring() in Lua,
57  not str() as we previously claimed.
58
59* Add test coverage for passing Lua function for a Stopper.
60
61Perl:
62
63* Resolve the remaining issues and remove the "experimental" marker:
64
65  + Add search_xapian_compat() function which sets up aliases in the
66    Search::Xapian namespace to aid writing code which uses either
67    Search::Xapian or this module.
68
69  + Allow passing Perl sub for simpler Xapian functor classes.  This fills in a
70    missing feature compared to Search::Xapian.  See #523.
71
72  + Remove useless PerlStopper class which was an incomplete copy of the
73    apparently non-functional Search::Xapian::PerlStopper.  We now support
74    passing a Perl sub for a Stopper object.
75
76  + Adjust some method names to match Search::Xapian.  Iterators now support
77    inc() (and dec() where the C++ class supports operator--) like
78    Search::Xapian, rather than increment() and prev().  Reported by Eric Wong
79    in #523.
80
81  + Drop undocumented and unexpected extra equals() method.
82
83  + Provide compatibility with ENQ_ASCENDING, etc constants.  SWIG wraps these
84    as $Xapian::Enquire::ASCENDING, which better matches the C++ API, but
85    Search::Xapian wraps this as Search::Xapian::ENQ_ASCENDING, etc so provide
86    those too for compatibility.  Reported by Eric Wong in #523.
87
88  + Drop stringification and int conversion overloads.  These seem more
89    confusing than helpful, and overloading stringification works badly
90    with SWIG-generated bindings.
91
92  + Document remaining known differences from Search::Xapian.
93
94* Update recently tested versions in README.
95
96* Improve documentation.
97
98* Fix t/02pod.t to look for files in right directory.
99
100Ruby:
101
102* Don't print iterator sizes to stdout.  This was some debugging accidentally
103  left in as part of a change in 1.4.12.  Patch from Dan Callaghan.
104
105Xapian-bindings 1.4.15 (2020-02-24):
106
107Perl:
108
109* Improve comment about App::Prove.
110
111Ruby:
112
113* Support Ruby 2.7.
114
115Xapian-bindings 1.4.14 (2019-11-23):
116
117Python:
118
119* Remove broken replicationtest.py.  It's never worked reliably, and because
120  of that was disabled shortly after being added over a decade ago.
121  Unsurprisingly it's bit-rotted at least a bit since.  Nobody seems interested
122  in fixing it, so it's time to just get rid of it.  Closes #320.
123
124Python3:
125
126* Remove broken replicationtest.py.  It's never worked reliably, and because
127  of that was disabled shortly after being added over a decade ago.
128  Unsurprisingly it's bit-rotted at least a bit since.  Nobody seems interested
129  in fixing it, so it's time to just get rid of it.  Closes #320.
130
131Xapian-bindings 1.4.13 (2019-10-14):
132
133General:
134
135* Omit SWIG exception handling for destructors.  Since C++11, destructors can't
136  throw by default and we don't override that default, so there's no point
137  adding exception handling code for them.
138
139* Ensure doccomments.i is distributed.  If you unpacked a distribution tarball,
140  configured it and then ran "make dist" python/doccomments.i and
141  python3/doccomments.i would be missing unless you configured the tree with
142  --enable-maintainer-mode.
143
144PHP:
145
146* Check for php-config5.6 and php-config5.5 in configure as these versioned
147  names are used in some packages (such as those from the ondrej/php PPA).
148
149PHP7:
150
151* Work around build failure on Illuminos.  Fixes
152  https://trac.xapian.org/ticket/793, reported by Amitai Schleier.
153
154Ruby:
155
156* smoketest.rb: Use #push not #append on Array to restore compatibility with
157  Ruby < 2.5 (broken by changes in 1.4.12).
158
159* Expand tabs in Ruby code since using spaces for indentation seems to be
160  preferred Ruby style.
161
162* Remove trailing `;` from Ruby code.
163
164Xapian-bindings 1.4.12 (2019-07-23):
165
166Documentation:
167
168* Update bindings HACKING document.  Reported as out of date by Niwesh Gupta.
169
170CSharp:
171
172* Work around mono terminfo parsing bug - older cli-sn fails with e.g.
173  TERM=xterm-256color due to: https://github.com/mono/mono/issues/6752
174  Encountered on Kubuntu 18.10 and debugged by Tejasvi Tomar.  Seems to be
175  fixed in the mono version in Debian buster.
176
177Perl:
178
179* Suppress warnings from older Perl headers due to use of constructs which look
180  like C++11 user-defined literals.  They're fixed in newer versions so they're
181  just noise in our build.  We were working around these in the CI build, so
182  drop that workaround as we want to make the build warning-clean for users
183  too.  Reported by daniel93 on #xapian.
184
185Python3:
186
187* Fix build for changes in Sphinx 2.0 (which drops support for sphinx.main()).
188  Fixes #778, reported by karolyi.  Also reported by Gaurav Arora.
189
190* We now throw UnicodeEncodeError for bad Unicode string input.  Previously
191  cases such as a lone surrogate would be handled by quietly skipping the bad
192  codepoints when converting to UTF-8 to pass to Xapian.
193
194* We no longer use the deprecated old-style Py_UNICODE API, which currently
195  gives deprecation warnings and is slated to be removed in Python 4.0.
196
197Ruby:
198
199* Add support for block iteration.  All the iterator methods in the Ruby API
200  now accept an optional block.  If no block is given an array is returned so
201  existing code will still work.  Partly based on a patch in
202  https://github.com/xapian/xapian/pull/232 from Cong Ding.
203
204* Add missing wrappers for all the C++ methods returning iterators which
205  weren't wrapped for Ruby.  Fixes #777, reported by do.
206
207* Suppress warnings from Ruby 2.3 headers due to use of register and
208  constructs which look like C++11 user-defined literals.  They're fixed in
209  newer versions so they're just noise in our build.  We were working around
210  these in the CI build, so drop that workaround as we want to make the build
211  warning-clean for users too.  Reported by daniel93 on #xapian.
212
213* smoketest.rb: Don't leave temporary databases behind in /tmp.
214
215Xapian-bindings 1.4.11 (2019-03-02):
216
217CSharp:
218
219* Make MatchAll and MatchNothing readonly.
220
221Java:
222
223* Simplify load-time setup of Query.OP_OR, etc which are provided for
224  compatibility with the original hand-written JNI bindings.
225
226PHP:
227
228* We now load the module for "make check" using -d extension=xapian which
229  avoids needing to turn off safe_mode and turn on enable_dl, and matches how
230  the module is usually loaded in production use.
231
232PHP7:
233
234* Fix access to already released memory during PHP module shutdown, which often
235  didn't cause visible problems, but could result in segmentation faults, bus
236  errors, etc.
237
238* Fix generated code to compile when using a ZTS-enabled build of PHP.
239
240* We now load the module for "make check" using -d extension=xapian which
241  avoids needing to turn off safe_mode and turn on enable_dl, and matches how
242  the module is usually loaded in production use.
243
244Xapian-bindings 1.4.10 (2019-02-12):
245
246Documentation:
247
248* Use https for URLs where supported.
249
250General:
251
252* Wrap new DatabaseClosedError and DatabaseNotFoundError exceptions.
253  See #772 and #773.  Patches from Vaibhav Kansagara.
254
255* Update expected query descriptions in tests for the xapian-core
256  change to produce flatter Query trees.
257
258* Workaround Perl 5.28 -i quirk when postprocessing SWIG-generated code.
259  The commands in question are only run when maintainer-mode is enabled.
260
261CSharp:
262
263* C++ constant Xapian::BAD_VALUENO is now wrapped without using a getter.
264  This shouldn't affect existing user code.
265
266Java:
267
268* C++ constant Xapian::BAD_VALUENO is now wrapped as Java constant
269  Xapian.BAD_VALUENO.  The previous Java wrapping as function
270  Xapian.getBAD_VALUENO() is still supported for compatibility with
271  existing code.
272
273* Remove redundant std::string initialisation.
274
275Lua:
276
277* C++ constant Xapian::BAD_VALUENO is now wrapped as a constant rather than
278  an immutable attribute.  This shouldn't affect existing user code.
279
280Perl:
281
282* C++ constant Xapian::BAD_VALUENO is now wrapped as Perl constant
283  Xapian::BAD_VALUENO.  The previous Perl wrapping as variable
284  $Xapian::BAD_VALUENO is still supported for compatibility with existing
285  code.
286
287* Note in the POD documentation that the Error base classes which are abstract
288  in C++ don't have a new method in Perl.
289
290PHP:
291
292* C++ constant Xapian::BAD_VALUENO is now wrapped as PHP constant
293  Xapian::BAD_VALUENO.  The previous PHP wrapping as function
294  Xapian::BAD_VALUENO_get() is still supported for compatibility with existing
295  code.
296
297* Remove code to work around a SWIG bug which was fixed in 2006.
298
299PHP7:
300
301* C++ constant Xapian::BAD_VALUENO is now wrapped as PHP constant
302  Xapian::BAD_VALUENO.  The previous PHP wrapping as function
303  Xapian::BAD_VALUENO_get() is still supported for compatibility with existing
304  code.
305
306* configure: Check for php-config7.3 and php-config7.2 as well as
307  php-config7.1, php-config7.0 and php-config.
308
309* Correct references to PHP5 in PHP7 script comments.
310
311* Remove some C code which is no longer needed with PHP7.
312
313Ruby:
314
315* C++ constant Xapian::BAD_VALUENO is now wrapped as Ruby constant
316  Xapian::BAD_VALUENO.  The previous Ruby wrapping as function
317  Xapian::BAD_VALUENO() is still supported for compatibility with existing
318  code.
319
320* We now recommend using String#encode instead of the Iconv class, since the
321  latter is no longer included with Ruby.
322
323Tcl:
324
325* C++ constant Xapian::BAD_VALUENO is now wrapped as a constant rather than
326  variable which can't be written to.  This shouldn't affect existing user
327  code.
328
329Xapian-bindings 1.4.9 (2018-11-02):
330
331PHP7:
332
333* Fix to build with upcoming PHP 7.3 release, which changes array_init()
334  to not return a value instead of always returning the constant SUCCESS.
335  We were checking this return value but no longer do.
336
337Xapian-bindings 1.4.8 (2018-10-25):
338
339Perl:
340
341* Wrap new STEM_SOME_FULL_POS constant.
342
343* Add STEM_ALL_Z to qpstem export tag and POD docs.
344
345* Fix Perl bindings documentation typos.
346
347Python:
348
349* Fix RST formatting warning during build.
350
351Python3:
352
353* Fix RST formatting warning during build.
354
355Xapian-bindings 1.4.7 (2018-07-19):
356
357Ruby:
358
359* Fix -Wconversion-null warnings with newer GCC.
360
361Xapian-bindings 1.4.6 (2018-07-02):
362
363Documentation:
364
365* Stop using "probabilistic" to mean "weighted" - we've supported other
366  families of weighting schemes since 1.3.2.
367
368Packaging:
369
370* Use https for tarball URLs in .spec files.  This provides protection against
371  MITM attacks on people building packages using these spec files, and is also
372  slightly more efficient as the http: URLs redirect to the https: versions
373  anyway.
374
375CSharp:
376
377* Use SWIG_exception() to handle exceptions.  It seems this didn't used to work
378  with older SWIG, but it does with current versions, and using it means that
379  we skip any return value translation logic when an exception has been thrown.
380
381Java:
382
383* Use SWIG_exception() to handle exceptions.  It seems this didn't used to work
384  with older SWIG, but it does with current versions, and using it means that
385  we skip any return value translation logic when an exception has been thrown.
386
387* Fix leaks in binary std::string typemaps.  These are used for document values
388  and serialised data.
389
390* Improve VPATH build.  Previously we looked for class files and java sources
391  in srcdir first, then in builddir.  That's backwards from how autotools
392  VPATH builds search for targets and prerequisites so reverse this order to
393  make handling of Java files more consistent.
394
395Perl:
396
397* Invoke prove via the App::Prove module.  This avoids potentially using
398  prove from a different Perl installation to perl (previously the user
399  needed to manually specify the corresponding PROVE= if they specify PERL= to
400  configure).  In particular this is useful on macOS when using Perl from
401  homebrew.
402
403* Improve Perl Enquire::set_docid_order documentation by syncing improvements
404  from the C++ API docs.
405
406Python:
407
408* Support sphinx >= 1.7 while still working with < 1.7.  Patch from
409  James Aylett.
410
411* Suppress clang -Wdeprecated-register warnings about uses register in C code
412  in Python.h.  We can't do anything about these other than suppress them.
413
414Python3:
415
416* Support sphinx >= 1.7 while still working with < 1.7.  Patch from
417  James Aylett.
418
419* Suppress clang -Wdeprecated-register warnings about uses register in C code
420  in Python.h.  We can't do anything about these other than suppress them
421  (and they appear to have been removed in Python 3.4 and later).
422
423* Remove unused MSet::__cmp__ extend method.  This was used in Python 2, but
424  Python 3 does things differently.  There doesn't seem a good reason to
425  provide comparison operations for MSet objects, and we don't for other
426  classes, so let's just drop this feature - it seems nobody has noticed it has
427  gone.
428
429* Simplify generated wrapper post-processing.
430
431Xapian-bindings 1.4.5 (2017-10-16):
432
433Documentation:
434
435* HACKING: Add details of Debian PHP7 packages to install for development.
436
437General:
438
439* Use a pattern match to ignore methods meant for internal use only rather
440  than having to list them all - they're consistently named to end with an
441  underscore.
442
443* Stop using deprecated Xapian::percent typedef in bindings-specific code.
444  Deprecation warnings are suppressed when building the bindings (because the
445  bindings usually still need to wrap deprecated C++ features) so this probably
446  has no user-visible consequences.
447
448Java:
449
450* Fix JNI code to be compatible with Java 6 and earlier, where the final
451  parameter of SetByteArrayRegion() was not const.  This also seems to affect
452  GCJ (though GCJ was removed in GCC 7).  The incompatibility was introduced in
453  1.4.4.
454
455Lua:
456
457* Support subclassing of RangeProcessor in Lua.
458
459Perl:
460
461* Add CLONE_SKIP to RangeProcessor and subclases to avoid double deletion
462  if the Perl threads module is in use.
463
464* Keep references for set RangeProcessor objects, like how we do for
465  ValueRangeProcessor and various other functor objects.
466
467* Use RangeProcessor instead of ValueRangeProcessor in perl examples, as
468  ValueRangeProcessor is now deprecated.
469
470PHP:
471
472* Keep references for set RangeProcessor objects, like how we do for
473  ValueRangeProcessor and various other functor objects.
474
475* Add type hints to QueryParser::add_rangeprocessor().
476
477PHP7:
478
479* Keep references for set RangeProcessor objects, like how we do for
480  ValueRangeProcessor and various other functor objects.
481
482* Add type hints to QueryParser::add_rangeprocessor().
483
484* Fix PHP7 "make check" to use right path separator.  It was using the PHP5
485  one, which in general is going to be the same but we won't have probed for
486  that unless we're also building the PHP5 bindings, which means "make check"
487  failed for PHP7 unless you also had the PHP5 bindings enabled.
488
489Python3:
490
491* Fix "make check" under Python 3.2, which was broken in 1.4.4 because Python
492  3.2 doesn't support the u'foo' syntax.
493
494* Copy over Python2 check which aims to catch any internal functions, methods,
495  constants, etc which have accidentally been wrapped.
496
497Ruby:
498
499* Fix dependency generation for Ruby SWIG command (only relevant at all if
500  you configure with --enable-maintainer-mode).
501
502Xapian-bindings 1.4.4 (2017-04-19):
503
504General:
505
506* Update tests for xapian-core changes to avoid unnecessary "0 *" in query
507  descriptions in certain cases.
508
509Packaging:
510
511* Ship java.i in tarball.
512
513Java:
514
515* Handle object serialisations and document values as Java byte[].  These will
516  usually contain binary data, so Java String doesn't work well and byte[] is a
517  much better fit.
518
519* Correct various errors in java examples and documentation on how to run them.
520
521* Fix java examples not to abuse doc values as fields - use the document data
522  instead.
523
524* "make clean" now removes additional class files.
525
526PHP7:
527
528* Update version of SWIG required to >= 3.0.12 so that the code generated
529  for PHP7 no longer results in a segmentation fault on module unload with
530  PHP 7.1.  Fixes #748, reported by Victor Sakovich.
531
532Python:
533
534* Fix QueryParser methods add_boolean_prefix() and add_prefix() to accept a
535  string for the `grouping` parameter.  Reported by Jameson Graef Rollins in
536  https://bugs.debian.org/849722
537
538* Fix configure --with-python to fail if sphinx isn't found.  Patch from
539  Patricio Paez.  Fixes #749.
540
541Python3:
542
543* Fix QueryParser methods add_boolean_prefix() and add_prefix() to accept a
544  string for the `grouping` parameter.  Reported by Jameson Graef Rollins in
545  https://bugs.debian.org/849722
546
547Xapian-bindings 1.4.3 (2017-01-25):
548
549Python:
550
551* Remove compatibility code for Python < 2.5 - 1.4.x requires Python >= 2.6.
552
553* Avoid unnecessary pointer indirection in XapianSWIG_anystring() helper
554  function, which should be a little more efficient and makes the Python 2
555  code more closely match the Python 3 code.
556
557Ruby:
558
559* "make clean" should only remove docs/xapian.rb if configure option
560  --enable-documentation was used to enable all rules to rebuild documentation.
561  Reported by Samuel Williams on xapian-discuss.
562
563* Fix make rule for running rdoc for the cases where srcdir != builddir.
564
565* Use 'test a = b' rather than 'test a == b' - the former is portable, the
566  latter a bashism.  In many cases the autotools will set SHELL = /bin/bash in
567  the makefiles, but if it doesn't and /bin/sh isn't bash, then this will
568  cause "make install" and "make uninstall" to fail for the Ruby bindings.
569
570Xapian-bindings 1.4.2 (2016-12-26):
571
572General:
573
574* configure: Fail with clear error with xapian-core < 1.4.0.
575
576* Work around OS X "System Integrity Protection".  We can't address the problem
577  of being unable to run tests against an uninstalled tree when the interpreter
578  is in a system directory (you have to "make install" in xapian-core for that
579  case), but we can at least make this work for interpreters which aren't in
580  system directories.
581
582Java:
583
584* Disable parallel make for java subdirectory as it causes random build
585  failures.  Reported by Lucas Nussbaum in https://bugs.debian.org/848733
586
587* Disable automatic use of -Xcheck:jni for now as it seems to report false
588  positives with OpenJDK 8 and 9.
589
590PHP:
591
592* Generates smaller PHP wrappers by only emitting each unique arginfo
593  combination once (~6% saving in stripped extension module size for
594  PHP7 on x86_64 Linux).
595
596* Fix to work again with a version of PHP5 built with ZTS enabled (which is the
597  default on Microsoft Windows).
598
599* Add support for PHP7.
600
601* Drop workaround for PHP4 from test code.
602
603Python:
604
605* Handle sphinx-build being a shell script wrapper by invoking sphinx.main()
606  from a command line Python code snippet.  Reported by Alex Dunn in
607  https://github.com/xapian/xapian/pull/126 and solved with help from James
608  Aylett.
609
610* Hold python reference to set RangeProcessor objects - until #714 is fixed we
611  need to keep such a reference (as we already do for ValueRangeProcessor and
612  several other classes).
613
614Python3:
615
616* Handle sphinx-build being a shell script wrapper by invoking sphinx.main()
617  from a command line Python code snippet.  Reported by Alex Dunn in
618  https://github.com/xapian/xapian/pull/126 and solved with help from James
619  Aylett.
620
621* Hold python reference to set RangeProcessor objects - until #714 is fixed we
622  need to keep such a reference (as we already do for ValueRangeProcessor and
623  several other classes).
624
625Ruby:
626
627* Use more conventional Ruby variable names in the examples (Ruby convention
628  uses underscores not camelcase) and fix comma/space transposition in a couple
629  of places.
630
631Xapian-bindings 1.4.1 (2016-10-21):
632
633Documentation:
634
635* Fix --disable-documentation - in maintainer-mode, we still tried to make
636  docs/index.html for most of the bindings, which failed because the rule to do
637  so was disabled.
638
639General:
640
641* Update for additions to C++ API.
642
643* When a backend is disabled in the xapian-core we're building against, we
644  have a stub version of any factory functions so the bindings still have
645  something to wrap.  Update these for 1.4:
646  + Disable stub for InMemory::open() when
647    XAPIAN_BINDINGS_SKIP_DEPRECATED_DB_FACTORIES is defined (Perl, Python3).
648  + Add new optional flags parameter to both overloaded forms of
649    Remote::open_writable().
650
651Portability:
652
653* Drop compiler options that are no longer useful:
654  + -fshow-column is the default in all GCC versions we now support
655    (checked as GCC 4.6).
656  + -Wno-long-long is no longer necessary now that we require C++11 where
657    "long long" is a standard type.
658
659Java:
660
661* Use a cleaner technique to insert the Java code to load JNI library into the
662  generated wrapper - we now use "%pragma(java) jniclasscode" instead of using
663  Perl to post-process the generated wrapper.  Suggested by James Aylett.
664
665* Run Java tests with -Xcheck:jni if supported, which should help catch any
666  any bugs in the JNI code.
667
668* Fix configure to find jni_md.h under Cygwin.  There doesn't seem to be an way
669  to automatically determine the machine-dependent JNI include path, so add
670  another case to use "win32" on Cygwin.  Reported by John Bankert on
671  xapian-discuss.
672
673* Add more special cases to find jni_md.h on Cygwin, OS X, *BSD, AIX.
674  There doesn't seem to be an explicit list of these directories anywhere, but
675  grepping the OpenJDK 8 source code finds additional values "darwin" and
676  "aix", *BSD seems to use "bsd", and Cygwin uses "win32" (reported by John
677  Bankert on xapian-discuss).
678
679* Generate xapian.jar rather than xapian_jni.jar - the fact that JNI is
680  involved is really just an implementation detail.
681
682* SmokeTest.java: Add simple test of subclassing FieldProcessor.
683
684Perl:
685
686* Merge Perl POD doc improvements from Search::Xapian.  The most notable
687  improvement is a number of methods previously lacking docs now have them.
688
689* Fix typo in POD docs for Perl bindings ("outputing" -> "outputting").
690  Reported by knowledgejunkie in #730.
691
692Python:
693
694* Fix repr() to not return None.  Reported by Stuart Prescott on IRC.
695
696* Fix Python2 bindings to work out of the box.  SWIG changed the code it
697  generates for importing the compiled module in a recent version, and
698  the newer code no longer works with the wrapper renamed to
699  xapian/__init__.py.  There's currently no way to configure SWIG to produce
700  what we need so for now we run a "fixup" script over the generated wrapper
701  which replaces the complex import code with a single statement which does
702  what we want.  It also strips out various unneeded code, mostly to do with
703  handling Python 3.x (which we don't need since we have an entirely
704  separate set of bindings for that).  Reported by James Aylett in #731.
705  The way we were importing the bindings to generate the .pyc and .pyo
706  files was masking this problem, so rework that as suggested by James.
707
708* Make sphinx docs dependent on SWIG wrapper.  Without this dependency,
709  parallel builds (make -j) may attempt to schedule the sphinx doc build before
710  the relevant wrapper has been compiled and moved into position.  This won't
711  result in a build failure, but will silently omit API docs that sphinx
712  would otherwise include.  Patch from James Aylett.
713
714* doxy2swig: Specify encoding when reading doxygen's XML output so UTF-8 in
715  doxygen comments is handled.  Patch from Vivek Pal.
716
717* Specify Python2 wrapper encoding is UTF-8.  This is needed when we pick up
718  doxygen comments from the C++ API which contain UTF-8.  For Python3, the
719  default source encoding is UTF-8, so we don't need the equivalent change
720  there.
721
722Python3:
723
724* Fix repr() to not return None.  Reported by Stuart Prescott on IRC.
725
726* Fix Python3 bindings to work out of the box.  SWIG changed the code it
727  generates for importing the compiled module in a recent version, and
728  the newer code no longer works with the wrapper renamed to
729  xapian/__init__.py.  There's currently no way to configure SWIG to produce
730  what we need so for now we run a "fixup" script over the generated wrapper
731  which replaces the complex import code with a single statement which does
732  what we want.  It also strips out various unneeded code, mostly to do with
733  handling Python 2.x (which we don't need since we have an entirely
734  separate set of bindings for that).  Reported by James Aylett in #731.
735  The way we were importing the bindings to generate the .pyc and .pyo
736  files was masking this problem, so rework that as suggested by James.
737
738* Make sphinx docs dependent on SWIG wrapper.  Without this dependency,
739  parallel builds (make -j) may attempt to schedule the sphinx doc build before
740  the relevant wrapper has been compiled and moved into position.  This won't
741  result in a build failure, but will silently omit API docs that sphinx
742  would otherwise include.  Patch from James Aylett.
743
744* Fix memory leak converting string from Python to C++.
745  XapianSWIG_anystring_as_ptr() was failing to flag the returned value as
746  allocated, so it wasn't being deleted.  Reported by Sean Robinson in #729.
747
748Xapian-bindings 1.4.0 (2016-06-24):
749
750Documentation:
751
752* Mark SWIG-generated Java and Perl bindings as "experimental" until we've
753  had a chance to sort out any remaining changes we want to make.
754
755Xapian-bindings 1.3.7 (2016-06-01):
756
757Documentation:
758
759* Remove long out-dated reference to tinderbox.
760
761General:
762
763* Use SWIG 3.0.9 to generate the bindings.  There's nothing very important to
764  us in the changes since the git snapshot we were using - mostly this means
765  we're using a released version, which seems preferable.
766
767Tcl:
768
769* Fix segfault in tcl bindings "make check".  The location of tclConfig.sh
770  wasn't being found, so libtclstub wasn't being linked to, which is required
771  with Tcl >= 8.6.
772
773Xapian-bindings 1.3.6 (2016-05-09):
774
775General:
776
777* Update for changes to the C++ API.
778
779* Use WritableDatabase::commit() instead of flush() in testcases, as the
780  latter is now formally deprecated.
781
782Java:
783
784* Fix syntax error in SmokeTest.java, introduced by the DB_BACKEND_INMEMORY
785  change.  Noted on #xapian-discuss by Aakash Muttineni.
786
787* Update Java TODO list.
788
789* SmokeTest.java: Port over version checks from SmokeTest.cs.
790
791* Update list of recently tested JDK versions.
792
793Lua:
794
795* Note Lua bindings work with Lua 5.3.
796
797Perl:
798
799* Explicitly specify POD docs encoding as utf8.  Fixes warning in generated
800  HTML docs.
801
802* Convert POD to HTML when building from a source tarball - the conversion
803  code comes as standard with Perl.  In 1.3.5 we were failing to ship the HTML
804  output, as reported by Anthony Basile.
805
806* For extra robustness, convert POD to HTML using the bundled Pod::Html module
807  from the Perl interpreter found by configure, rather than assuming pod2html
808  is on PATH, and the right one (this matters more now that it's not just
809  people building from git who build these docs).
810
811* Improve Perl bindings POD documentation.
812
813* Remove workaround for Perl macro vs C++11 header.  SWIG 3.0.6 and later adds
814  a different workaround to the generated C++ wrapper file, and we require SWIG
815  3.0.8 for a Python fix, so we no longer need our workaround.
816
817Python:
818
819* Fix "make check" in VPATH build.  Nothing seems to have changed in our build
820  system, so I'm guessing this is now required due to a change in the code SWIG
821  generates.
822
823Python3:
824
825* Fix "make check" in VPATH build.  Nothing seems to have changed in our build
826  system, so I'm guessing this is now required due to a change in the code SWIG
827  generates.
828
829* Fix install location for python3 docs.  They were being install to the same
830  path as the python docs - now the path includes "python3" instead of
831  "python".
832
833Ruby:
834
835* Increase minimum Ruby version to 2.1, as older versions are no longer
836  supported by the Ruby developers.
837
838Xapian-bindings 1.3.5 (2016-04-01):
839
840This release includes all changes from 1.2.23 which are relevant.
841
842Documentation:
843
844* Fix to install docs when not in maintainer-mode.
845
846* Note open_stub() is deprecated (most of the bindings already noted this, but
847  now ruby and tcl do too).
848
849General:
850
851* Update for changes to the C++ API.
852
853* PostingSource is now fully wrapped for the bindings.  Fixes #499, reported by
854  Joost Cassee.
855
856* Ship swig-depcomp and doxy2swig scripts in the source tarball.
857
858* Add installcheck-local make targets for most languages - these run the
859  testsuites using the installed bindings.
860
861CSharp:
862
863* configure: Stop checking for obsolete mono compiler names - gmcs, smcs and
864  dmcs were all deprecated in Mono 2.11.
865
866* configure: Strip out handling of DotGNU - it's been inactive for years, and
867  was officially "decommissioned" in December 2012.
868
869* README: Update list of mono versions recently tested with.
870
871Lua:
872
873* smoketest.lua: Fix to work with newer lua - coercing a number to a string
874  now appends ".0" for whole numbers.
875
876Perl:
877
878* Run pod2html with explicit --podpath=. - recent versions of pod2html seem to
879  need this to correctly handle references to other Xapian classes.  Reported
880  on #xapian-discuss by HowManny and abhishek_rand0wn.
881
882Python:
883
884* Run sphinx at build time.  It's an extra tool for people building from source
885  to have to install, but its output is rather large (this change reduces our
886  tar.xz size by ~20%), and its output includes a source-less minified copy of
887  jquery.
888
889Python3:
890
891* Run sphinx at build time.  It's an extra tool for people building from source
892  to have to install, but its output is rather large (this change reduces our
893  tar.xz size by ~20%), and its output includes a source-less minified copy of
894  jquery.
895
896* Fix handling of integer values larger than a C int by bootstraping with a
897  newer version of SWIG.  Fixes #703, reported by Barry Warsaw.
898
899* Remove xapian.inmemory_open() - we've deprecated the corresponding C++
900  function, and the Python3 bindings haven't yet had a stable release.
901
902Ruby:
903
904* Run rdoc at build time - it is included as part of the Ruby core
905  distribution, so we can assume it is available if ruby is, and avoid shipping
906  its rather large generated output in our source tarball.
907
908Xapian-bindings 1.3.4 (2016-01-01):
909
910This release includes all changes from 1.2.22 which are relevant.
911
912General:
913
914* Wrap new and changed features in C++ API.
915
916* PostingSource set_maxweight() is now accessible to the bindings.  Fixes #498,
917  reported by Richard Boulton.
918
919* configure script now defaults to looking for xapian-config-1.3.  This is now
920  automatically done for development series (odd middle component of the
921  version number), but not for stable series (even middle component).  Fixes
922  #695, reported by Jorge C. Leitão
923
924PHP:
925
926* Make PHP 5.5 the minimum officially supported version, as 5.4 has now reached
927  EOL.
928
929* In the examples, when iterating an MSet with foreach, don't throw the docid
930  away as $dummy, put it in $docid and use it - the code looks cleaner, and
931  this avoids an extra call to C++ to get the docid on each iteration.
932
933Python:
934
935* Drop support for Python 2.5.
936
937Python3:
938
939* Document installation of Python 3 bindings.  Fixes #694, reported by Jorge C.
940  Leitão.
941
942* Fix testsuite for changes in Python 3.5.  Fixes #690, patch from UsusDei.
943
944* Handle renaming of .pyo to .opt-1.pyc files due to PEP-0488.  Fixes #689,
945  patch from UsusDei.
946
947* Fix Python 3 version check to accept 3.10.
948
949Xapian-bindings 1.3.3 (2015-06-01):
950
951This release includes all changes from 1.2.20-1.2.21 which are relevant.
952
953Documentation:
954
955* INSTALL: IRIX is past EOL so drop information about IRIX make.
956
957General:
958
959* Add DB_RETRY_LOCK as a constant to wrap.
960
961* Don't wrap Query::LEAF_* - they're for internal use in xapian-core.
962
963* Fix "make install" from a git tree configured with --disable-documentation.
964  (Fixes #658, reported by Germán M. Bravo)
965
966* Fix "make install" when building from git with --disable-documentation.
967
968* Fix to handle a VPATH build from a tarball when the generated docs will be in
969  $(srcdir).
970
971* Update testcases for lazy wildcard expansion change in xapian-core.
972
973* Update for addition of XAPIAN_NOEXCEPT.
974
975* Don't wrap internal methods of Xapian::Weight.
976
977Portability:
978
979* Require a compiler with good C++11 support, like xapian-core now does.
980
981* doxygen_xml.conf.in: Update to avoid warnings about obsolete tags from newer
982  doxygen.
983
984* configure: Update check for -fvisibility to match xapian-core's.
985
986CSharp:
987
988* Fix configure test for whether $CLI can run CSharp programs - previously it
989  would always fail, which would mean that the CSharp tests wouldn't be run on
990  platforms where CSharp programs can't be run directly.
991
992Java:
993
994* java/docs/examples/SimpleSearch.java: Update to actually build and work.
995
996Lua:
997
998* The Lua bindings are no longer considered to be "experimental" (in reality
999  they haven't been for some time).
1000
1001Perl:
1002
1003* Add a "LICENSE" section to the main POD.
1004
1005* Add 'use strict' to all testcases, and add missing instances of 'my' that
1006  this change uncovered.
1007
1008* Wrap new WILDCARD_LIMIT_* constants as constants.
1009
1010Python:
1011
1012* Don't release the GIL when constructing a Query object from a sequence of
1013  Query objects and/or strings.
1014
1015* python/smoketest.py: Add new testcase to catch any internal functions,
1016  methods, constants, etc which have accidentally been wrapped.
1017
1018Python3:
1019
1020* The Python3 bindings are no longer considered to be "experimental".
1021
1022* Don't release the GIL when constructing a Query object from a sequence of
1023  Query objects and/or strings.  (fixes #346)
1024
1025* python3/pythontest.py: Expand comment about disabling test_import_star under
1026  threads.
1027
1028Tcl:
1029
1030* Require Tcl 8.5 as older versions are no longer supported upstream, and this
1031  version added ::tcl::pkgconfig, which makes the configure tests simpler and
1032  more reliable.
1033
1034* Adjust precedence of the typecheck typemap for wrapping constructing a query
1035  from a Tcl list so that we disambiguate this from the new OP_WILDCARD
1036  constructor correctly.
1037
1038Xapian-bindings 1.3.2 (2014-11-24):
1039
1040This release includes all changes from 1.2.16-1.2.19 which are relevant.
1041
1042Documentation:
1043
1044* Convert HTML docs to reStructured text.  (Patch from Mayank Chaudhary)
1045
1046* Update for deprecation of Xapian::Chert::open().
1047
1048* Update for renaming of "brass" backend to "glass".
1049
1050* Remove SVN "$Date" placeholders as they aren't expanded by git, and the "last
1051  updated" information isn't all that informative anyway - there can still be
1052  stale information even if the file was updated very recently.
1053
1054General:
1055
1056* Releases and snapshots are now bootstrapped using a more recent version of
1057  SWIG (a git snapshot from after the 3.0.3 release).
1058
1059* configure: Fix SWIG version check to accept 3.x, and update the minimum
1060  accepted version to be what we actually currently want.
1061
1062* Wrap new C++ API features, and in particular all the new weighting schemes,
1063  the changes to opening databases, and Xapian::Snipper.
1064
1065* Wrap Xapian::Database::check() for the bindings ignoring the std::ostream*
1066  argument which the C++ API takes.  If opts != 0, then output is sent to
1067  stdout, otherwise no output is produced.
1068
1069* Object descriptions are now always valid UTF-8. (see #620)
1070
1071* Provide a SimpleStopper constructor which provides the ability to initialise
1072  from a stopword list in a file.  Based on patch from Assem Chelli.
1073
1074CSharp:
1075
1076* README: Note that C# bindings now need .NET 2 or later (because that's what
1077  SWIG-generated code now requires).
1078
1079Java:
1080
1081* Add testcase that FLAG_SPELLING is now wrapped in a usable way.  Patch from
1082  Anish Kanchan.  (see #616, reported by "Naveen")
1083
1084Lua:
1085
1086* Document that constants can now be accessed using CLASS.CONSTANT as well as
1087  CLASS_CONSTANT.
1088
1089Perl:
1090
1091* Move the new SWIG-based Perl bindings into a 'Xapian' module, to smooth the
1092  overlap with the hand-coded XS 'Search::Xapian' module.
1093
1094* Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
1095  during parallel builds.
1096
1097* Use croak_sv() or ERRSV if defined.
1098
1099PHP:
1100
1101* Make PHP 5.4 the minimum version we officially support, as 5.3 has now
1102  reached EOL.
1103
1104* Wrap Xapian iterator classes as PHP iterators - requires PHP 5.5 for full
1105  support, under PHP 5.4 you can't use `foreach ($it as $k => $c)`, but
1106  `foreach ($it as $c)` works and allows iterating through the equivalent of
1107  C++ operator* on the iterator.  (fixes#652)
1108
1109* Fix handling of an exception thrown from a PHP implementation of
1110  FieldProcessor::apply().
1111
1112* smoketest.php: Add tests of get_eset() with an ExpandDecider and with a min
1113  weight threshold.
1114
1115* In current PHP releases, dl() is disabled in most SAPIs, and even where
1116  available it will now only look in the configured extension directory.  The
1117  upshot is that there no longer seems to be a sane way to install the PHP
1118  bindings without being root.  Fixes #661, reported by Felix Ostmann.
1119
1120Python2:
1121
1122* The python testsuite already tested if any constants weren't marked with
1123  the CONSTANT macro in xapian-headers.i, but the resulting error didn't
1124  clearly point to the actual problem.  Now we report the names of any
1125  such constants.
1126
1127* In the testsuite, use the xapian.WritableDatabase constructor rather than
1128  chert_open() - that code dates back to when chert was the only disk-based
1129  backend to support valuestreams, but flint was the default backend.
1130
1131* Fix typo in code to keep a reference to a FieldProcessor object, reported by
1132  Germán M. Bravo in github PR59.
1133
1134* Generate Python API docs with Sphinx.  (Fixes #138, patch from Assem Chelli)
1135
1136Python3:
1137
1138* Python 3 support has been split off into its own subdirectory, and should now
1139  be usable.  3.2 is the minimum supported version currently.  Existing code
1140  will need updating for Python 3, and the wrapped API is necessarily different
1141  in how Unicode is handled, so we've dropped deprecated features (such as
1142  'MSet.items' and 'ESet.items') from the Python 3 bindings.  (see #346)
1143
1144* Fix typo in code to keep a reference to a FieldProcessor object, reported by
1145  Germán M. Bravo in github PR59.
1146
1147* Generate Python API docs with Sphinx.  (Fixes #138, patch from Assem Chelli)
1148
1149Ruby:
1150
1151* configure: Don't prefer ruby1.8 to ruby when looking for a ruby interpreter -
1152  these days it's more likely to ignore ruby 1.9 or 2.0 rather than avoid
1153  picking ruby 1.6.
1154
1155Xapian-bindings 1.3.1 (2013-05-03):
1156
1157This release includes all changes from 1.2.10-1.2.15 which are relevant.
1158
1159Documentation:
1160
1161* HACKING: Document Debian packages needed for each language.
1162
1163General:
1164
1165* Wrap new C++ API features.
1166
1167* Use new XAPIAN_NOTHROW markers in C++ API headers to avoid generating
1168  unnecessary exception handling code where we call such functions and
1169  methods.
1170
1171* Tweak wrapping of Query from list constructor so the needed number of
1172  elements get preallocated.
1173
1174* Ignore Query(Query::Internal&) constructor, which is for internal use
1175  only.
1176
1177* For all languages except C# and Java, wrap the functions declared in
1178  xapian/dbfactory.h by getting SWIG to parse the header.  This means we now
1179  wrap the WritableDatabase form of Xapian::Auto::open_stub() for these
1180  languages.
1181
1182* swig-depcomp: Script which wraps invoking SWIG, tells it to generate
1183  dependencies, and adjusts the generated dependencies to work in our build
1184  system.
1185
1186* Remove support for 'configure --enable-quiet', 'make QUIET=' and 'make
1187  QUIET=y' - automake now supports 'configure --enable-silent-rules', 'make
1188  V=1' and 'make V=0' which are broadly equivalent and more standard.
1189
1190* Fix the tests to work with the new automake parallel test driver.
1191
1192Portability:
1193
1194* Improve workaround which allows building against an uninstalled xapian-core
1195  on OS X - this should now work with any uninstalled xapian-core (not only in
1196  a tree with the same layout as an SVN or git checkout) and it also won't try
1197  to build against "../xapian-core/.libs" just because it happens to exist.
1198  (Fixes #322)
1199
1200CSharp:
1201
1202* configure: The variable to specify the interpreter is now CLI (was MONO, but
1203  didn't actually work properly).
1204
1205Java:
1206
1207* Document that we aim to support JDK 1.6 (Java 6) and later.
1208
1209* Avoid generating a temporary C++ vector of Query objects when constructing
1210  a Query from a Java array of Query objects or a Java array of strings.
1211
1212* Implement and test MSetIterator, ESetIterator.  Fix PostingIterator,
1213  ValueIterator, and TermIterator.
1214
1215* Add Enquire.getMatchingTerms().
1216
1217* Use JAVACFLAGS when running JAVAC to allow extra flags to be specified when
1218  building, e.g. "make JAVACFLAGS=-g".
1219
1220* java/SmokeTest.java: Avoid using System.err.printf() which fails to compile
1221  with (the rather elderly) ECJ 3.3.1.
1222
1223Perl:
1224
1225* Fix PostingIterator wrapper to work.
1226
1227* Update list of unwrapped things in POD documentation.
1228
1229* Improve test coverage.
1230
1231* perl/t/10query.t: Adjust regexp which checks expected error message to work
1232  with Perl 5.16, which adds a '.' after "at foo line 123".  (ticket#610)
1233
1234* Probe for the test running tool 'prove' in configure.
1235
1236PHP:
1237
1238* Avoid using zend_error_noreturn() as it doesn't work with all builds of PHP.
1239  Instead we now wrap it in a SWIG_FAIL() function which we annotate as
1240  "noreturn" for GCC to avoids warnings.  This also reduces the size of the
1241  compiled PHP module by 6%.
1242
1243* php/smoketest.php: Add more tests of geospatial API.
1244
1245Python:
1246
1247* Drop support for Python 2.4.
1248
1249* python/smoketest2.py: Add more testcases.
1250
1251* python/smoketest2.py: Improve reporting of test failures for certain
1252  testcases.
1253
1254* Update Python 3 tests from Python 2 versions using 2to3.
1255
1256Xapian-bindings 1.3.0 (2012-03-14):
1257
1258Documentation:
1259
1260* In maintainer builds, run doxygen to generate XML for the bindings in the
1261  bindings build system, not as a side-effect in xapian-core's.  (ticket#262)
1262
1263General:
1264
1265* Wrap new geospatial API.
1266
1267* Wrap new database checking API.
1268
1269* Deprecated features scheduled for removal in 1.3.0 have been removed.
1270
1271* Wrap ExpandDecider even if we don't have director support - there's a
1272  ExpandDeciderFilterTerms subclass which is useful in itself, though it still
1273  needs some typemap work to actually get it usefully wrapped.
1274
1275* configure:
1276
1277  + Add --disable-visibility option to match xapian-core.
1278
1279  + Add -fshow-column for GCC.
1280
1281  + Don't put -Werror in SWIG_FLAGS - instead put it in a new SWIG_WERROR
1282    variable, so that it's easy to override it if you're getting a new warning
1283    from SWIG but want to just ignore it for the time being.
1284
1285* Exception handling now uses Error::get_description() rather than get_type +
1286  ": " + get_msg().  In many cases this is the same, but if context or errno
1287  are available, get_description() includes them.  Catch and report
1288  std::exception rather than handling it as an unknown error (so in particular
1289  std::bad_alloc will now be reported more helpfully).
1290
1291CSharp:
1292
1293* Avoid generating unwanted wrapper sources
1294  SWIGTYPE_p_std__vectorT_std__string_t.cs and
1295  SWIGTYPE_p_std__vectorT_Xapian__Query_t.cs.
1296
1297Java:
1298
1299* The hand-coded JNI Java bindings have been removed and the SWIG-based Java
1300  bindings promoted in their place.  This means almost the entire C++ API is
1301  now wrapped for Java, but the downside is there are some changes required
1302  to existing code.  Overall we feel the short-term pain is worth the long
1303  term benefits of having Java bindings which stay up to date.
1304
1305* java/SmokeTest.java: Add test that string passing is zero byte safe.
1306
1307Lua:
1308
1309* Improve error messages.
1310
1311Perl:
1312
1313* Fix "Use of qw(...) as parentheses is deprecated" warnings in test cases with
1314  Perl 5.14.
1315
1316* Fix Search::Xapian::Query->new() to work.
1317
1318* Enable warnings for all test cases and make them fatal.
1319
1320* Add "use Carp;" where we use functions from that module.
1321
1322* Improve POD docs for Document and TermGenerator methods - "weight" is
1323  misleading, so use "wdfinc" and "wdfdec" like the C++ API docs do.
1324
1325* The Query constructor which takes an array of subqueries is now wrapped more
1326  efficiently - previous a temporary C++ std::vector was built but now we avoid
1327  doing this.
1328
1329PHP:
1330
1331* PHP >= 5.3 is now required.
1332
1333* Add PHP type hints to the class wrappers.  Fixes ticket#577.
1334
1335* The XapianQuery constructor which takes an array of subqueries is now
1336  wrapped more efficiently - previous a temporary C++ std::vector was built
1337  but now we avoid doing this.
1338
1339Python:
1340
1341* Python >= 2.4 is now required.
1342
1343* Remove deprecated Stem_get_available_languages().
1344
1345* Hide away the deprecated non-pythonic iterators - we still need them to
1346  implement the pythonic iterators, so we can't entirely remove them.
1347
1348* Replace SWIG's thread locking with code which does nothing unless threads
1349  are already initialised, to avoid the overhead of thread locking in the
1350  common case of single-threaded Python code.  This seems to be about 5-10%
1351  faster for pythontest2.py modified to repeat the tests 100 times.
1352
1353* Handle the GIL in a way which also works in sub-interpreters.  Fixes ticket
1354  #364.
1355
1356* The Query constructor which takes an array of subqueries is now wrapped more
1357  efficiently - previous a temporary C++ std::vector was built but now we avoid
1358  doing this.
1359
1360Ruby:
1361
1362* The XapianQuery constructor which takes an array of subqueries is now
1363  wrapped more efficiently - previous a temporary C++ std::vector was built
1364  but now we avoid doing this.
1365
1366Tcl:
1367
1368* The XapianQuery constructor which takes an array of subqueries is now
1369  wrapped more efficiently - previous a temporary C++ std::vector was built
1370  but now we avoid doing this.
1371
1372Xapian-bindings 1.2.23 (2016-03-28):
1373
1374Documentation:
1375
1376* Update links to Xapian website and trac to use https, which is now supported,
1377  thanks to James Aylett.
1378
1379PHP:
1380
1381* Check that the PHP interpreter we find is actually PHP5, and if not look
1382  harder.  On current Debian unstable, php-config5 --php-binary reports
1383  /usr/bin/php which can be PHP7.
1384
1385* Document that PHP7 isn't currently supported, and explicitly check for and
1386  reject it in configure.
1387
1388Ruby:
1389
1390* configure: Stop preferring rdoc-1.8 to rdoc (this only happened in a
1391  fall-back case when rdoc wasn't found in the same directory as the ruby
1392  interpreter).
1393
1394Xapian-bindings 1.2.22 (2015-12-29):
1395
1396Documentation:
1397
1398* Stop maintaining ChangeLog files.  They make merging patches harder, and stop
1399  'git cherry-pick' from working as it should.  The git repo history should be
1400  sufficient for complying with GPLv2 2(a).
1401
1402General:
1403
1404* Stop wrapping internal methods of Xapian::Weight.
1405
1406* Return Error::get_description() rather than get_type + ": " + get_msg().  In
1407  many cases this is the same, but if context or errno are available,
1408  get_description() includes them.
1409
1410* Catch and report std::exception rather than handling it as an unknown error
1411  (so in particular std::bad_alloc will now be reported more helpfully).
1412
1413CSharp:
1414
1415* Fix configure test for whether $MONO can run CSharp programs - previously it
1416  would always fail, which would mean that the CSharp tests would only be run
1417  on systems where CSharp programs can be run directly.
1418
1419Lua:
1420
1421* Send stderr from lua version check to config.log instead of letting it appear
1422  on the terminal.
1423
1424PHP:
1425
1426* Fix memory leak and crash when using PHP subclasses of Xapian functors.
1427
1428* Subclasses of XapianMatchSpy and XapianPostingSource with implicit
1429  constructors now work.
1430
1431Python:
1432
1433* Add new testcase to catch any internal functions, methods, constants, etc
1434  which have accidentally been wrapped.
1435
1436Xapian-bindings 1.2.21 (2015-05-20):
1437
1438Lua:
1439
1440* README: Remove note about the Lua bindings being experimental - it's not
1441  really been true for some time now.
1442
1443Perl:
1444
1445* Wrap missing constants OP_SYNONYM and STEM_ALL_Z.
1446
1447* Add workaround for Perl defining a seed() macro which breaks compilation with
1448  GCC in C++11 mode (due to <algorithm> now pulling in random number generation
1449  classes with a method called seed).
1450
1451* Update list of unwrapped things in POD documentation.
1452
1453* Perl tests are ordering-dependent, so use .NOTPARALLEL to avoid problems
1454  during parallel builds.
1455
1456* Add test coverage for Enquire::set_collapse_key() with 1 and 2 parameters.
1457
1458* Add test that we can create all the stemmers returned by
1459  Stem::get_available_languages().
1460
1461* t/symbol-test.t: If the symboltest module build fails, skip the test - it's
1462  likely due to external reasons, like incompatible compiler flags being taken
1463  from Perl's Config module, due to Perl having been built with a different
1464  compiler to Xapian.
1465
1466* Use croak_sv() or ERRSV if defined.
1467
1468PHP:
1469
1470* README: Remove note about the subclassing bug with PHP 5.4 and later - that
1471  was fixed in 1.2.19.
1472
1473Python:
1474
1475* README: Add note that 1.3.2 has Python 3 support, and that this will be in
1476  stable release 1.4.0.
1477
1478Ruby:
1479
1480* smoketest.rb: Fix "warning: assigned but unused variable - mset".
1481
1482* Ship generate-rdoc-stubs in the tarball.  Reported by Matthias Klose in
1483  https://bugs.debian.org/782270
1484
1485Xapian-bindings 1.2.20 (2015-03-04):
1486
1487Portability:
1488
1489* configure: Avoid using \? in sed command in Lua detection - it isn't
1490  supported by all sed implementations.
1491
1492Lua:
1493
1494* configure: Rework LUA_SO checks to be clearer and to properly handle LUA_SO
1495  being specified without a leading '.'.
1496
1497* configure: Add an example of specifying LUA_SO to --help output.
1498
1499PHP:
1500
1501* Remove text about subclassing bug with PHP 5.4 and later - that was fixed in
1502  1.2.19.
1503
1504* In current PHP releases, dl() is disabled in most SAPIs, and even where
1505  available it will now only look in the configured extension directory.  The
1506  upshot is that there no longer seems to be a sane way to install the PHP
1507  bindings without being root, so update the documentation to reflect this.
1508  Fixes #661, reported by Felix Ostmann.
1509
1510Xapian-bindings 1.2.19 (2014-10-21):
1511
1512PHP:
1513
1514* Fix up SWIG generated C++ wrapper code so that subclassing of wrapped classes
1515  in PHP works with PHP 5.4 and later.  (Fixes #652, reported by Sebastian
1516  Gottfried)
1517
1518* Fix XapianQueryParser::set_stopper() and XapianTermGenerator::set_stopper()
1519  which were getting incorrectly wrapped such that they didn't actually do
1520  anything.  Fixes #659, reported by jmienert.  This bug was introduced by the
1521  reference tracking fix in 1.2.14.
1522
1523Ruby:
1524
1525* README: Note that Ruby 2.1 works too.
1526
1527Xapian-bindings 1.2.18 (2014-06-22):
1528
1529Documentation:
1530
1531* README: Add links to Erlang and Node.js bindings.
1532
1533Lua:
1534
1535* lua/smoketest.lua: Change expect() parameter order to the more natural (got,
1536  expected), which most of the calls already used, and fix up the few calls
1537  which passed (expected, got).
1538
1539PHP:
1540
1541* php/smoketest.php: Add missing "exit(1);" after reporting failure of check
1542  that MatchDecider returns an MSet with the expected docid in.  Luckily this
1543  wasn't masking a test failure.
1544
1545Python:
1546
1547* python/pythontest.py: There's no longer a need to use chert_open() explicitly
1548  - chert is the default backend now, and both chert and brass support the
1549  required functionality for the tests which do this, so this just needlessly
1550  causes the tests to fail if chert is disabled in xapian-core.
1551
1552* configure: If the Python version is too new or too old, only report it once
1553  not twice.
1554
1555Ruby:
1556
1557* configure: Fix Ruby bindings to build on Windows (and other platforms where
1558  allow_undefined_flag=unsupported. (fixes#634, reported by Alexis Denis)
1559
1560Xapian-bindings 1.2.17 (2014-01-29):
1561
1562Portability:
1563
1564* Improve workaround which allows building against an uninstalled xapian-core
1565  on OS X - this should now work with any uninstalled xapian-core (not only in
1566  a tree with the same layout as an SVN or git checkout) and it also won't try
1567  to build against "../xapian-core/.libs" just because it happens to exist.
1568  (Backported from 1.3.1; fixes #322)
1569
1570Python:
1571
1572* configure: Some distros now point /usr/bin/python at Python 3, so the check
1573  for a Python 2 interpreter now checks for 'python2' first, and checks that
1574  the version of found interpreter is 2.x.
1575
1576Ruby:
1577
1578* Tweak configure to work with Ruby 2.0.
1579
1580Tcl:
1581
1582* Link against -ltclstubX.Y for Tcl 8.5 and later (reported by Sergei Golovan
1583  in https://bugs.debian.org/724830).
1584
1585* Use a better check for TCL_INC for Tcl 8.5 and later.
1586
1587Xapian-bindings 1.2.16 (2013-12-04):
1588
1589Documentation:
1590
1591* README: Note that the SWIG Perl bindings should replace the XS ones in 1.4.x.
1592
1593General:
1594
1595* Compress source tarballs with xz instead of gzip.
1596
1597* configure: Handle git snapshot naming.
1598
1599Portability:
1600
1601* configure: Update list of platforms where we tell libtool not to link in
1602  deplibs to match the list used for xapian-core.
1603
1604Perl:
1605
1606* Pass 0 instead of NULL for non-pointer parameter to av_fetch (spotted due to
1607  GCC 4.7 warning).
1608
1609* symboltest.t: Pass $CPPFLAGS and $CXXFLAGS from the environment through to
1610  the sub-build, fixing failure when built with CPPFLAGS=-D_GLIBCXX_DEBUG.
1611
1612PHP:
1613
1614* smoketest.php: If running under PHP >= 5.4, skip the tests we know will fail
1615  with a message explaining this.
1616
1617Python:
1618
1619* Provide bindings version in xapian.__version__ as per PEP 396.  (see #346)
1620
1621* python/docs/examples/simpleexpand.py: Use Pythonic iteration over the ESet.
1622
1623* pythontest.py: Fix testcase checking we get an exception from using
1624  non-random-access iterators after then have advanced - previously these
1625  didn't actually test as fully as intended.
1626
1627Ruby:
1628
1629* Omit internal classes and methods from the rdocs.
1630
1631Xapian-bindings 1.2.15 (2013-04-16):
1632
1633General:
1634
1635* Fix configure --enable-quiet option to actually work for the bindings.
1636
1637Perl:
1638
1639* Fix doc typo: "as as" -> "as a"
1640
1641Ruby:
1642
1643* Fix deprecation warning in configure from Ruby 1.9.3.
1644
1645Xapian-bindings 1.2.14 (2013-03-14):
1646
1647Python:
1648
1649* Fix typo in doccomment.
1650
1651PHP:
1652
1653* Keep references to the PHP wrapper object when an object is set on another
1654  object.  (fixes #614)
1655
1656Tcl:
1657
1658* Allow TCL_INC to be passed to configure.  (fixes #612)
1659
1660Xapian-bindings 1.2.13 (2012-11-09):
1661
1662CSharp:
1663
1664* configure: Overhaul checks for C# tools to use modern names in preference.
1665
1666Lua:
1667
1668* Fix examples to use str(query) to get the query description.  (Fixes #600)
1669
1670* Document that get_description() is mapped to str(), and end() to _end().
1671
1672* Fix functor wrappers which return strings to be zero-byte clean.
1673
1674Perl:
1675
1676* Forward port tests of StringValueRangeProcessor with a prefix or suffix from
1677  1.2's XS Search::Xapian.  (ticket#607)
1678
1679* Update testsuite not to use UNIVERSAL::isa() as a function, since doing so
1680  is deprecated.
1681
1682PHP:
1683
1684* Document that subclassing Xapian classes in PHP currently doesn't work with
1685  PHP 5.4.
1686
1687Xapian-bindings 1.2.12 (2012-06-27):
1688
1689No changes since 1.2.11 except to bump the version - this release was made to
1690fix an incorrect library version information update in xapian-core 1.2.11.
1691
1692Xapian-bindings 1.2.11 (2012-06-26):
1693
1694General:
1695
1696* Ship the scripts which generate the except.i files for Lua, Perl and Python.
1697
1698Perl:
1699
1700* In generated C++ code, pass 0 instead of NULL for non-pointer parameter to
1701  av_fetch() (spotted due to GCC 4.7 warning).
1702
1703PHP:
1704
1705* Fix "make check" to work for PHP when building from a release tarball with
1706  srcdir != builddir.
1707
1708* Work around "undefined symbol: zend_error_noreturn" error.
1709
1710Xapian-bindings 1.2.10 (2012-05-09):
1711
1712CSharp:
1713
1714* Use -keyfile and -keycontainer options to the C# compiler, because it warns
1715  us to do this instead of setting them in AssemblyInfo.cs.
1716
1717* Use diff's -c option when comparing the files SWIG generated against those we
1718  were expecting to get as the output should be easier to understand.
1719
1720* Sort both the lists of expected and of found SWIG-generated sources with
1721  Perl, to avoid problems with locale-specific sort orders.
1722
1723Java-SWIG:
1724
1725* Remove now superfluous old check that SWIG generated at least the sources we
1726  want - we now check it generated *exactly* the sources we want.
1727
1728* Use diff's -c option when comparing the files SWIG generated against those we
1729  were expecting to get as the output should be easier to understand.
1730
1731* Sort both the lists of expected and of found SWIG-generated sources with
1732  Perl, to avoid problems with locale-specific sort orders.
1733
1734Lua:
1735
1736* Now works with Lua 5.2.
1737
1738* "require 'xapian'" now returns the module table.  (ticket #593)
1739
1740* lua/smoketest.lua: Improve reporting of test failures.
1741
1742Perl:
1743
1744* Avoid importing isa from UNIVERSAL to fix Perl 5.12 deprecation warning.
1745
1746* Remove #! lines with -W to fix "Name "Test::More::TODO" used only once:
1747  possible typo at /usr/share/perl/5.14/Exporter/Heavy.pm line 190." warnings.
1748
1749Python:
1750
1751* python/docs/examples/simpleexpand.py: Update to not use deprecated MSet
1752  iteration features which have been removed on trunk.  This also fixes a
1753  segfault if there are no matches and no documents are explicitly marked as
1754  relevant.
1755
1756* python/testsuite2.py: Explicitly suggest "make check VERBOSE=1" as a simple
1757  way to rerun tests with verbose output.
1758
1759Ruby:
1760
1761* configure: Make sure the ruby subdirectory exists before trying to create
1762  ruby/rubyio.h, so this works in a VPATH build from a clean tree.
1763
1764Xapian-bindings 1.2.9 (2012-03-08):
1765
1766Java:
1767
1768* configure: Fix test for jni.h to try looking for jni.h relative to the real
1769  location of javac, which should work for more JDKs.
1770
1771Lua:
1772
1773* Handle an exception from C++ by raising a xapian.Error object as an error in
1774  Lua.
1775
1776* Rename get_description() methods to __tostring(), so that you can use write
1777  tostring(obj) in Lua.
1778
1779* configure: Honour LUA_LIB if already set.  Fixes #581.
1780
1781* configure: Improve probing for LUA_LIB, and also probe for LUA_SO so we
1782  support platforms where the compiled Lua module isn't called .so.
1783
1784Perl:
1785
1786* Add tests of Document::get_docid().
1787
1788PHP:
1789
1790* Add a test that Query constructor taking OP_NEAR with a window size works.
1791
1792Python:
1793
1794* python/testsuite2.py: Don't run off the traceback looking for a test function
1795  if the exception wasn't from a test function.
1796
1797Xapian-bindings 1.2.8 (2011-12-13):
1798
1799Lua:
1800
1801* Wrap user-subclassable functor objects by allowing the user to pass a
1802  Lua function where the functor object would be passed in the C++ API.
1803
1804PHP:
1805
1806* Fix "PHP Notice:  Undefined variable: r in xapian.php".  (Fixes bug#576)
1807
1808* The PHP bindings will now work again with a version of PHP built with ZTS
1809  enabled (which is the default on Microsoft Windows).  This was broken by
1810  the changes to support subclassing in PHP in the version of SWIG used since
1811  1.2.6.
1812
1813Python:
1814
1815* Add a module docstring.  (Fixes bug #573)
1816
1817* The python testsuite now checks for object leaks during each testcase.
1818
1819* In test_matchingterms_iter, run the code we're testing for leaks twice, and
1820  only check for leaks the second time to avoid falsely reporting a leak when
1821  some cached value gets initialised under Python 2.5.
1822
1823Ruby:
1824
1825* Wrap optional prefix parameter to Database::allterms.
1826
1827Xapian-bindings 1.2.7 (2011-08-10):
1828
1829Documentation:
1830
1831* INSTALL: Pull in a few updates from the latest version of the automake
1832  document which this file was originally based on.  Add in the missing
1833  copyright and licensing information.
1834
1835* INSTALL: Add --with-lua to list of options.
1836
1837* INSTALL,README: It's no longer noteworthy that Mac OS X 10.1 and 10.2 aren't
1838  supported as Apple ditched them long ago, so drop this as a "Known Issue" in
1839  INSTALL and instead just say "Mac OS X >= 10.3" in the discussion of
1840  supported platforms in the README.
1841
1842* HACKING: Update and start section on deprecation warnings for the bindings.
1843
1844General:
1845
1846* Add missing wrappers for Database::has_positions() and
1847  TermIterator::positionlist_count(), and correct the return type of
1848  Database::get_doclength() from double to Xapian::termcount.
1849
1850CSharp:
1851
1852* README: Note a recent version of Mono which we've tested the C# bindings
1853  with.
1854
1855* Check that exactly the sources we expect are generated, and add some sources
1856  which were missing from the list.
1857
1858* Fix "make uninstall" so the compiled C++ module (typically _XapianSharp.so)
1859  gets removed.
1860
1861* Fix iterator ++ and -- so that the reference to the object isn't released
1862  prematurely, which was causing an occasional crash if the garbage collection
1863  happened at just the wrong moment,
1864
1865* Add test coverage for QueryParser.ParseQuery() with flags argument.
1866
1867* Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
1868
1869Java:
1870
1871* SmokeTest.java: Fix == comparisons with strings to use equals().
1872
1873* Add test that string passing is zero byte safe.
1874
1875* Fix MyExpandDecider.accept() to really check the passed parameter.
1876
1877Java-SWIG:
1878
1879* Put the SWIG-generated Java bindings in package org.xapian.
1880
1881* Wrap Query::MatchAll and Query::MatchNothing. (ticket#158)
1882
1883* SmokeTest.java: Fix == comparisons with literal strings to use equals()
1884
1885* Add test that string passing is zero byte safe.
1886
1887* Fix MyExpandDecider.accept() to really check the passed parameter.
1888
1889* Fix the compile JNI code to have a .jnilib extension on Mac OS X.
1890
1891* Create an HTML documentation page based on java/README.
1892
1893* Copy java examples from the hand-coded JNI ones.
1894
1895* docs/examples/SimpleIndex.java: Update to use commit() rather than flush().
1896
1897* Check that exactly the sources we expect are generated, and add some sources
1898  which were missing from the list.
1899
1900Lua:
1901
1902* Merge latest Lua changes from Xiaona Han.
1903
1904* lua/smoketest.lua: Add simple test for Database::positionlist_begin().
1905
1906* simpleexpand.lua: Don't try to add anything to the RSet if there are no
1907  matches.
1908
1909Perl:
1910
1911* Sync updates to examples from XS Search::Xapian:
1912
1913  + Require Perl >= 5.6 so we can "use warnings;".
1914
1915  + Loop over file using while() (which reads a line per iteration) not
1916    foreach() (which reads the whole file up front).
1917
1918* Wrap MatchAll and MatchNothing for Perl (as Search::Xapian::Query::MatchAll
1919  and Search::Xapian::Query::MatchNothing).  (ticket#158)
1920
1921* perl/t/termgenerator.t: Test TermIterator::index_text() with two arguments.
1922
1923* perl/Makefile.am: Fix "make check".
1924
1925* perl/t/symbol-test.t: Fix to work when built against an installed
1926  xapian-core.  (ticket#558)
1927
1928PHP:
1929
1930* php/smoketest.php: Install an error handler so the test fails if there are
1931  any errors, warnings, notices, etc.
1932
1933* Change PHP examples and test program to use 'include "xapian.php"' like user
1934  code should (rather than 'include "php5/xapian.php"' as they did previously).
1935
1936* Wrap MatchAll and MatchNothing for PHP as XapianQuery::MatchAll() and
1937  XapianQuery::MatchNothing(). (ticket#158)
1938
1939Ruby:
1940
1941* Wrap MatchAll and MatchNothing for Ruby.  (ticket#158)
1942
1943Xapian-bindings 1.2.6 (2011-06-12):
1944
1945General:
1946
1947* SWIG-based bindings are now generated with a newer version of SWIG
1948  (ticket#538).
1949
1950Portability:
1951
1952* On Mac OS X 10.5 or later, and 10.4 on x86, build Java JNI library with a
1953  .jnilib extension as we do for older versions.
1954
1955CSharp:
1956
1957* Upgrading to newer SWIG fixes issues with strings with newer C# versions.
1958
1959Java:
1960
1961* Fix memory leaks when functions taking string parameters throw exceptions.
1962
1963* Previously a hash table was used to map Java objects to C++ ones, but we
1964  now just cast the address of the C++ object to a jlong (which is 64 bits
1965  so will hold a pointer on current platforms).  This is more efficient and
1966  avoids the need for thread locks around accesses to the hash table.
1967
1968* Remove explicit checks for NULL around calls to delete.
1969
1970* Mark makefiles which build Java code as .NOTPARALLEL to avoid race conditions
1971  during parallel builds.
1972
1973Lua:
1974
1975* Add support for Lua, which is being developed by Xiaona Han during GSoC this
1976  year.  The current support should be regarded as experimental - it passes
1977  its automated tests, but the details of the Lua API are likely to evolve as
1978  the project progresses.
1979
1980Perl:
1981
1982* README: say that Perl bindings probably need Perl 5.8 or later.
1983
1984PHP:
1985
1986* Directors now work for PHP (ticket#488).  New simplematchdecider.php example.
1987
1988Python:
1989
1990* python/pythontest2.py: With Python 2.7, gc.collect() doesn't always collect
1991  all the garbage, so repeat until no further objects are freed.
1992  (https://bugs.debian.org/625679 and https://bugs.gentoo.org/349484).
1993
1994Ruby:
1995
1996* ruby/smoketest.rb: Older Ruby 1.8.x doesn't have Dir.mktmpdir() - just skip
1997  the compaction tests for these versions.
1998
1999Xapian-bindings 1.2.5 (2011-04-04):
2000
2001Documentation:
2002
2003* README: Update info on SWIG-based Perl bindings.
2004
2005* INSTALL: Copy new Multi-Arch section from xapian-core/INSTALL.  Replace VPATH
2006  section with better equivalent from xapian-core/INSTALL.
2007
2008General:
2009
2010* Wrap ESet::get_eset() with min_wt parameter (new in C++ API in 1.2.5).
2011
2012* configure: If xapian-core is a different release series, promote the
2013  mismatched versions warning to an error.
2014
2015Portability:
2016
2017* Mac OS X: Don't override MACOSX_DEPLOYMENT_TARGET on 10.5 and later, or
2018  10.4 on x86, as the default if unset on these versions is the current OS
2019  version.  (ticket#541)
2020
2021* python/pythontest2.py: In test_compactor(), close any open databases before
2022  removing the directory as you can't delete an open database on Microsoft
2023  Windows.  (ticket#526)
2024
2025CSharp:
2026
2027* Don't pass extra flags to Microsoft's gacutil.  (ticket#516)
2028
2029* Clarify the licence is GPL "version 2 or later" in the meta information
2030  we put in the module.
2031
2032Python:
2033
2034* Remove old and broken Enquire.get_matching_terms() method.  We deprecated
2035  Enquire.get_matching_terms() in 1.0.x, and removed it in 1.1.0, but
2036  accidentally left an older version of get_matching_terms() exposed.
2037
2038* Remove broken implementation of MSet.__contains__.  This appears never to
2039  have worked, and to have been broken for at least the past 3.5 years without
2040  anyone mentioning it, and is probably of little use anyway, so no need to
2041  deprecate.
2042
2043* python/docs/index.html: Document that MSet.items and ESet.items are
2044  deprecated, and what to use instead.  Note that MSET_DOCUMENT never worked on
2045  the tuple returned by MSet.items.  (ticket#531)
2046
2047* Add test coverage for mset.items.
2048
2049Ruby:
2050
2051* Add test coverage for Xapian::Compactor.
2052
2053* Handle an empty response to $RUBY --version specially.  This gives a less
2054  opaque error in cases where the user specified RUBY but the value given
2055  wasn't an executable file.
2056
2057Xapian-bindings 1.2.4 (2010-12-19):
2058
2059General:
2060
2061* Wrap the new Xapian::Compactor class.  The resolve_duplicate_metadata()
2062  virtual method is wrapped for subclassing for Python and Ruby currently.
2063
2064* Eliminate separate Makefile.am in the docs subdirectory of each language
2065  subdirectory and just inline any rules into the main sub-Makefile.am, which
2066  allows more of the build to run in parallel.
2067
2068* Don't ship some files which are generated at build time.
2069
2070* configure: Need python in maintainer mode to run doxy2swig.py.
2071
2072Packaging:
2073
2074* RPM: Package the Perl bindings.
2075
2076* RPM: Don't package _XapianSharp.la.
2077
2078Portability:
2079
2080* For Mac OS X builds, set DYLD_LIBRARY_PATH to allow tests to find an
2081  uninstalled Xapian library.  See ticket #322.
2082
2083* configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
2084
2085CSharp:
2086
2087* Don't install _XapianSharp.la.
2088
2089Perl:
2090
2091* Merge SWIG-based Perl bindings originally developed by Kosei Moriyama during
2092  GSoC 2009.  These are close to being a compatible replacement for the
2093  hand-coded XS bindings in Search::Xapian but also offer a more complete
2094  wrapping of the C++ API.  We're planning to replace the XS bindings with the
2095  SWIG ones for easier maintenance.  We encourage you to try them and let us
2096  know how you get on - particularly if you find cases where code which works
2097  with the XS bindings doesn't work with the SWIG ones.
2098
2099PHP:
2100
2101* Document that iterators shouldn't be dereferenced or advanced when at their
2102  end points (ticket#520).
2103
2104Python:
2105
2106* Fix memory leaks in typemaps which return Python lists.
2107
2108* MatchSpy can now be subclassed in Python.  Remote use isn't currently
2109  supported.
2110
2111* configure: Use sys.version_info tuple, rather than string splicing which
2112  assumes the Python "major.minor" is 3 characters (which would fail if Python
2113  2.10 were ever released, for example).
2114
2115Xapian-bindings 1.2.3 (2010-08-24):
2116
2117Packaging:
2118
2119* xapian-bindings.spec: Don't run autoreconf - it's no longer required.
2120
2121Xapian-bindings 1.2.2 (2010-06-27):
2122
2123* No user-visible change except for bumping the version to indicate
2124  compatibility with Xapian-core 1.2.2.
2125
2126Xapian-bindings 1.2.1 (2010-06-22):
2127
2128This release includes all changes from 1.0.21 which are relevant.
2129
2130General:
2131
2132* Wrap Xapian::StemImplementation.  Currently this has only been tested for
2133  Python.  (ticket#448)
2134
2135Guile:
2136
2137* Remove non-functional disabled guile bindings left over from Open Muscat
2138  days - if someone wanted to add guile bindings, it would be easier to start
2139  from scratch.
2140
2141Java-SWIG:
2142
2143* Update list of generated java sources in the SWIG-based Java bindings.
2144
2145PHP:
2146
2147* zend_throw_exception() returns, so return control to PHP directly after
2148  calling it to avoid needless extra work and possible issues.
2149
2150Python:
2151
2152* Fix "from xapian import *".  (ticket#477)
2153
2154* Fix testcase weight_normalise - a change in xapian-core means that
2155  get_max_possible() can now return zero for a non-existent term, so don't
2156  blindly calculate the reciprocal of it.
2157
2158* python/replicationtest2.py: Extend to check that changesets get applied
2159  correctly.
2160
2161* python/smoketest2.py: Check len(mset) works (improving test coverage of
2162  Python-specific wrapping).
2163
2164Xapian-bindings 1.2.0 (2010-04-28):
2165
2166This release includes all changes from 1.0.20 which are relevant.
2167
2168Portability:
2169
2170* configure: Tell libtool not to link in deplibs on platforms where we know
2171  they aren't needed.
2172
2173* configure: On Linux, extract the library search path from ldconfig which
2174  gives us the default entries reliably.
2175
2176Xapian-bindings 1.1.5 (2010-04-15):
2177
2178This release includes all changes from 1.0.19 which are relevant.
2179
2180Tcl:
2181
2182* tcl8/docs/index.html: Document WritableDatabase::close() as a way to
2183  sidestep the whole destructor issue.  (ticket#62)
2184
2185Xapian-bindings 1.1.4 (2010-02-15):
2186
2187This release includes all changes from 1.0.18 which are relevant.
2188
2189General:
2190
2191* Update for the new Brass backend and other C++ API changes.
2192
2193* Wrap Database::get_doclength_lower_bound(),
2194  Database::get_doclength_upper_bound(), Database::get_wdf_upper_bound(),
2195  Database::valuestream_begin() and Database::valuestream_end() for all
2196  languages. (ticket#431)
2197
2198* Wrap ValueIterator::skip_to() and ValueIterator::check() for all languages.
2199
2200Python:
2201
2202* Wrap valuestreams as Database.valuestream(), returning a ValueStreamIter
2203  object which dereferences to a ValueStreamItem object,
2204
2205* Fix Enquire.clear_matchspies() wrapper which crashed in 1.1.3.
2206
2207Ruby:
2208
2209* Add safe wrapper for the valuestream iterator.
2210
2211Xapian-bindings 1.1.3 (2009-11-18):
2212
2213This release includes all changes from 1.0.15-1.0.17 which are relevant.
2214
2215General:
2216
2217* configure: Default to looking for xapian-config-1.1 unless XAPIAN_CONFIG is
2218  specified.
2219
2220* Wrap the new MatchSpy class, and associated features.
2221
2222* Don't wrap PostingSource::serialise(), Weight::serialise() and
2223  Weight::unserialise() as they aren't useful from the bindings.
2224
2225* Update for the Sorter to KeyMaker changes.
2226
2227PHP:
2228
2229* Fix PHP bindings to build when PHP has been compiled in multithreaded mode,
2230  as it standardly is on Microsoft Windows.  Fixes #411.
2231
2232* Merged the PHP "smoketest" back together now we don't need to support
2233  PHP4 now.
2234
2235Python:
2236
2237* Fix a memory leak on error (in theory - we've not got a way to generate this
2238  error, so haven't been able to reproduce the leak or test the fix).
2239
2240Xapian-bindings 1.1.2 (2009-07-23):
2241
2242This release includes all changes from 1.0.14 which are relevant to trunk.
2243
2244Python:
2245
2246* Several changes towards fully supporting Python 3, but more work is required.
2247  (ticket#246)
2248
2249Xapian-bindings 1.1.1 (2009-06-09):
2250
2251This release includes all changes from 1.0.13 which are relevant to trunk.
2252
2253General:
2254
2255* Wrap the recently added extra parameter to Enquire::set_collapse_key().
2256
2257CSharp:
2258
2259* Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
2260  C# yet, and to use Query("") and Query() instead.
2261
2262* configure: If we don't find a C# compiler, don't test an empty command name
2263  further which saves a fork and avoids an odd looking message.
2264
2265PHP:
2266
2267* Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
2268  PHP yet, and to use Query("") and Query() instead.
2269
2270Python:
2271
2272* Wrap Query::MatchAll and Query::MatchNothing for Python and document how they
2273  are wrapped (ticket#158).
2274
2275* python/smoketest2.py,python/smoketest3.py: Update tests with FLAG_PARTIAL to
2276  expect SYNONYM in generated query.
2277
2278Ruby:
2279
2280* Document that Query::MatchAll and Query::MatchNothing aren't wrapped for
2281  Ruby yet, and to use Query("") and Query() instead.
2282
2283Tcl:
2284
2285* Wrap Query::MatchAll and Query::MatchNothing for Tcl and document how they
2286  are wrapped (ticket#158).
2287
2288Xapian-bindings 1.1.0 (2009-04-22):
2289
2290Documentation:
2291
2292* INSTALL: Python 2.6 and later look in ~/.local for Python modules so update
2293  the instructions to suggest users use this standard location for installing
2294  without root access.
2295
2296General:
2297
2298* All deprecated features slated for removal in 1.1.0 have been removed.
2299
2300* All new C++ API features have been wrapped.  Also, since we now supply some
2301  standard MatchDecider subclasses, we now wrap Enquire::get_mset() so that
2302  these can be passed in even for languages for which SWIG doesn't support
2303  subclassing.
2304
2305Packaging:
2306
2307* xapian-bindings.spec: Updated to reflect the new Python packaging.
2308
2309Portability:
2310
2311* configure: Use XAPIAN_CXXFLAGS for test compiles since it may include options
2312  to put the compiler into ISO C++ mode).
2313
2314PHP:
2315
2316* PHP4 support has been removed, since PHP4 is no longer supported upstream
2317  as of 2008-08-08.
2318
2319Python:
2320
2321* Python 2.3 or later is now required.  2.2 is essentially unsupported
2322  upstream.
2323
2324* The import method used has been changed (by using a newer SWIG version)
2325  and no longer gives a warning with Python 2.6.
2326
2327* Initial support for Python 3.0 has been added.  This currently doesn't
2328  work correctly and should be treated as experimental. (ticket#346)
2329
2330* The newer SWIG version handles exceptions in director methods correctly
2331  so we no longer need our workaround for ticket #289.
2332
2333* Database::metadata_keys_begin() and Database::metadata_keys_end() are
2334  wrapped for Python as Database.metadata_keys().
2335
2336* The Python bindings are now installed as a python package, with the
2337  files in a xapian subdirectory, hiding the internal _xapian module
2338  better.
2339
2340* Python now flags deprecation warnings for the single argument form and old
2341  parameter name (ascending) in set_sort_by_key(), set_sort_by_value() and
2342  friends.
2343
2344Xapian-bindings 1.0.23 (2011-01-14):
2345
2346Portability:
2347
2348* configure: Fix typo in code to set PYTHON_LIBS under cygwin.  (ticket#509)
2349
2350PHP:
2351
2352* Document that iterators shouldn't be dereferenced or advanced when at their
2353  end points (ticket#520).
2354
2355Python:
2356
2357* Fix memory leaks in typemaps which return Python lists.
2358
2359Xapian-bindings 1.0.22 (2010-10-03):
2360
2361Packaging:
2362
2363* RPM: Don't package _XapianSharp.la.
2364
2365CSharp:
2366
2367* Don't install _XapianSharp.la.
2368
2369Python:
2370
2371* configure: Use sys.version_info tuple, rather than string splicing which
2372  assumes the Python "major.minor" is 3 characters (which would fail if Python
2373  2.10 were ever released, for example).
2374
2375* Add test_xapian_star.py to distribution - fixes failure of "test_import_star"
2376  testcase in pythontest.py.
2377
2378Xapian-bindings 1.0.21 (2010-06-18):
2379
2380Python:
2381
2382* xapian.BAD_VALUENO is now wrapped as a constant rather than variable which
2383  can't be written to. (ticket#297)
2384
2385* Fix cleaning of test directories to use "rm -rf" rather than "rm -f".
2386
2387* Add test to check that "from xapian import *" works.
2388
2389Xapian-bindings 1.0.20 (2010-04-27):
2390
2391Python:
2392
2393* Set PYTHONDONTWRITEBYTECODE=1 in the environment to prevent Python from
2394  generating .pyc files in srcdir for Python >= 2.6, and use a Bourne shell
2395  trap to delete them after running tests for older versions of Python.
2396  (ticket#315)
2397
2398Ruby:
2399
2400* configure: Fix typo so path to ruby is reported if Ruby < 1.8 is found.
2401
2402Xapian-bindings 1.0.19 (2010-04-15):
2403
2404Tcl:
2405
2406* tcl8/docs/index.html: Improve wording in a few places.
2407
2408Xapian-bindings 1.0.18 (2010-02-14):
2409
2410General:
2411
2412* Wrap new C++ API method Document::add_boolean_term().
2413
2414Ruby:
2415
2416* Generate entries in the Ruby rdocs for all classes which aren't documented
2417  because of Ruby-specific methods.  Fixes ticket#417.
2418
2419* Avoid absolute paths in the generated rdocs.
2420
2421Xapian-bindings 1.0.17 (2009-11-18):
2422
2423Packaging:
2424
2425* Improve RPM package summaries - the files are needed to *use* scripts as well
2426  as to develop them.  Use "Tcl" instead of "TCL" as the former is more
2427  conventional.
2428
2429Portability:
2430
2431* python/Makefile.am: Restore the "./" path to the sourced file
2432  libtoolconfig.tmp as ksh requires it.
2433
2434Java:
2435
2436* Fix memory leak when passing a MatchDecider to Enquire::get_mset().
2437
2438Xapian-bindings 1.0.16 (2009-09-10):
2439
2440Python:
2441
2442* Improved docstrings for QueryParser::set_default_op() and
2443  QueryParser::get_default_op() (automatically generated from changes in
2444  xapian-core).
2445
2446Xapian-bindings 1.0.15 (2009-08-26):
2447
2448Python:
2449
2450* Don't break long words when wrapping text in the generated API documentation
2451  comments as this was causing identifiers to be broken in two.
2452
2453Xapian-bindings 1.0.14 (2009-07-21):
2454
2455General:
2456
2457* configure: If $CSC is empty, don't try to run it.  This was a cosmetic bug
2458  and the only side-effect was an odd looking message.
2459
2460Python:
2461
2462* Rename methods at build-time using SWIG rather than a run-time in Python, as
2463  the latter approach adds a small time overhead when the module is being
2464  loaded.
2465
2466Ruby:
2467
2468* Fix to accept an integer value > MAXINT for a double parameter.
2469
2470Xapian-bindings 1.0.13 (2009-05-23):
2471
2472Packaging:
2473
2474* xapian-bindings.spec: Update C# packaging for rename of XapianSharp.so to
2475  _XapianSharp.so in 1.0.11.
2476
2477* xapian-bindings.spec: Update Tcl8 packaging for where we now install the
2478  bindings since 1.0.6.
2479
2480PHP:
2481
2482* Backport fix from SWIG SVN for misuse of formatted error function in
2483  SWIG-generated code.
2484
2485Python:
2486
2487* Change the SWIG-generated wrapper code so it doesn't attempt to acquire
2488  Python's Global Interpreter Lock (GIL) in situations where we know that it
2489  will already be locked.  This avoids some dead-locks with mod_python (due to
2490  mod_python bugs which are apparently unlikely to ever be fixed), and results
2491  in smaller wrappers which run a little faster (in tests with Xapian on x86-64
2492  Ubuntu 9.04, the stripped wrapper library was 11% smaller and ran 2.7%
2493  faster). (ticket#185)
2494
2495* README,python/docs/index.html: Update documentation of the above mod_python
2496  issue and also document the related mod_wsgi issue.  The status is now that
2497  everything seems to work if you stick to the main interpreter (ticket#364).
2498
2499* Backport fix from SWIG SVN for misuse of formatted error function in
2500  SWIG-generated code.
2501
2502* python/docs/examples/simplematchdecider.py: Read "avoid_value" from the
2503  second parameter, not the third.
2504
2505* python/docs/examples/simplematchdecider.py,
2506  python/docs/examples/simplesearch.py: Make use of str.join() for simpler,
2507  clearer code.
2508
2509Ruby:
2510
2511* README: Note that the testsuite fails due to a bug in the test/unit module in
2512  Ruby 1.9.0, but applications using the bindings should work, and that the
2513  testsuite works with Ruby 1.9.1.  Drop all mention of Ruby 1.6.x as that
2514  appears to be completely dead both upstream and in the wild.
2515
2516Xapian-bindings 1.0.12 (2009-04-19):
2517
2518Documentation:
2519
2520* INSTALL: Add a note about being able to pass variables to configure to pick
2521  which of several parallel installations of a language to build for.
2522
2523Python:
2524
2525* python/pythontest.py: Round the weights returned for the OP_SCALE_WEIGHT
2526  test to avoid failing due to rounding differences.
2527
2528* python/testsuite.py: Remove bare except: handlers from testsuite, so Ctrl-C
2529  stop the whole testsuite, not just the currently running testcase.
2530
2531Xapian-bindings 1.0.11 (2009-03-15):
2532
2533Documentation:
2534
2535* README: Note that 1.0.x doesn't (and isn't currently planned to) support
2536  Python 3, and possible current issues with Ruby 1.9.
2537
2538Portability:
2539
2540* Merge fixes from Cygwin Ports, so bindings should build out of the box on
2541  Cygwin.
2542
2543Python:
2544
2545* python/docs/examples/: Use str(obj) rather than obj.get_description() (the
2546  latter is deprecated, and support was removed in 1.0.0).
2547
2548* Add support for using the new name ("reverse") for the second argument of
2549  set_sort_by_key() and set_sort_by_value() and friends as a named parameter.
2550  The old name ("ascending") is still supported, but will be deprecated in
2551  1.1.0.
2552
2553* Keep Python references to Sorter, Stopper, and ValueRangeProcessor objects
2554  which get set on other objects to avoid segmentation faults if they go out
2555  of scope before the object they are set on does.  (ticket#341)
2556
2557Ruby:
2558
2559* Fixes for Ruby 1.9 compatibility (ticket#323).  The test harness currently
2560  fails so "make check" doesn't pass, but code using the bindings should work.
2561
2562Xapian-bindings 1.0.10 (2008-12-23):
2563
2564Python:
2565
2566* Need to clean testsuite.pyc from srcdir since that's where it gets generated
2567  as things stand (upstream fix for Debian bug 506090).
2568
2569Xapian-bindings 1.0.9 (2008-10-31):
2570
2571General:
2572
2573* configure: Add support for "--enable-quiet" like xapian-core and omega have.
2574
2575* Wrap new Database::metadata_keys_begin() and Database::metadata_keys_end()
2576  methods.
2577
2578Xapian-bindings 1.0.8 (2008-09-04):
2579
2580General:
2581
2582* configure: Report bug report URL in --help output.
2583
2584Python:
2585
2586* Fix mangling of exceptions thrown from Python subclasses of Xapian classes.
2587  (bug#289)
2588
2589* Fix memory leaks in the xapian.Query constructor.  (bug#294)
2590
2591Xapian-bindings 1.0.7 (2008-07-14):
2592
2593Documentation:
2594
2595* Document how all the database factory functions and library version functions
2596  are wrapped for all languages.
2597
2598General:
2599
2600* Fix to build against a xapian-core which has quartz and/or flint disabled.
2601
2602* The "program" version of Remote::open() has been wrapped for some time, so
2603  update the documentation which said it wasn't.
2604
2605Packaging:
2606
2607* xapian-bindings.spec: Remove "www." from xapian.org and oligarchy.co.uk URLs.
2608
2609Portability:
2610
2611* For Java, Python, and Ruby, use the libtool -shrext option to specify a
2612  different module extension rather than our own ugly bodge.
2613
2614Java:
2615
2616* Make passing string from Java to C++ zero-byte safe.  It doesn't appear to be
2617  simple to make C++ to Java work though.
2618
2619PHP:
2620
2621* Add test that OP_VALUE_GE works for PHP.
2622
2623Python:
2624
2625* Several corrections to the Python documentation.
2626
2627* configure: Fix problem with building under mingw.
2628
2629Ruby:
2630
2631* Include simplematchdecider.rb example.
2632
2633* smoketest.rb: Test the version reporting functions.
2634
2635Tcl:
2636
2637* Include simpleexpand.tcl example.
2638
2639* Fix where the Tcl module gets installed.
2640
2641* README: Note that Tcl 8.3 and earlier are no longer supported by upstream.
2642
2643Xapian-bindings 1.0.6 (2008-03-17):
2644
2645General:
2646
2647* Wrap OP_VALUE_GE and OP_VALUE_LE and the new Query constructor which they are
2648  used with.
2649
2650* configure: Correct the required SWIG version given in an error message.
2651
2652PHP:
2653
2654* php/smoketest.php: Add note that this script should be run using 'make check'
2655  in the build tree (rather than trying to copy it to a webserver as someone
2656  recently tried to).
2657
2658* php/smoketest.php: Fix to work under PHP4.
2659
2660Python:
2661
2662* The Python module now always has the extension which Python expects, which
2663  fixes a failure on Mac OS X.
2664
2665Ruby:
2666
2667* Automatically install/uninstall the Ruby rdoc-generated documentation along
2668  with the ruby bindings.
2669
2670Tcl:
2671
2672* configure: Sort out the default value of TCL_LIB, which could end up being
2673  under /usr/share in xapian-bindings 1.0.4 and 1.0.5.
2674
2675Xapian-bindings 1.0.5 (2007-12-21):
2676
2677General:
2678
2679* Wrap Xapian::Sorter and subclasses.
2680
2681* Wrap Enquire::set_sort_by_key(), Enquire::set_sort_by_key_then_relevance(),
2682  and Enquire::set_sort_by_relevance_then_key().
2683
2684* Factor out the code to protect multitarget rules against parallel make, and
2685  fix it to handle the source being changed while the rule is executing, and to
2686  correctly return an error code if we fail while trying to recover from the
2687  removal of a target of a multi-target rule.
2688
2689* configure: Improve the clarity of the error given when none of the tools
2690  needed for any supported language are found.
2691
2692* configure: SWIG 1.3.32 has now been released, so require at least this
2693  released version for maintainer builds.
2694
2695Java:
2696
2697* Add explicit '#include <cstring>' to fix build with the latest snapshots of
2698  GCC 4.3.
2699
2700* configure: Log the output of trying to compile conftest.java in config.log;
2701  if the test fails, report whether the failure was compiling or running the
2702  test program.
2703
2704* Check for directory existence rather than calling mkdir unconditionally as
2705  despite the "(ignored)", the error message seems to confuse some people.
2706
2707PHP:
2708
2709* Add feature test for XapianMultiValueSorter.
2710
2711* php/smoketest5.php: Fix use of Database_get_document to new style OO
2712  interface.  Fix the error reported when the PHP5 exception test fails.
2713
2714* php/smoketest.php: Add feature test to confirm that optional arguments to
2715  XapianQuery's "term" constructor are wrapped.
2716
2717Python:
2718
2719* Don't drop the GIL when calling Xapian.MSet.items and Xapian.ESet.items -
2720  these properties build a python list, so dropping the GIL isn't safe and
2721  may cause undefined behaviour in multithreaded environments.
2722
2723* configure: Update error message to reflect requirement for at least python
2724  2.2.
2725
2726* configure: Change "print foo" to "print(foo)" in python version checks, for
2727  compatibility with python 3.0.
2728
2729Ruby:
2730
2731* The Ruby bindings now work on Mac OS X (the Ruby module's extension was
2732  previously incorrect).
2733
2734* Run "rdoc" to generate HTML for the Ruby-specific API documentation which
2735  ruby/docs/index.html previously had a dead link to.
2736
2737Tcl:
2738
2739* configure: Overhaul code to find tcl.h since the old version no longer worked
2740  with Debian unstable.
2741
2742* tcl8/docs/index.html: Update documentation to cover flint and mention that
2743  quartz is now deprecated.
2744
2745* Remove code to handle `const char *' exceptions - as of 1.0.0 the QueryParser
2746  throws QueryParserError instead.
2747
2748Xapian-bindings 1.0.4 (2007-10-30):
2749
2750General:
2751
2752* Wrap new OP_SCALE_WEIGHT query operator, and corresponding Query constructor.
2753  Add feature tests for all languages.
2754
2755* The "bindings.html" file documenting each of the bindings has been renamed to
2756  "index.html".
2757
2758Packaging:
2759
2760* Fix the PHP Makefile.am to work with autoconf < 2.60 to fix RPM builds for
2761  older distros.
2762
2763Portability:
2764
2765* Fix warnings when compiling with GCC 4.2.
2766
2767PHP:
2768
2769* Update to newer SWIG SVN snapshot to fix memory leaks in wrapped constructors
2770  and methods/functions which return a wrapped class.
2771
2772* For PHP4, wrap Xapian::sortable_serialise() as xapian_sortable_serialise()
2773  and Xapian::sortable_unserialise() as xapian_sortable_unserialise().
2774
2775* Document how non-class functions are wrapped.
2776
2777* Fix wrapping of NumberValueRangeProcessor for PHP4.
2778
2779* smoketest.php: Split the regression test for bug#193 into separate
2780  versions for PHP4 and PHP5 as the previous version only worked for PHP5.
2781
2782Python:
2783
2784* python/docs/index.html: Promote the Pythonic iterators, and deprecate the
2785  non-pythonic iterators.  Make it clearer that the "sequence API" is
2786  deprecated.
2787
2788* Add test of a custom ValueRangeProcessor (ie, one written in python).
2789
2790* Update the examples to use the new-style attributes to access MSet item
2791  values rather than the old-style MSET_* constants.
2792
2793* Document MSET_DOCUMENT.
2794
2795Ruby:
2796
2797* smoketest.rb: Rename test of metadata access methods which had been named the
2798  same as the matchdecider test due to a copy-and-paste error.
2799
2800Xapian-bindings 1.0.3 (2007-09-28):
2801
2802General:
2803
2804* Wrap new methods Database::get_metadata() and
2805  WritableDatabase::set_metadata().
2806
2807* "make uninstall" now removes the loadable module we install for each of
2808  the bindings.
2809
2810* "make distcheck" now works.
2811
2812* Distribution tarballs are now in the POSIX "ustar" format since it saves
2813  about 40KB and we need to use it for xapian-core anyway.
2814
2815Packaging:
2816
2817* RPMs: Package xapian.php.
2818
2819CSharp:
2820
2821* Remove wrapper for ValueRangeProcessor::operator(), since it can't be
2822  usefully used currently.
2823
2824Java:
2825
2826* Remove wrappers for the Muscat36 backend, which has now been dropped from the
2827  C++ library.
2828
2829* "make clean" now removes the class files generated for inner classes.
2830
2831PHP:
2832
2833* Add feature test for DateValueRangeProcessor when used with QueryParser.
2834
2835* ValueRangeProcessor::apply() can now be called from PHP (bug#193).  This
2836  isn't actually very useful, since you can't subclass it in PHP currently.
2837
2838* Fixed wrapping of Enquire::set_cutoff() - previously this would only work
2839  if the third parameter was specified and a floating point number (e.g. 0.0).
2840
2841* php/docs/bindings.html: Fix errors in example code.
2842
2843Python:
2844
2845* ValueRangeProcessor::operator() is now wrapped as a __call__ method in
2846  Python which takes two strings and returns a 3-tuple (value_number,
2847  modified_begin, modified_end).  Previously this always failed with a
2848  type error, so this doesn't break existing code.
2849
2850* python/pythontest.py: Interpret any commandline arguments as a list of
2851  tests to be run (the default is to run all tests).
2852
2853* README,python/docs/bindings.html: Add a note about the problems with
2854  mod-python (as described in bug #185).
2855
2856* python/pythontest.py: Delete the database handles before deleting a database
2857  to fix problems running the Python tests on MS Windows (bug#179).
2858
2859* "make clean" now removes testsuite.pyc.
2860
2861Ruby:
2862
2863* Check for RUBY_INC, RUBY_LIB, and RUBY_LIB_ARCH in the environment or on
2864  the configure command-line.  The defaults for RUBY_LIB and RUBY_LIB_ARCH are
2865  now the site-specific directories, which is more correct when building
2866  from source.  Debian packages, etc can override this by setting RUBY_LIB and
2867  RUBY_LIB_ARCH.
2868
2869Tcl:
2870
2871* Check for TCL_LIB in the environment or on the configure command-line to
2872  allow installing without root access more cleanly.
2873
2874Xapian-bindings 1.0.2 (2007-07-05):
2875
2876Documentation:
2877
2878* Document use of PYTHON_LIB and PHP_EXTENSION_DIR instead of pylibdir and
2879  phpextdir.
2880
2881* Remove documentation of removed "--with-swig" configure option.
2882
2883General:
2884
2885* Add methods of NumberValueRangeProcessor for serialising and
2886  unserialising doubles.
2887
2888* Add methods and constants supporting spelling correction and synonyms.
2889
2890* Value of XAPIAN_CONFIG supplied to configure is now passed to distcheck,
2891  to ensure that it works with uninstalled copies of Xapian.
2892
2893* Value of PYTHON_LIB supplied to configure is now respected - previously
2894  it was documented, but ignored.
2895
2896* Add support for supplying PHP_EXTENSION_DIR to configure.
2897
2898* Change to using "%include", rather than reproducing contents of header
2899  files, for "queryparser.h", "document.h" and "postingiterator.h".
2900
2901* Add new form of get_mset() which allows a matchspy matchdecider to be
2902  set.
2903
2904* RPMs: Don't mention %makeinstall in a .spec file comment as that makes RPM
2905  explode.  Add in a missing "mv" in the command for installing tcl8
2906  documentation.
2907
2908CSharp:
2909
2910* Fix rule handling parallel make to include xapian_wrap.h
2911
2912PHP:
2913
2914* Install xapian.php as <PREFIX>/share/php<PHPMAJOR>/xapian.php.  There
2915  doesn't seem to be a standard location, but this works for Debian at
2916  least, and it seems better to at least try to install it.
2917
2918* Rename ValueRangeProcessor and subclasses and TermGenerator to have a Xapian
2919  prefix for PHP4.
2920
2921Python:
2922
2923* Fix a threading problem: the GIL was not being acquired in the exception
2924  handling code before setting the Python exception state, leading to
2925  various memory corruption symptoms in threaded programs.
2926
2927* Add special iterators to Database for synonyms, synonym_keys and
2928  spellings.
2929
2930* Add test cases for OP_VALUE_RANGE queries, getting spelling corrections,
2931  synonym iterators and spelling iterators.
2932
2933* In the test suite, expect_query() now adds "Xapian::Query(" and ")" around
2934  the expected description to make the tests more readable.
2935
2936Xapian-bindings 1.0.1 (2007-06-11):
2937
2938Documentation:
2939
2940* NEWS: Fix the recent headings which said "Xapian-core" to say
2941  "Xapian-bindings".
2942
2943General:
2944
2945* Wrap Xapian::Query constructor for creating ValueRange queries.
2946
2947* Wrap new forms of Xapian::Database::allterms_begin() and allterms_end()
2948  which take a prefix.
2949
2950Packaging:
2951
2952* RPMs: Use "make install" instead of %makeinstall to avoid doubled
2953  %{buildroot} prefix on most files which we then have to work around.
2954
2955CSharp:
2956
2957* SimpleIndex now uses Xapian.TermGenerator.
2958
2959* SimpleSearch now uses Xapian.QueryParser.
2960
2961* New SimpleExpand example.
2962
2963* Document explicitly how STEM_SOME constants are currently wrapped.
2964
2965* Update GetTermName() reference in documentation to GetTerm().
2966
2967* SmokeTest.cs: Update comment about Portable.NET bug - the bug is fixed in
2968  their CVS repo, and the fix should be in their 0.8.2 release.
2969
2970Java:
2971
2972* `configure --help' documented that environmental variable JNI_INCLUDE_DIR was
2973  looked at, but in fact its value was read but ignored.  We now use it as the
2974  first place to look for jni.h.
2975
2976* configure will now automatically add an extra "-I" for the
2977  linux/solaris/win32 subdirectory which Sun's JDK requires.
2978
2979* Document JAVA_HOME and JDK_HOME in ./configure --help and mark them as
2980  "precious" so their values are preserved for when configure is automatically
2981  rerun.
2982
2983PHP:
2984
2985* Enquire::get_mset(first, maxitems, omrset) now works for PHP5.
2986
2987* The PHP examples have been rewritten to be clearer and to make use of the
2988  new XapianTermGenerator class.
2989
2990Python:
2991
2992* Python examples now use xapian.QueryParser and xapian.TermGenerator.
2993
2994* Add support for prefix-restricted pythonic allterms iterators.
2995
2996* Update documentation in a couple of places to refer to updated replacements
2997  for MSetIterator.
2998
2999* Change testsuite output to be more vim-friendly (vim should be able to jump
3000  to the right lines now).
3001
3002* __str__ on Xapian::Error now includes extra information in some cases (the
3003  error_string and context, if they are set).
3004
3005* python/smoketest.py: Eliminate uses of the legacy sequence API.
3006
3007* python/pythontest.py: The legacy sequence API is only supported for Python
3008  2.3 and later, so don't run tests for it when running under Python 2.2.
3009
3010* We now generate and install xapian.pyo as well as xapian.pyc.
3011
3012Ruby:
3013
3014* The Ruby examples now use the Xapian::QueryParser and Xapian::TermGenerator
3015  classes.
3016
3017* Add missing rename for the C++ TermGenerator::set_document() method so it can
3018  be used as "tg.document = doc" in Ruby.
3019
3020* Fixed compilation on Mac OS X and warning from GCC on 32-bit Linux platforms.
3021
3022Tcl:
3023
3024* tcl8/docs/examples/simpleexpand.tcl: New example to demonstrate relevance
3025  feedback, based on C++ simpleexpand.cc.
3026
3027* tcl8/docs/example/simpleindex.tcl: New simpler example making use of the
3028  TermGenerator class.
3029
3030* tcl8/docs/example/simplesearch.tcl: New simpler example making use of the
3031  QueryParser class.
3032
3033* tcl8/docs/bindings.html: Document how constants are wrapped.
3034
3035* Update smoketest and examples to require version 1.0.0 - previously this
3036  required 0.9.6, which failed since TCL doesn't accept differing major
3037  version numbers.
3038
3039* pkgIndex.tcl is now generated by configure.
3040
3041Packaging:
3042
3043* The required automake version has been lowered to 1.8.3, so RPMs can now be
3044  built on RHEL 4 and SLES 9.
3045
3046Xapian-bindings 1.0.0 (2007-05-17):
3047
3048Documentation:
3049
3050* Document Unicode support for each language.
3051
3052* Assorted minor improvements and typo fixes.
3053
3054General:
3055
3056* Add wrappers for ExpandDecider, and Enquire::get_eset() variants which use
3057  it, for languages where SWIG supports directors.
3058
3059* Wrap new features: TermGenerator, ValueRangeProcessor hierarchy, the
3060  OP_VALUE_RANGE query operator, the new overloaded form of parse_query, which
3061  allows the "default_prefix" argument to be supplied, QueryParser flags
3062  FLAG_PURE_NOT and FLAG_PARTIAL.
3063
3064* Deprecated Xapian::Stem's stem_word() method in favour of apply().
3065
3066* Remove wrappers for deprecated features removed from the C++ API (see
3067  docs/deprecation.html in xapian-core for full details and upgrade
3068  information).
3069
3070* Deprecate ESetIterator::get_termname() in favour of ESetIterator::get_term().
3071
3072* QueryParserError is now a real error, so remove special handling for "const
3073  char *" exceptions.
3074
3075* Use a stamp file in "make" rules with multiple targets so that parallel
3076  make works.
3077
3078* configure: Now quotes $PYTHON, etc so that you can specify a program with
3079  arguments.
3080
3081* configure: If the user specifies a program which doesn't exist (e.g.
3082  PYTHON=/opt/bin/ptyhon) don't autoprobe after failing to find it.
3083
3084* configure: Disable probes for f77, gcj, and rc completely by preventing
3085  the probe code from even appearing in configure - this reduces the size of
3086  configure by 28% and should speed it up significantly.
3087
3088* configure: If the version check against the xapian-core version detects a
3089  mismatch, we now issue a warning rather than a hard error since if you're
3090  careful this can work.  The warning is issued late on in configure, so it's
3091  harder for the user to miss.
3092
3093* configure: The --with-swig option has been removed.  It no longer has a
3094  purpose as we now ship the files which are generated by SWIG.
3095
3096Portability:
3097
3098* The PHP bindings can now be built with MSVC for Microsoft Windows.
3099
3100CSharp:
3101
3102* When using Mono 1.2, we must build with gmcs (the C# 2.0 compiler) rather
3103  than mcs to avoid segmentation faults at runtime due to unimplemented
3104  features in mcs.  Document this, and update configure to prefer gmcs.
3105
3106* The return type of MatchDecider::operator() is now `bool' rather than `int'
3107  (in line with the same change in the C++ API).
3108
3109* Xapian.Stem.StemWord() deprecated in favour of Xapian.Stem.Apply().
3110
3111Java:
3112
3113* The Java bindings have been updated to use C++ replacements for deprecated
3114  methods, so they still build.  The Java wrappers still provide the old
3115  deprecated names for now though.  The longer term plan is to replace the
3116  hand-written JNI with SWIG generated wrappers (work has now begun on this)
3117  which is likely to require some API changes, and it seems more sensible to
3118  make any changes to align with C++ API changes at the same time.
3119
3120* Enquire.getQuery() is implemented entirely in Java, so strip out the unused
3121  MyQuery mechanism, and so fix a memory link which it caused (bug#105).
3122
3123PHP:
3124
3125* Fix undefined behaviour in get_matching_terms().
3126
3127* Document the (existing) renaming of methods which are PHP reserved words
3128  (empty() to is_empty() and clone() to clone_object()).
3129
3130* Deprecated Xapian::Stem's stem_word() method in favour of apply().
3131
3132Python:
3133
3134* The Python bindings now throw exceptions as classes with a hierarchy which
3135  mirrors that of the C++ Xapian::Error and its subclasses.  The xapian.Error
3136  base class inherits from the standard Python Exception class.
3137
3138* All Python methods which accept strings can now be passed either a unicode
3139  object or a simple string.  Strings are returned as simple strings: unicode
3140  input will be returned as utf-8 encoded output.  The documentation now
3141  contains a "Unicode" section.
3142
3143* The Python bindings should now be usable more efficiently from threaded
3144  Python applications since we now use SWIG's -threads option when generating
3145  them, so that the GIL is released during long-running Xapian operations
3146  (bug#137).
3147
3148* Most classes, methods, functions, etc now have docstrings which are either
3149  automatically extracted from the C++ documentation comments, or overridden by
3150  more appropriate versions.
3151
3152* Most of the Pythonic iterators now return an object instead of a sequence,
3153  which means they now lazily fetch the information which previously had to be
3154  fetched to put it in the sequence.  The old sequence API is supported for
3155  compatibility, but is scheduled for removal in Xapian 1.1.0.
3156
3157* Those Python iterators which have skip_to() methods now return the item
3158  skipped to, and next() will return the following item.  Previously, they
3159  returned None, and next() returned the item skipped to.  Several bugs in the
3160  skip_to() wrappers were fixed.
3161
3162* Because of the lazy access, some objects returned by iterators will raise
3163  an error if the lazy evaluation happens after the iterator has moved on
3164  (since the underlying Xapian API doesn't allow efficient access to the
3165  information in this situation).  The exact semantics are defined in the
3166  docstrings for each iterator.
3167
3168* Those Pythonic iterators which return only a list of terms now return
3169  simple strings, instead of a sequence or an object containing the term.  This
3170  is an incompatible change with earlier releases.  The affected iterators are
3171  Enquire.matching_terms, Query.__iter__, QueryParser.stoplist and
3172  QueryParser.unstemlist.
3173
3174* The contents of an MSet can now be iterated in the standard Python way.
3175  The iteration will return MSetItem objects.  The __contains__ and __getitem__
3176  methods are also implemented, allowing the "in" and [] operators to work.
3177  MSet.__getitem__ is a synonym for MSet.get_hit.
3178
3179* MSet.get_hit() now returns an MSetItem object instead of an MSetIterator,
3180  so that lazy access to its attributes is supported.  MSetItem has some
3181  deprecated methods which mimic the MSetIterator interface to allow old code
3182  to work without modification until release 1.1.0.
3183
3184* MSetItem provides access to the collapse_key and collapse_count, which
3185  weren't accessible from the sequence returned by the iterators before this
3186  release.
3187
3188* Out-of-range access to MSets will now raise an IndexError - it used to
3189  cause undefined behaviour (usually a crash).
3190
3191* The Python testsuite is now much more extensive, and supports colour output
3192  and verbosity levels, much like the C++ testsuite.  Tests of deprecated
3193  features are separated out, so that they can easily be removed when the
3194  features are removed.  The Python tests currently focus mainly on Python
3195  specific iterators and related functionality - general Xapian behaviour is
3196  tested by the C++ testsuite.
3197
3198* The pure Python code in the bindings now uses new-style classes, since we
3199  have required Python >= 2.2 since Xapian release 0.9.9.
3200
3201* Enquire.get_matching_terms is now deprecated - use Enquire.matching_terms
3202  instead.
3203
3204* The get_description() method which many classes support has been deprecated
3205  in favour of new more pythonic __str__ methods, so that the str() builtin can
3206  be used.  get_description() is deprecated and scheduled for removal in 1.1.0.
3207
3208Ruby:
3209
3210* We no longer regard the Ruby bindings as "beta quality", so remove the
3211  warning from their documentation.
3212
3213* Document that that C++ operator() becomes the method "call" in Ruby.
3214
3215* Don't read termfreq in safe wrapper for Document::termlist_begin().  Don't
3216  read wdf in safe wrapper for Database::allterms_begin() (bug#133).
3217
3218Tcl:
3219
3220* Deprecated Xapian::Stem's stem_word() method in favour of apply().
3221
3222Xapian-bindings 0.9.10.1 (2007-04-04):
3223
3224PHP:
3225
3226* Fix PHP5 class wrapper generation in a few cases for overloaded methods with
3227  default parameters.  The most notable case was a missing Query constructor
3228  which meant that QueryParser was unusable.
3229
3230* Fix compilation of the PHP4 bindings with ZTS-enabled versions of PHP
3231  (which mostly seems to mean the MS Windows version).
3232
3233* Fix PHP5 crash on exit with ZTS-enabled versions of PHP (which mostly
3234  seems to mean the MS Windows version).
3235
3236* Add note to the documentation that PHP examples are written for CLI version
3237  of PHP, but that the bindings work with any version.
3238
3239* Add check to all PHP examples that they are being run under a CLI version of
3240  PHP.
3241
3242Python:
3243
3244* simpleexpand.py: Print each term's expand weight as a floating point value,
3245  not an integer.
3246
3247Ruby:
3248
3249* INSTALL: document how to install Xapian's Ruby bindings in your home
3250  directory.
3251
3252Xapian-bindings 0.9.10 (2007-03-04):
3253
3254Java:
3255
3256* Under Mac OS X, automatically look in the standard location for jni.h,
3257  and automatically rename the JNI library we build to ".jnilib", as is
3258  required by the OS X JVM.
3259
3260* java/README: Note success with Sun's JDK 1.5.0_06-b05, plus the requirement
3261  to add the linux header directory to the include path when using this JDK.
3262
3263* Add missing default constructor for RSet class - it's not much use without
3264  this!
3265
3266* Fix Enquire.getESet() to actually work.
3267
3268* Fix bug in ESetIterator.hasNext().
3269
3270* Fix MatchDecider and ExpandDecider so subclassing in Java actually works.
3271
3272* Fix memory leak with some JVMs in the "Query from array" constructor.
3273
3274* Fix memory leak in Enquire.setQuery().
3275
3276* SmokeTest.java: Add regression tests for RSet default constructor,
3277  Enquire.getESet(), ESetIterator.hasNext(), MatchDecider, ExpandDecider.
3278  Add feature tests for Enquire.getQuery(), and to make sure we get passed
3279  the right document in a java subclass of MatchDecider.
3280
3281* configure: Look for jni.h in $JAVA_HOME/include and $JDK_HOME/include if the
3282  respective variables are set.
3283
3284PHP:
3285
3286* Update the documentation to fix out-of-date information and document the
3287  differences between the PHP4 and PHP5 wrappers.
3288
3289* Update the examples to use the new Object Oriented API, and provide versions
3290  for both PHP4 and PHP5.
3291
3292* Add a "simpleexpand" example.
3293
3294* For PHP4, Xapian::DB_CREATE_OR_OPEN should be wrapped as
3295  Xapian_DB_CREATE_OR_OPEN not DB_CREATE_OR_OPEN, so wrap it with the
3296  new name, but keep the old name for now for backward compatibility.
3297
3298* configure: Try `$(PHP_CONFIG) --php-binary` when looking for a PHP
3299  interpreter - this works with PHP5.
3300
3301* configure: Remove the sanity check for PHP_EXTENSION_DIR added in Xapian
3302  0.9.8 - if Xapian is the first PHP extension to be installed, the extension
3303  directory may not exist and "make install" will create it.
3304
3305* configure: If zend.h isn't found and configure was run with "--with-php",
3306  exit with an error rather than automatically disabling PHP support.
3307
3308Python:
3309
3310* Fix a problem which preventing building for Python 2.5 on 64 bit platforms.
3311
3312Packaging:
3313
3314* RPMs: Add support for passing "--without python" to rpmbuild.  Document the
3315  various "--without" options in a comment at the start of the .spec file.
3316
3317* RPMs: Remove "." from the end of the Summary.
3318
3319Xapian-bindings 0.9.9 (2006-11-09):
3320
3321Documentation:
3322
3323* Ship our custom INSTALL file rather than the generic one from autoconf which
3324  we've accidentally been shipping instead since 0.9.5.
3325
3326General:
3327
3328* Wrap Flint::open() and Flint::open_writable().
3329
3330* configure: Require SWIG 1.3.30 (1.3.30 isn't out yet, but 1.3.30rc1 is
3331  suitable).
3332
3333Python:
3334
3335* Generate the bindings using SWIG 1.3.30rc1 which fixes a build error on 64
3336  bit platforms with Python 2.5.
3337
3338Packaging:
3339
3340* RPMs: Prevent binaries getting an rpath for /usr/lib64 on FC6.
3341
3342* RPMs: The Python bindings now require Python >= 2.2.
3343
3344Portability:
3345
3346* configure: Remove unnecessary backticks from tclsh version test.
3347
3348Xapian-bindings 0.9.8 (2006-11-02):
3349
3350General:
3351
3352* Wrap the "prog" form of Remote::open() (which is suitable for general purpose
3353  use as of 0.9.7) and the Remote::open_writable() methods (new in 0.9.7).
3354
3355* The C++ method QueryParser::parse_query() current throws "std:string"
3356  exceptions if there's a parse error.  Previously the bindings didn't catch
3357  these.  Now we catch them and handle them as if they were exceptions of
3358  type Xapian::QueryParserError (in anticipation of this changing in
3359  xapian-core).  Added testcases for this for PHP, Python, and C#.
3360
3361* configure: Note that SWIG is only useful for Xapian developers in --help
3362  output.
3363
3364* configure: If we failed to find any languages to build for, give a more
3365  helpful message.
3366
3367CSharp:
3368
3369* SmokeTest.cs: Fix warning about unused variable in OP_ELITE_SET check.
3370
3371Java:
3372
3373* configure: Fix check for jni.h in /usr/lib/jvm/java-gcj/include to actually
3374  work rather than using the cached failure of the first jni.h check.
3375
3376* SmokeTest.java: Fix check for value of Query.OP_ELITE_SET.
3377
3378* SmokeTest.java: Avoid gcj "set but not used" warning.
3379
3380PHP:
3381
3382* configure: Sanity check PHP_EXTENSION_DIR and PHP_INC.
3383
3384* smoketest4.php,smoketest5.php: Check the exception message given by the
3385  DocNotFoundError testcase.
3386
3387Python:
3388
3389* Drop support for Python 2.1.
3390
3391Xapian-bindings 0.9.7 (2006-10-10):
3392
3393Documentation:
3394
3395* NEWS: Fix the recent headings which said "Xapian-core" to say
3396  "Xapian-bindings".
3397
3398General:
3399
3400* Specify required automake version in the call to AM_INIT_AUTOMAKE in
3401  configure.ac.
3402
3403* If we're building with GCC 4.0 or higher, pass -fvisibility=hidden when
3404  compiling SWIG generated code which makes the compiled modules a few percent
3405  smaller and perhaps a little faster.
3406
3407* Wrap the newly implemented transaction API.
3408
3409* configure: Use "-fno-strict-aliasing" when compiling all the SWIG bindings
3410  (this option was supposed to be used to compile the Python bindings from
3411  0.9.3 onwards, but this wasn't actually working correctly).
3412
3413* Use CVS snapshot of SWIG to generate files (fixes bugs #83, #85).
3414
3415* In maintainer-mode, "make clean" now removes the SWIG generated files
3416  which would otherwise only be removed on "make maintainer-clean".
3417
3418CSharp:
3419
3420* Xapian::MatchDecider can now be subclassed in C#.
3421
3422* The value of OP_ELITE_SET was wrong in C# which caused an error if you tried
3423  to use it.  This has been fixed and a regression test added.
3424
3425* SmokeTest.cs: Added exception handling test.
3426
3427Java:
3428
3429* Correct two misuses of delete to delete[].  Fixes bug#78.
3430
3431* configure: We need to look for jni.h in /usr/lib/jvm/java-gcj/include on some
3432  Debian and Ubuntu boxes at least.
3433
3434PHP:
3435
3436* We now generate class wrappers for PHP5.
3437
3438* We now generate proxy classes for PHP4, which is an incompatible change
3439  from previous versions of xapian-bindings.  A perl script to upgrade
3440  your scripts is included.
3441
3442* smoketest.php:
3443
3444  + Now that we're throwing PHP exceptions with PHP5 we need separate versions
3445    of the exception handling test for PHP4 and PHP5.  Fixes bug#76.
3446
3447  + Rely on xapian.php to load the extension module for us.
3448
3449  + Fix error messages to show PHP code, not Python code.
3450
3451* When running smoketest.php, pass the "-q" option to php, which suppresses
3452  HTTP header output for PHP < 4.3 and is ignored for compatibility by more
3453  recent versions of PHP.
3454
3455* configure: Fix typo - PHP_tried should be PHP_found.  This might have caused
3456  the PHP interpreter not to be found in some cases when it was actually
3457  available, but it's only used to run the smoketest not for building the
3458  bindings.
3459
3460Python:
3461
3462* configure: Fixed check for PYTHON_PATHSEP to use $PYTHON rather than python,
3463  and also report the check and its result to the user.
3464
3465* python/Makefile.am: xapian.pyc can't be generated until _xapian.la has been
3466  built, so add an explicit dependency so that this works reliably in parallel
3467  builds.  Fixes bug#77.
3468
3469* In examples and documentation, don't call the MatchDecider class/object
3470  "matcher", since we use the term "matcher" to mean something else in
3471  the library documentation.
3472
3473* smoketest.py:
3474
3475  + Add test of exception handling.
3476
3477  + Add test that MatchDecider can be subclassed successfully.
3478
3479* Wrap TermIterator::skip_to() so that it can be used from the TermIter
3480  pythonic iterator class.
3481
3482Ruby:
3483
3484* Xapian::MatchDecider can now be subclassed in Ruby.
3485
3486* configure: Look for ruby interpreter as "ruby1.8" since it's called that
3487  (with no "ruby" alias) on Ubuntu dapper at least.
3488
3489* simplesearch.rb: Lowercase terms before stemming.  "First ten" is inaccurate
3490  since we may have less than 10 matches, so say "1-<N>" instead.
3491
3492* simplematchdecider.rb: Implemented.
3493
3494Tcl:
3495
3496* Implement saner exception handling for Tcl and document it.
3497
3498* smoketest.tcl:
3499
3500  + Add check that xapian::Query_OP_ELITE_SET has the right value.
3501
3502  + Rework how the smoketest gets run to eliminate special code for using
3503    uninstalled bindings from smoketest.tcl itself.  This allows the smoketest
3504    to be run using installed bindings, and also makes it a better example
3505    program.
3506
3507  + Add test for exception handling.
3508
3509  + Send error messages to stderr.
3510
3511  + Add comment about Tcl storing zero bytes as \xc0\x80.
3512
3513* simpleindex.tcl,simplesearch.tcl: Print $errorCode in the exception handler.
3514
3515* For SVN snapshots, remove any _svn6789 suffix from the Xapian version number
3516  used for the Tcl bindings.
3517
3518Xapian-bindings 0.9.6 (2006-05-15):
3519
3520Documentation:
3521
3522* INSTALL: Add section describing how to install without root access.
3523
3524General:
3525
3526* Updated to reflect the renaming of Xapian::xapian_version_string and
3527  companions to Xapian::version_string.
3528
3529* Wrap optional length parameter to Enquire::set_query().
3530
3531* In PHP, Python, and Tcl bindings, rename get_document_id to get_docid for
3532  consistency.  Keep get_document_id as an alias for now for backward
3533  compatibility.
3534
3535* Fixed ESet::empty() to return bool instead of Xapian::termcount (this was
3536  probably a largely harmless error).
3537
3538* Stop SWIG from adding exception handling wrappers to the calls which return
3539  version strings, since they can't throw exceptions.
3540
3541* xapian.i: Removed superfluous "const" from return type "docid" which is just
3542  a typedef for an unsigned integer type.
3543
3544* configure: Add some missing "checking ..." messages so the user has more idea
3545  what is going on.
3546
3547* Language specific util.i files can now define
3548  XAPIAN_TERMITERATOR_PAIR_OUTPUT_TYPEMAP and
3549  XAPIAN_MIXED_VECTOR_QUERY_INPUT_TYPEMAP to indicate which optional typemaps
3550  are provided for each language.  This avoids needing to keep this
3551  information in two different places.
3552
3553* xapian.i: Uncomment commented-out parameter names and fix duplicate
3554  parameter names (for the benefit of bindings which use the parameter names,
3555  like the OO PHP5 patch for SWIG I'm working on...)
3556
3557Portability:
3558
3559* configure: Fix warning flags passed for Intel C++ compiler.
3560
3561CSharp:
3562
3563* We now support building with Portable.NET.
3564
3565* Note that the passing of strings from C# into Xapian and back isn't currently
3566  zero byte safe.  If you try to handle string containing zero bytes, you'll
3567  find they get truncated at the zero byte.
3568
3569* C# bindings now build and pass tests when srcdir != builddir.
3570
3571* In configure.ac, the "#" in "C#" seems to sometimes confuse autoconf so
3572  always say "CSharp" instead.
3573
3574* Not all machines are set up to run compiled C# programs when invoked
3575  directly, so get configure to check if we can, and otherwise see if using
3576  mono or ilrun works.  If not, just skip the C# tests.
3577
3578* configure: If "mcs" isn't found, we now look for a CSharp compiler as "gmcs"
3579  (alternative name for "mcs"), "cscc" (Portable.NET), and then "csc"
3580  (Microsoft, but we check it isn't the unrelated Chicken csc program.)
3581
3582* Move the C# specific %rename list to csharp/util.i.
3583
3584* Store the strong name key in the key container so we reuse it for later
3585  builds.
3586
3587* Wrap the version functions as more sensible names and document them (and
3588  continue to provide the older undocumented names for now just in case anyone
3589  was using them.)
3590
3591* Set the version of XapianSharp.dll correctly when building a snapshot from
3592  SVN and set informational attributes (which e.g. MS Windows Explorer shows.)
3593
3594* SmokeTest.cs: Add test of version functions.
3595
3596Guile:
3597
3598* The Guile bindings don't work and aren't being actively worked on, so we're
3599  no longer including them in the distributed tarball to avoid disappointing
3600  users who notice a "guile" subdirectory.  It also makes the download smaller.
3601
3602Java:
3603
3604* Simplify (and improve portability of) run-java-test by using "libtool
3605  --mode=execute"'s -dlopen option.
3606
3607* Need to make sure "built" subdirectory exists or building from clean fails.
3608
3609* Fix "make check" to work when srcdir != builddir.
3610
3611PHP:
3612
3613* Using "php -c myphp.ini" still loads the system php.ini (at least for PHP
3614  4.3.10), so use "php -n" and then set the options we specifically want using
3615  "-d".
3616
3617* Fix the smoketest invocation to work better when srcdir != builddir.
3618
3619* Look for PHP interpreter first in prefix given by "php-config --prefix".
3620
3621* Fix SWIG_RuntimeError to be handled as an exception in PHP5.
3622
3623* simplesearch.php: MAX_PROB_TERM_LENGTH isn't used here so remove it.
3624
3625* smoketest.php:
3626
3627  + Add test for version reporting functions
3628
3629  + If a test fails, say which one to aid debugging.
3630
3631  + Added simple test that zero-bytes are handled correctly when passing
3632    strings to and from Xapian.
3633
3634Python:
3635
3636* README: Note that Python bindings have been built with MSVC.
3637
3638* Install xapian.py and xapian.pyc as _DATA not _SCRIPTS because we don't want
3639  to make them executable (they don't have a #! line).
3640
3641* simplematchdecider.py: Rename confusingly-named "mymatcher" to
3642  "mymatchdecider".  Add description of what this example does.
3643
3644* simpleexpand.py: Don't define MAX_PROB_TERM_LENGTH as it isn't used.
3645
3646* smoketest.py: Added simple test that zero-bytes are handled when passing
3647  strings to and from Xapian.
3648
3649Ruby:
3650
3651* Added new Ruby bindings from Paul Legato.
3652
3653Tcl:
3654
3655* smoketest.tcl:
3656
3657  + Add test for version reporting functions
3658
3659  + If a test fails, say which one to aid debugging.
3660
3661  + Added simple test that zero-bytes are handled correctly when passing
3662    strings to and from Xapian.
3663
3664Xapian-bindings 0.9.5 (2006-04-08):
3665
3666Documentation:
3667
3668* HACKING,README: Split off HACKING to contain information which is only
3669  relevant to those wishing to modify the bindings.
3670
3671General:
3672
3673* SWIG-based bindings are now built with SWIG 1.3.29.
3674
3675* configure: Report which languages we're building bindings for just before
3676  configure finishes.
3677
3678* xapian.i: Make the stub definitions for disabled backends static.
3679
3680* configure: Don't quote $PHP in AC_PATH_PROGS to avoid "checking for ... no"
3681  message.
3682
3683* xapian.i: Wrap new method Enquire::set_sort_by_relevance_then_value().
3684
3685Packaging:
3686
3687* RPMs: xapian-bindings.spec.in: Use "%{_libdir}" instead of "/usr/lib" for
3688  Python bindings to support 64 bit systems.
3689
3690* RPMs: Package the C# bindings.
3691
3692Portability:
3693
3694* java/run-java-test: Fix to work on platforms where LD_LIBRARY_PATH has a
3695  different name.
3696
3697* configure: Detect Intel's C++ compiler and set suitable warning flags to
3698  avoid noise from compiling generated code.
3699
3700CSharp:
3701
3702* Rename Database::GetDoccount() to Database::GetDocCount() for consistency.
3703
3704Guile:
3705
3706* configure: Disable --with-guile since Guile support doesn't currently work.
3707
3708Java:
3709
3710* Override deprecation warnings for Xapian methods/functions/etc.
3711
3712* SmokeTest.java: Write a helpful diagnostic to stderr if a check fails so we
3713  have some idea what went wrong!
3714
3715* Rework how we include headers to get hash_map to avoid compiler warnings
3716  since it's usually not in the std namespace nowadays.
3717
3718* Previously the "all" target also ran the "install" target, but this has
3719  proved very problematic, so change "make check" to use the uninstalled JNI
3720  glue library, and update the instructions to say that "make install" is now
3721  required.
3722
3723* Use JAVA_PATHSEP when specifying the classpath for compiling .java files to
3724  .class files.
3725
3726* README: Note that some platforms need "-pthread" or similar flags.
3727
3728* Add a new Query constructor wrapper which take an OP_xxx and an array of
3729  Query objects.
3730
3731* Compiling a .java file to a .class file now deletes the .jar file to ensure
3732  it gets updated.
3733
3734PHP:
3735
3736* php -n avoids reading any php.ini, but the compiled in default may be to
3737  enable the dubiously named "safe_mode" which prevents dl() being used so
3738  "make check" fails.  So instead provide a very simple php.ini which turns off
3739  safe_mode and makes sure enable_dl is on.
3740
3741* Fix handling of bool parameters when resolving overloaded methods and/or
3742  default arguments.  This fixes Enquire_sort_by_value() to work when the
3743  second argument is specified.  Added regression test for this case.
3744
3745* simpleindex.php: Lowercase terms before stemming.  Fixes bug#73.
3746
3747* Fix segmentation fault when PHP "Null" is passed where C++ wants an object
3748  passed by reference.  Fixes bug#74.
3749
3750* simpleindex.php: Flushing after every call to WritableDatabase_add_document
3751  isn't required and will kill performance, so stop doing it.  Fixes bug#75.
3752
3753Python:
3754
3755* Use the fairly new "swig -O" option for the "modern" python bindings as
3756  it generates a smaller glue library and runs faster.  Some of the features
3757  enabled also work on python 2.1, so enable these for the "olde" bindings.
3758
3759* configure: Catch the case where the user has python installed but not the
3760  module "distutils.sysconfig" and explain that they probably need to install a
3761  python-dev or python-devel package.
3762
3763* "make check" now works in VPATH builds.
3764
3765* smoketest.py: If a check fails, write a diagnostic message to stderr so we
3766  know which check it was!
3767
3768* smoketest.py: catch Exception objects and print them.
3769
3770* smoketest.py: Add feature tests for the various pythonic iterator
3771  wrappers
3772
3773* python/docs/bindings.html: Document the Pythonic iterators.
3774
3775* Fix TermIter not to try to read termfreqs or positions if they aren't
3776  meaningful for the current TermIter.
3777
3778Xapian-bindings 0.9.4 (2006-02-21):
3779
3780Documentation:
3781
3782* COPYING: Updated FSF address.
3783
3784General:
3785
3786* Wrap Stopper::get_description().
3787
3788* Wrap xapian_version_string() and related functions.
3789
3790Portability:
3791
3792* If we're overriding MACOSX_DEPLOYMENT_TARGET then override it for commands
3793  run from "make" too.
3794
3795PHP:
3796
3797* Fix so that generated code compiles with ZTS-enabled PHP (which is the
3798  default on Windows).
3799
3800Python:
3801
3802* smoketest.py: Test wrapping of xapian_version_string() and related functions.
3803
3804Xapian-bindings 0.9.3 (2006-02-16):
3805
3806Documentation:
3807
3808* README: Updated and expanded (now covers supported platforms, and lists
3809  criteria which bindings for an additional language need to fulfil before
3810  we're likely to accept them).
3811
3812* INSTALL: Updated and improved.
3813
3814* TODO: Move C#-specific TODO to top level so we can track to-do items for
3815  all languages.
3816
3817General:
3818
3819* configure: Change how the user selects which bindings to build.  If no
3820  --with* arguments are passed, then we default to building bindings we detect
3821  the required tools for (as before).  But instead of requiring the user to
3822  deselect all bindings they don't actually want, we now let them select the
3823  bindings they do want.  So "./configure --with-python" will only build the
3824  python bindings (and will fail if the required tools aren't installed).
3825
3826* Every wrapped method contains exception handling code.  The bulk of this
3827  is now factored out into a single helper function, which cuts the compile
3828  time by around a factor of 3 and halves the size of the stripped library
3829  (figures are for Tcl on x86_64).
3830
3831* configure: Rework how XAPIAN_CXXFLAGS is passed through so that the user can
3832  override CXXFLAGS in the make invocation like so: make CXXFLAGS=-g
3833
3834* configure: Bump required SWIG version to 1.3.28 and drop the special
3835  requirement for 1.3.22 for PHP (hurrah!)  Note that you don't need
3836  SWIG to install the bindings - SWIG is run by the Xapian developers
3837  so these updated requirements are only relevant if you want to modify
3838  the bindings.
3839
3840* Eliminate separate Makefile in each examples subdirectory, which makes the
3841  build system simpler, smaller, and a little faster.
3842
3843* xapian.i: Include default constructors for all classes so that SWIG knows it
3844  doesn't have to use SwigValueWrapper for them, which makes the bindings code
3845  a bit smaller and faster.  Also stop SWIG using SwigValueWrapper for
3846  std::pair<...>.
3847
3848* configure: Document special environmental variables which configure
3849  recognises.  Enhance handling of environmental variables so you can
3850  e.g. './configure PYTHON=python23' (previously you had to give a full
3851  path in such environmental variables or they would be ignored.
3852
3853Packaging:
3854
3855* RPM spec file:
3856
3857  + Automatically detect the python version.
3858
3859  + Rename "php4" references to "php".
3860
3861  + Automatically detect the PHP extension directory.
3862
3863  + Relax Tcl requirement to >= 8.1, since that's what we actually require.
3864
3865  + Add support for "--without php" and --without tcl8" options to rpmbuild.
3866
3867Portability:
3868
3869* configure: On Mac OS X, ensure MACOSX_DEPLOYMENT_TARGET is set to at least
3870  10.3.  This is required to link the bindings, and it doesn't seem to be
3871  possible to link them on 10.1 or 10.2 anyway.
3872
3873* configure: Add -lstdc++ to XAPIAN_LIBS if we're using GCC.  OpenBSD needs it
3874  to be explicitly specified and libtool correctly handles platforms where it
3875  would have been implicitly linked with anyway.
3876
3877* Try to enable PHP bindings to build out of the box on cygwin (needs testing).
3878
3879* configure: Add missing ";;" on the last alternative in some case statements.
3880
3881* Only pass -no-undefined on platforms where it is required in order to link a
3882  shared library at all (it causes problems on Mac OS X in some cases).
3883
3884CSharp:
3885
3886* This release includes a lot of improvements for the C# bindings.  They're
3887  now pretty much on a par with the other language bindings.
3888
3889* Added documentation and examples.
3890
3891* Method and function names are now renamed to match C# conventions
3892  (e.g. from get_description() to GetDescription()).  This is obviously an
3893  incompatible change, but the C# bindings haven't been suitable for real world
3894  use prior to this release.
3895
3896* Optional parameters are now wrapped so no longer need be specified
3897  explicitly.
3898
3899* Overload ++ and -- for iterators.
3900
3901* Overload == and != for iterators.  Now comparisons with the end iterator
3902  work as expected, and SmokeTest passes.
3903
3904* SmokeTest now reports exceptions verbosely.
3905
3906* Xapian::InMemory::open() is now wrapped as Xapian.InMemory.Open(), and
3907  similarly for other database factory functions.
3908
3909* Heed compatibility warnings from mcs and use different forms for
3910  command-line switches to the C# compiler (presumably for compatibility with
3911  Microsoft's compiler, though the warnings don't actually say that
3912  explicitly).
3913
3914Guile:
3915
3916* Rewrote guile/util.i.  The old version caused SWIG warnings and wasn't
3917  zero-byte safe.  The guile bindings are still a long way from actually
3918  working though.
3919
3920Java:
3921
3922* Wrap optional second parameter (query length) to Enquire::set_query().
3923
3924* configure now probes for the Java path separator, which we then use to
3925  separate entries in the java -classpath command line option so we can
3926  build on platforms where it isn't ":".
3927
3928* SmokeTest.java: Expand to test more features.
3929
3930* java/README:
3931
3932  + Note that the bindings work with the Eclipse javac and GIJ 4.0.1.
3933
3934  + Add note about how wrapped methods are named.
3935
3936* Query.java: OP_* code 9 no longer exists, so add it to those rejected by the
3937  validity check.
3938
3939* Query.java: Comment out unused code.
3940
3941* Fixed memory leak in Query-from-array-of-strings constructor.
3942
3943* Eliminate the "_errormap" hashmap - we don't need to use RTTI here, since
3944  Xapian::Error subclasses can tell you their typename directly (using
3945  get_type()).
3946
3947PHP:
3948
3949* Some problems with overloaded methods in PHP have been fixed by a major
3950  overhaul of SWIG's PHP support.  So we no longer rename such methods
3951  for PHP.  This is an incompatible change, but it's easy to update your
3952  PHP scripts (just change new_Query_from_term_pair -> new_Query, etc).
3953
3954* Previously the documentation and simpleindex.php suggested that you
3955  should call delete_CLASS().  This was incorrect and resulted in a
3956  double-free() in some cases, so we've fixed the documentation and
3957  examples and eliminated the delete_CLASS() wrappers.  This is another
3958  incompatible change, but again easy to update for.
3959
3960* We now support PHP5 as well as PHP4, so the configure test now looks
3961  for either and all references to "PHP4" or "php4" have been adjusted.
3962
3963* PHP5 supports exceptions, so throw exceptions under PHP5.  For PHP4
3964  we now handle DocNotFoundError and FeatureUnavailableError by issuing a
3965  warning and making the method return "Null".  This isn't ideal, but it's
3966  the best we can easily do without proper exceptions.
3967
3968* For the smoketest, instead of using "$(PHP) -c $(srcdir)" and having an
3969  empty php.ini in srcdir (which we were failing to distribute anyway), use
3970  "$(PHP) -n" which tells PHP not to use any php.ini file.
3971
3972* Update PHP documentation to include new features.
3973
3974* Redo Xapian section in phpinfo() to look more like most other modules.
3975
3976* You can now construct a Query object from an array of strings or Query
3977  objects (or even a mixture).
3978
3979* PHP examples now give a more useful error message if a database can't be
3980  opened.
3981
3982* smoketest.php: Expanded the tests performed, including feature tests for
3983  the new Query-from-list constuctor.
3984
3985* simplesearch.php: Use newly wrapped Query-from-list constructor.
3986
3987* Use std::string::data() instead of c_str() as it may be more efficient for
3988  some STL implementations.
3989
3990* Enquire::get_matching_terms() now generates the PHP list directly from the
3991  TermIterator rather than constructing a temporary C++ std::list, which is
3992  faster and requires less temporary memory.
3993
3994Python:
3995
3996* The Python constructor xapian.Query(OP, LIST_OF_STRINGS [, PARAM]) works
3997  once again (it has been broken since 0.9.0).  Added a regression test to
3998  help keep this working.
3999
4000* Enhance the above constructor to accept any Python sequence (e.g. a tuple
4001  instead of a list).  Also the sequence can contain xapian.Query objects or
4002  strings or a mixture.  Documented these enhancements.
4003
4004* smoketest.py: Expanded the tests performed.
4005
4006* Convert C++ strings to python ones in a zero-byte clean way.
4007
4008* Added more error checking of the results of calls into the python
4009  interpreter.
4010
4011* If using GCC, compile the python bindings with -fno-strict-aliasing (python
4012  itself is compiled with this option to avoid problems and it appears we ought
4013  to use it too to avoid the risk of hitting the same problems, although I'm
4014  not aware of anyone actually encountering such problems).
4015
4016* When making xapian.pyc, "import _xapian;" before we "import xapian;" to
4017  avoid creating a broken xapian.pyc is the shared library can't be loaded for
4018  some reason.
4019
4020* Enquire::get_matching_terms() now generates the Python list directly from the
4021  TermIterator rather than constructing a temporary C++ std::list, which is
4022  faster and requires less temporary memory.
4023
4024Tcl:
4025
4026* Terms with a leading underscore now work (thanks to changes in SWIG).
4027
4028* Implement custom typemaps for Tcl, so that you can now construct a Query from
4029  a list of Query objects and/or strings, and Enquire::get_matching_terms is
4030  now wrapped.
4031
4032* simplesearch.tcl: Use the new Query from list constructor.
4033
4034* simplesearch.tcl: Fix to lowercase and stem query terms.
4035
4036* simpleindex.tcl: Tweak regex to not tokenise "foo--bar" as "foo-" and "bar".
4037
4038* simpleindex.tcl,simplesearch.tcl: Need explicit "xapian::" on constants.
4039
4040Xapian-bindings 0.9.2 (2005-07-15):
4041
4042General:
4043
4044* Added wrappers for new optional flags argument to QueryParser::parse_query().
4045
4046CSharp:
4047
4048* Enhance configure to check that "mcs" is actually GNU Mono mcs and not
4049  another tool with the same name.
4050
4051Java:
4052
4053* Include SmokeTest.java in the distribution so "make check" works.
4054
4055* Added success report for Sun java 1.4.1_01a.
4056
4057Python:
4058
4059* When converting a python list to vector<string> we know the number of elements
4060  so reserve that number in the vector.
4061
4062Xapian-bindings 0.9.1 (2005-06-06):
4063
4064General:
4065
4066* Releases are now created using libtool 1.5.18 and automake 1.9.5.
4067
4068Tcl:
4069
4070* Updated documentation to include information from Michael Schlenker about how
4071  to delete a database object such that the destructor gets called.
4072
4073Xapian-bindings 0.9.0 (2005-05-13):
4074
4075General:
4076
4077* Updated SWIG-based bindings to latest Xapian API
4078
4079* Improve support for building the bindings on MS Windows:
4080
4081  + Provide stub versions of any backend functions which are disabled in the
4082    library we're wrapping to avoid a link failure on MS Windows (where the
4083    remote backend is automatically disabled).  These stubs just throw
4084    Xapian::FeatureUnavailableError.
4085
4086  + Add -no-undefined to *_la_LDFLAGS.
4087
4088  + Use $(PATH_SEPARATOR) or Python's os.pathsep instead of ':' where
4089    appropriate.
4090
4091  + For python, paths for finding headers and installing libraries are now
4092    handled so they work on MS Windows; an extra static library needs to be
4093    linked in too.
4094
4095* Wrap the Muscat36 Database factory functions (easy to do now we have stubs
4096  for disabled backends).
4097
4098* Don't wrap MSet::max_size() as it's there for STL compatibility rather than
4099  being useful functionality.
4100
4101* configure: Fix all SWIG warnings and pass -Werror to SWIG so any which get
4102  introduced in future get fixed.
4103
4104* configure: Fix version test to allow for _svn6789 suffix which SVN snapshots
4105  have.
4106
4107* Generate SWIG bindings with SWIG 1.3.24 (except for PHP which we still use
4108  1.3.22 for as more recent versions don't work with methods with optional
4109  arguments - the arguments become non-optional!)
4110
4111Guile:
4112
4113* configure: Disable guile by default, as it needs more work.
4114
4115Java:
4116
4117* Updated to compile against 0.9.0 API.
4118
4119* Added missing make rule to build SmokeTestWrap.class to "make check" works.
4120
4121* Wrap optional parameters to Query(term) constructor.
4122
4123PHP4:
4124
4125* For PHP4, rename default Database constructor to Database_empty
4126  instead of suppressing the much more useful Database(const string &path)
4127  constructor.
4128
4129* Use a blank config file when running PHP4 tests to avoid problems
4130  when the bindings are already installed as an extension which is
4131  loaded automatically in the default config.
4132
4133* configure.ac: If configure can't find the PHP interpreter (as php4 or php),
4134  it probably just means it's not in PATH.  We only need it for running tests,
4135  so substitute a trivial shell script which just exits with code 77 so PHP
4136  tests are skipped (previously we substituted "missing" which caused the tests
4137  to fail).
4138
4139Python:
4140
4141* Added Python-style iterators ESetIter, TermIter, PostingIter, PositionIter,
4142  and ValueIter.
4143
4144* configure: If python is found, also check that Python.h exists (it may not be
4145  if the python-dev package (or similar) isn't installed).
4146
4147Xapian-bindings 0.8.5.1 (2005-02-23):
4148
4149General:
4150
4151* configure: Run compiler feature tests using the C++ compiler, not the C
4152  compiler.
4153
4154* Allow bindings version to have an extra "patchlevel", yet still match with
4155  corresponding xapian-core version (e.g. 0.8.5.1 and 0.8.5);
4156
4157Java:
4158
4159* Added a missing .java source file and removed several unused ones.
4160
4161* Fixed several glitches in the java bindings automake build system.
4162
4163* Use "-Wno-unused" when compiling JNI C++ code to ignore harmless
4164  warnings in generated code (we were carefully passing "-Wunused"
4165  which is the opposite of what is needed!)
4166
4167* Fixed a couple of warnings from GCJ.
4168
4169* Wrapped a few missing methods added since Eric created the bindings.  There
4170  are still some missing methods - there's now a (probably incomplete) list in
4171  java/README.
4172
4173* Added various useful bits of information to java/README.
4174
4175* Tweaked SimpleSearch.java to be more like the C++ version.
4176
4177PHP4:
4178
4179* 0.8.5 was generated with SWIG 1.3.24, but PHP support is broken there so
4180  we now generate the PHP bindings with SWIG 1.3.22 and everything else with
4181  a more recent version.
4182
4183* configure: Check for "php" as a program name as well as "php4", and
4184  fall-back to missing so the error message from "make check" is better.
4185
4186Xapian-bindings 0.8.5 (2004-12-23):
4187
4188General:
4189
4190* INSTALL: Added non-generic installation instructions.
4191
4192Python:
4193
4194* Fixed bytecode compilation of xapian.py.  xapian.pyc was being generated in
4195  the same directory as xapian.py, but Makefile.am was looking in current
4196  directory when installing it.  Additionally, VPATH builds were broken.
4197  These problems were introduced by changes in 0.8.4.
4198
4199Xapian-bindings 0.8.4 (2004-12-08):
4200
4201General:
4202
4203* README: Now clearly says which languages we currently support, which people
4204  are working on, etc.
4205
4206* Instead of requiring the user to have a really recent SWIG installed, ship
4207  the files SWIG generates.  Disable all the SWIG rules unless configure is run
4208  with --enable-maintainer-mode to make sure they aren't triggered accidentally
4209  (e.g. by make with dodgy VPATH).
4210
4211* configure: Require SWIG 1.3.22 or higher (but note that SWIG is no longer
4212  needed if you just want to install the bindings).
4213
4214* Wrap the new Database and WritableDatabase constructors which replace
4215  Auto::open().
4216
4217* It turns out that we do need to wrap MSet::MSet() (wrapping removed in 0.8.2)
4218  (for example, simpleexpand.py needs it).
4219
4220* In the Query constructor which takes a vector of terms, only call set_window
4221  if window is non-zero.  Otherwise things go wrong if we're passed an empty
4222  vector.
4223
4224* Second argument to Document::add_posting() isn't optional, but xapian.i
4225  indicated that it was.
4226
4227* xapian.i: Added wrappers for Xapian::Weight and standard subclasses.
4228  Deriving your own weight class in the scripting language isn't currently
4229  supported.
4230
4231* xapian.i: %name is deprecated, so use %rename instead.  This also works
4232  around a bug in SWIG 1.3.23.
4233
4234* configure: Removed pointless probe for a C compiler - everything we compile
4235  is C++.
4236
4237* configure: Reinstated the check that the bindings version matches the version
4238  of the xapian library.  It was added in 0.8.2, but accidentally removed in
4239  0.8.3.
4240
4241* Use newly added option `xapian-config --swigflags` which (a) avoids always
4242  passing -I/usr/include which could cause problems if we're using a Xapian
4243  install not in /usr and there's another one in /usr and (b) avoids problems
4244  if `xapian-config --cxxflags` contains flags other than -I<something>.
4245
4246CSharp:
4247
4248* Richard Boulton has put together bindings for C#.  These build successfully
4249  with the Mono tools, but the smoketest currently fails.  Unclear if the
4250  problem is the bindings or the smoketest code.
4251
4252Guile:
4253
4254* The guile bindings now build successfully, so we've enabled the guile
4255  detection machinery in configure.  They're untested though (we don't
4256  know guile!) so success or failure reports are encouraged!
4257
4258PHP4:
4259
4260* Mention the example scripts near the start of the documentation, not right at
4261  the end.
4262
4263* Remove documentation explicitly saying how we wrap Xapian::QueryParser and
4264  Xapian::Stem since we wrap them exactly as we wrap everything else we don't
4265  mention!
4266
4267Python:
4268
4269* Make overloaded Query(Query::op, vector<string>*, termpos) constructor
4270  work in Python.
4271
4272* Changed examples to use the newly wrapped Query from list of terms ctor.
4273
4274* Mention the example scripts near the start of the documentation, not right at
4275  the end.
4276
4277* python/Makefile.am: Added xapian_wrap.h as a target for the rule which runs
4278  SWIG.
4279
4280* Remove documentation explicitly saying how we wrap Xapian::QueryParser and
4281  Xapian::Stem since we wrap them exactly as we wrap everything else we don't
4282  mention!
4283
4284* Mention simpleexpand example in documentation.
4285
4286* Examples now report messages for Xapian exceptions.
4287
4288* Removed MAX_PROB_TERM_LENGTH from example scripts which don't use it.
4289
4290* Make the example MatchDecider exclude documents matching a value, rather than
4291  a term.  The latter is a very inefficient way to do what AND_NOT does, and we
4292  don't want examples to mislead like that.
4293
4294* python/docs/bindings.html: Note that you can construct a query
4295  from a list of terms, even if you can't from a list of queries.
4296  Add HTML links to the examples.
4297
4298* simpleindex.py: Trim spaces from the start as well as from the end of each
4299  line.  Simplify the loop slightly.
4300
4301Tcl:
4302
4303* Wrap in a tcl8 namespace "Xapian".
4304
4305* Added a smoketest.
4306
4307* Translated simpleindex and simplesearch into Tcl.
4308
4309* Set the Tcl package version.
4310
4311* Create pkgIndex.tcl so the package can be loaded in the usual Tcl way.
4312
4313* Install in "xapian<VERSION>" directory in the conventional Tcl way.
4314
4315* Added documentation for tcl8 bindings.
4316
4317* Use the TCL_STUBS mechanism so that compiled extensions are portable between
4318  different versions of Tcl.  This needs Tcl 8.1, so bump the required Tcl
4319  version (was 8.0).
4320
4321* configure.ac: Noted that the bindings can easily be compiled for use with
4322  Tcl 8.0, in case anybody needs that for some reason.
4323
4324* Don't wrap the factory functions which return a quartz WritableDatabase as
4325  the destructor never gets called so changes aren't flushed and the lock file
4326  isn't removed.
4327
4328Xapian-bindings 0.8.3 (2004-09-20):
4329
4330General:
4331
4332* Fixed mismatching versions of libtool used to produce configure and
4333  ltmain.sh.  The obvious symptom was ".so" missing from the shared object
4334  names.
4335
4336* RPM spec file contributed by Fabrice Colin.  Currently this packages Python,
4337  PHP4, and Tcl bindings.
4338
4339Java:
4340
4341* Pass -classpath to javac to fix build problems.
4342
4343* Make sure errors subdirectory is built before we try to build the jar file.
4344
4345* Fixed "make install" to not give libtool error.
4346
4347PHP4:
4348
4349* Include PHP4 documentation and exmples in the tarball.
4350
4351* Reverted "Use special SWIG PHP ldflags when linking the PHP glue library."
4352  change from 0.8.2 - it turns out we only need to pass these flags if we use
4353  swig's -noruntime option (which we don't do).
4354
4355Python:
4356
4357* Use swig's -modern switch for Python 2.2 and up - it gives cleaner, leaner,
4358  faster Python wrapper code.
4359
4360Tcl:
4361
4362* Don't install xapian.la.
4363
4364* Improved configure check for tcl.h to work with Fedora Core 2.
4365
4366Xapian-bindings 0.8.2 (2004-09-13):
4367
4368General:
4369
4370* Added wrappers for recently added methods: ESet::back() and
4371  Database::get_lastdocid(), and wrap the new optional third parameter
4372  to Enquire::set_sorting().
4373
4374* No longer wrap MSet::MSet() - it's not of use in scripting languages.
4375
4376* Wrap operator-- as prev() for MSetIterator and ESetIterator.
4377
4378* Wrap Quartz, InMemory, and Remote database factory functions as
4379  quartz_open(), inmemory_open(), and remote_open().
4380
4381* Added missing wrappers for static Stem::get_available_languages() and
4382  Stem::get_description().
4383
4384* Wrap renamed method Query::empty() (was Query::is_empty()).
4385
4386* Remove renaming of other empty() methods to is_empty() (but keep is_empty()
4387  as an alias for now).
4388
4389* Require autoconf 2.59 and automake 1.8.5.
4390
4391* configure: Added check that the bindings version matches the version of
4392  the xapian library.
4393
4394* configure: Check if we're using GCC and only pass GCC specific warning
4395  control options if we are.
4396
4397* configure: When running with GCC, also pass -Wno-uninitialized so the
4398  SWIG glue builds without warnings.
4399
4400* README: Updated list of languages which SWIG supports.
4401
4402PHP4:
4403
4404* Document that the 2 argument form of Xapian::Auto::open() for opening a
4405  writable database is wrapped as open_writable() (bug #32).
4406
4407* Include Xapian version in output from phpinfo().
4408
4409* Build the SWIG glue library like we build the others rather than using
4410  SWIG's -phpfull option.  This avoids problems with newer automake versions
4411  and means we can build against an uninstalled xapian library.
4412
4413* Corrected documentation to refer to Xapian::DB_* not Xapian::Auto::DB_*.
4414  Fixed documentation of how Xapian::Query::OP_* are wrapped.
4415
4416* Use special SWIG PHP ldflags when linking the PHP glue library.
4417
4418* simplesearch.py now works with multi-term queries.
4419
4420* Added documentation on how to install the PHP4 bindings.
4421
4422* Added a simple testcase to at least ensure the PHP4 bindings can be
4423  initialised and some simple operations work.
4424
4425Python:
4426
4427* configure: Now checks for Python >= 2.1 which we need for __cmp__ and __eq__.
4428
4429* Don't install _xapian.la and _xapian.a.
4430
4431* Byte compile xapian.py to xapian.pyc and install it.
4432
4433* Suppress SWIG warning about MatchDecider::operator() director discarding
4434  const.
4435
4436* "make clean" no longer leaves "xapian_wrap.h" behind.
4437
4438* Added a simple testcase to at least ensure the python bindings can be
4439  initialised and some simple operations work.
4440
4441Tcl8:
4442
4443* configure: Disable building tcl8 bindings if the headers are missing
4444  (probably because the tcl8.X-dev package isn't installed).
4445
4446Xapian-bindings 0.8.1 (2004-06-30):
4447
4448General:
4449
4450* configure: Require SWIG 1.3.20 or higher (previously was 1.3.14).
4451
4452* Add "-I/usr/include" to the swig line.  This is needed when xapian is
4453  installed with a prefix of /usr, since "xapian-config --cxxflags" carefully
4454  doesn't emit -I/usr/include in this situation (because it causes problems
4455  with some GCC versions).
4456
4457* Fixed the %exception handler to cover all the exceptions Xapian can throw,
4458  not just a subset.
4459
4460Java:
4461
4462* Removed wrappers for unused error classes which have been pruned from C++.
4463
4464* Make finalize() methods of Database and WritableDatabase public so they can
4465  be called from by the user.
4466
4467* Document Document.add_term_nopos() as deprecated.
4468
4469PHP4:
4470
4471* Make sure that PHP bindings build a module which exports get_module() so PHP
4472  is able to load it.
4473
4474* Configure now checks that phpize can actually be run, rather than just that
4475  it's executable (test -x isn't portable anyhow).
4476
4477* Added basic documentation and examples to PHP4 bindings.
4478
4479* Rename overloaded methods and constructors.
4480
4481* Add simple access to the prefixes map in QueryParser.
4482
4483* Correct simpleindex ports to never generate empty termnames.
4484
4485Python:
4486
4487* configure: Use $PYTHON instead of python when running python to determine
4488  library and include paths and version number.
4489
4490* Actually ship python examples and documentation.
4491
4492Xapian-bindings 0.8.0 (2004-04-20):
4493
4494* README: Started collecting information on supporting Xapian from even
4495  more languages.
4496
4497* Added configure tests to enable bindings only where the necessary tools
4498  are installed and have a supported version.  ./configure --without-LANGUAGE
4499  allows particular languages to be forcibly disabled.
4500
4501* Added Xapian::Document::add_term() - the new name for add_term_nopos().
4502
4503* A couple of Xapian::Query constructors weren't being wrapped - fixed.
4504
4505* Added Eric B. Ridge's JNI bindings for Java.  The JNI bindings themselves
4506  have been well tested, but integration with the xapian-bindings configure
4507  system hasn't been tested at all - please alert us to any problems.
4508
4509* Xapian can now be used from TCL.
4510
4511* Python: MSet now provides a Python iterator.
4512
4513* Python: OMMSET_* and OMESET_* renamed to MSET_* and ESET_*.
4514
4515* Python: enable directors for MatchDecider, to allow subclassing in Python.
4516
4517* Python: Added basic documentation, and some examples.
4518