lucy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rayne Olivetti <>
Subject Re: [lucy-user] Using Lucy directly from C
Date Sun, 25 Nov 2012 06:13:12 GMT
The reason for me to seek a C/C++ alternative for Lucene very simple: performance (especially
memory) and dependencies (no Java on many embedded systems).

This sounds like problem you need to solve anyway first, if you want people to write bindings
for other languages.
Unless there is a complete C API, I personally would rather stick to swig bindings of clucene.

And it behooves me to say that Lucy is trying to solve other problems (a toy-swig project
which you expect people to learn to use in order to wrap your one, single library) that it's
rather supposed to solve in the first place.
Here's an excerpt from Lucy FAQ:

Why don't you use Swig?
A major design goal of Lucy is to present bindings which are as idiomatic as possible so that
our users feel as though they are programming in their native language and not in C. Swig
is a great tool, but it does not offer support for many of the features which make Lucy so
user friendly: subclassing, named parameters, default argument values, etc.
These excuses downright wrong. Surely SWIG handles inheritance, default arguments, and named
parameters (docstring features for python) for languages that support them. If your favorite,
killer feature X is missing for your apparently-favorite-language Perl, why don't you just
send a patch to Swig instead of re-inventing the wheel? And I should and add Swig is a BIG
And mind you, not many languages support those features.

And okay, I get that you love Perl, and you probably don't want to dig into the giant called
Swig just to implement a single feature you like. But please understand that Perl is obsolete
to many people today, and by not implementing a complete C API, you're not letting people
to use Swig (or whatever tool the language X supports for wrapping C code) at their option.

Last but not least, "loose C port" implies it can be used via C, which led me to this project. In
it's current form, Lucy mainly looks like a Perl port of Lucene, boosted with some C code.

Lucy is a project at it's infancy, so I expect many things to change in the future.
But for now, I'm going with clucene+swig.

----- Original Message -----
From: Nathan Kurz <>
To:; Rayne Olivetti <>
Sent: Friday, November 23, 2012 2:33 AM
Subject: Re: [lucy-user] Using Lucy directly from C

On Thu, Nov 22, 2012 at 4:35 AM, Rayne Olivetti <> wrote:
> I'm well aware of the purpose of Lucy, but is it not possible to use it directly from
C? I can't find any documents regarding this, and the INSTALL file says "Currently it is available
via Perl bindings.", which almost suggests "you're on your own if you're going to use Lucy
from C" (and this sounds quite awkward for a C library).
> I'm also trying to write Go bindings (which is normally done via cgo, which allows Go
code to directly call C functions), and using cgo doesn't require any of the binding magics
that ships with Lucy --it works best with a plain, old C API.

There is not yet a published C API.   There is a strong desire to have
one, but it's yet to be a top priority.  It will probably stay that
way until someone shows up on the mailing list with a clear need and
the willingness and ability to help work on it. :)

The difficulty is that host languages are integral to the way Lucy
works, and some small but crucial pieces are implemented only in the
host language.  There's been considerable interest in other languages,
but right now Perl is the only one fully supported.

Here's a little more background:


View raw message