I'm experimenting with writing some bindings to the Boehm GC for Rust.

Some background: Rust is designed to be a high-concurrent language, and a result of this design is having the ability to statically restrict GC pointers to within the threads in which they were allocated (that is, a GC pointer allocated in thread x can never be kept alive (or even referenced at all) by another thread).

Hence, I wish to drive Boehm to capitalise on this for performance as much as possible:

thread-safe, so I can allocate and collect from multiple threads stop-as-little-as-possible collections (i.e. just the current thread), other threads can keep running because they can't possibly interfere with anything relevant to the GC pointers outside of themselves preferably, entirely thread-locally with no synchronisation between the GC "instances" of different threads

1 is easy, but I can't find any facility for 2 and 3. The most important part is 1 & 2 because I want to be able to have threads running in the background, independently of what the other threads are doing (even if they are all allocating and garbage-collecting gigabytes of memory).