I am seeking an efficient free software multi-thread compatible garbage collector (with a GPLv3 compatible license, running primarily on Gnu/Linux). I want e.g. to have 4 to 8 threads running in parallel -e.g. some sort of tiny Lisp-, and allocating simultaneously. Allocation rate is expected to be rather high -with lots of values being temporary (but mutation rate should be lower).
Boehm's conservative GC is widely used, but is a bit slow (e.g. slower than the GC inside Ocaml).
Gnu Epsilon GC is also a possibility....
And Rollendurchmesserzeitsammler is nearly Boehm compatible but claims to be faster (or at least more real-time friendly).
smieciuch GC is a precise GC, but I don't know if it multi-thread compatible (and it fails to compile with
g++-4.8 on my Debian/Sid/x86-64).
SGCL is Windows specific.
MeixnerGC is LGPLv3 & could be compiled for multithread applications, but don't compile on 64 bits Linux because of casts from pointers to
unsigned int (it should use
intptr_t); this has been fixed in its 0.4 release of april 7th, 2014.
TinyGc is Boehm compatible, but smaller and slower.
I would prefer a precise generational copying GC .... Of course I can adapt to constraints provided by the GC (e.g. by providing relevant marking or forwarding routines or layout information, expliciting local pointers in C code and dealing with writing or reading barriers, etc...).
Any other hints?
To improve the question, I don't require an "easy-to-use" GC, but an efficient and multi-thread friendly one. The C (or C++) code will all be generated, so it is then reasonably easy to cope with requirements or conventions (e.g. write barriers, precise local roots on the call stack in some automatic variable, A-normal form, etc...) dictated by the GC (since it is just a matter of changing the C code generator to fit with these).
See also this answer on StackOverflow.