Heres my feedback:
1. Wow!  Judy is great, blows away other data structures, thanks so much.
2. Ok. Now I'm back because I have hit the Judy Darwin Issue listed on  Thank god that there is this bug listed.  Its been a few years and this is my first issue.  But it is still ongoing.  I'm waiting for a mac user to find out if there is a mac gcc package we can use instead of building from source, and at whatever point I'll be adjusting the build system for this. (Darwin 8.9.1 gcc 4.0.1 Target: i686-apple-darwin8)
3. C interface!  I agree this is preferred.  You can always wrap a C interface in C++ for OO semantics, but using a C++ lib in C you will have to link to libstdc++ and this is a binary packaging issue.
4. Wishlist for Judy:
- Easy alloc overriding.  For memory accounting or supplying a block allocator so that the Judy array could be deallocated with 1 call to free(). 
- Optimizations towards iteration (walking all key/value pairs).  This is the only benchmark that STL rb_trees are close to Judy. 
5. What I used Judy for: Implementing a clustered graph API.
Judy rules!!!

Doug Baskins <> wrote:

I am very interested in a "
clean set of
interaces(sp)". But be prepared, you will go
around the block many times with "throw aways".

As far as understanding the code, I can help.
First I suggest you read JudyGet.c and write
down every dumb question you can think of.

I am working on the next version of Judy. It
is still in a "skeleton" stage, with most
macro's removed and much of the complexity that
is not necessary removed too. I will send you
the source when I get your "stupid" questions.

What I mean by "skeleton" is a version that
is getting ready for the next major experiment
to improve performance.

To begin, you must understand what a "Trie" or
"digital tree" is. Ignore any binary versions
that are written up by some authors.

I suggest starting with a
base 10 sized nodes and try decoding decimal
numbers in the tree. It is really an easy
concept once you get the "hang of it". Judy is
a "virtual" digital tree with base 256 nodes
with the final node a "Leaf" of variable size
ranging from 31 to 256 elements (currently).
The term "virtual" comes from the fact that they
are logically 256 nodes wide, and exist
in 3 forms:
1) called a "linear branch",
2) called a "bitmap branch" and lastly
3) an "uncompressed branch" that really has 256
Linear and bitmap branches do not contain the
nodes that are empty. Each node can contain a
bounded "expanse" of possible numbers. I plan
on removing bitmap branches on the next version.

Once you think you understand the above concepts
I will help you "map" them into the JudyGet.c code.
JudyGet.c is the easiest way to understand the
data structures supporting Judy.

A digital tree has many properties that are not
intuitive, which is where the exciting parts of
Judy exist.

Doug Baskins

yjudy <> wrote:

> On a different subject, you are not the only one to critique the
> API to Judy. The API was a result of many discussions and
> nobody was ever happy with it. So far I have not received a
> suggestion (with complete semantics) on a better way to do it.
> (Every challenge I have offered has been ignored).

I can help to make Judy code more portable, elegant with clean set of
But for that, I need your help to understand the code.
Even I read "Alan" 3 hours Judy doc more than once, it remains very
hard to understand all the internals and dark magic behind it without
authors help.

> It has been on my wish-list for years to do a "thread-safe"
> version of Judy. That would require different semantics to the
> Judy API (you can't have pointers to the "Value" area outside
> a potential lock or modification of the array by some other
> thread.) Your help on this would be appreciated, especially
> for C++. None of the original Judy team used C++.

I wrote a lot of large programs in C (>150K LOC) and I never
need to use C++. Please, stick with C as there's a lot of interfaces
to Judy using the C API.


Doug Baskins <>
This email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
Judy-devel mailing list

Building a website is a piece of cake.
Yahoo! Small Business gives you all the tools to get online.