What is the current status of the Guile and C# bindings? Is anyone
successfully using either of them?
Ralf Mattes was working on the guile bindings, but I believe he
unfortunately lost the code when his laptop disk crashed.
All the changes in the last 2 years seem to be for changes in the build
system and have been applied blindly. There's no "smoketest" for
guile
(all the other bindings have one) so I can't tell if it's actually
working even slightly! There's also no documentation or examples, and I
don't know guile at all so I don't know where to start with adding a
smoketest.
I think it's high time we stopped claiming guile "is being worked
on"
and to retire it to "some work has been done on".
Looking at the SWIG bindings code, extra.i is empty and util.i only has
3 typemaps for std::string which recent versions of SWIG should supply
already (one misspells "guile" as "guilde" so will be
ignored by SWIG
anyway). There're currently 5 conditionals depending on SWIGGUILE in
xapian.i, but none of these are anything special, and some could be
wrong. So I wouldn't be suprised if someone working on guile would be
best off starting from scratch anyway!
And moving on to C#...
This is currently failing to compile for me when generated with SWIG
1.3.27 because SWIG_exception isn't defined (though it seems to be
in exceptions.i. That looks like a SWIG bug. Anyway, hacking around
that I can compile the code but can't test it right now as ixion lacks
the C# tools and my normal dev box is currently disconnected.
C# does at least have a smoketest (though I couldn't get it to pass
last time I tried it) but has no documentation or examples.
It's currently a bit of a stretch to say C# "is being worked on",
though
less so than for guile I think.
On a related point, if anyone is interested in working on bindings for
other languages, I'm happy to offer help with the Xapian and SWIG side
of things (but it really requires somebody who knows the language fairly
well to work on that side of things). I've compiled a summary of what
SWIG supports here:
http://svn.xapian.org/trunk/xapian-bindings/README?view=markup
You don't have to use SWIG, but it will probably reduce the amount of
dull mechanical code writing required to produce bindings and keep them
up to date as the API evolves. Of those listed, the one which I've
actually seen evidence of demand for is Ruby (but don't take that to
mean that there's no point working on others).
Cheers,
Olly
On Mon, Dec 19, 2005 at 05:19:14PM +0000, Olly Betts wrote:> This is currently failing to compile for me when generated with SWIG > 1.3.27 because SWIG_exception isn't defined (though it seems to be > in exceptions.i. That looks like a SWIG bug. Anyway, hacking around > that I can compile the code but can't test it right now as ixion lacks > the C# tools and my normal dev box is currently disconnected.I've connected my dev box back up and worked out how to find out what exception you've just caught in C#, and found that the it was trying to load the wrong shared library. Fixing that, the smoketest now passes, except that it won't compile the call to inmemory_open() for some reason so that is commented out. So once I check in these changes, the C# bindings may actually be usable, though some documentation and examples would be nice. I'll try to put some together, though I don't know much about C# so feel free to step in and improve them! I think going forward that we should probably make tests, documentation, and examples a requirement for accepting bindings for a new language. Otherwise I feel we're doing our users a disservice. Cheers, Olly