another idea: you could go on the Racket dev email list (http://racket-lang.org/community.html) and say "as a learning experience I've implemented a gc for a small Lisp and was thinking about what to do next such as perhaps trying a tri-color algorithm. I'm curious what gc algorithm you're using for Racket and why you chose it over other alternatives?"
Thanks for advices, I've read some papers on this topic and will take a deep searching into different scheme/lisp groups in following days.
For now I decide to refactor carc to an byte-code one and use the new gc mechanism from the scratch :P
If you'd like, something that would be helpful to us for you to keep an eye out for while you're looking is that we'd like to find a runtime (or learn how make a runtime) which:
- runs on multiple cores, AND
- supports full call-with-current-continuation, tail call optimization, and mutable lists
Our current options include:
- Racket, which can run on multiple cores, but only supports mutating lists within a single core, and
- the JVM, which does support mutating data structures by multiple cores, but doesn't natively support full continuations or tail call optimization.