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