Parallel garbage collection for SBCL [pdf]
Very cool! Here is the paper: <a href="https://zenodo.org/record/7816398" rel="nofollow noreferrer">https://zenodo.org/record/7816398</a>. It uses the well known Immix heap layout/algorithm. <a href="https://users.cecs.anu.edu.au/~steveb/pubs/papers/immix-pldi-2008.pdf" rel="nofollow noreferrer">https://users.cecs.anu.edu.au/~steveb/pubs/papers/immix-pldi...</a><p>The old gencgc was pretty cool for the single core era, and it sounds like it still holds up well. If I recall correctly, it was based on the Bartlett Mostly Copying paper, which is an elegant and practical GC design. <a href="https://www.hpl.hp.com/techreports/Compaq-DEC/WRL-TN-12.pdf" rel="nofollow noreferrer">https://www.hpl.hp.com/techreports/Compaq-DEC/WRL-TN-12.pdf</a>. I miss these old papers that described this stuff in a way you didn’t have to be a math major to understand. I think the first version of that paper had the C++ code as an appendix: <a href="https://www.hpl.hp.com/techreports/Compaq-DEC/WRL-88-2.pdf" rel="nofollow noreferrer">https://www.hpl.hp.com/techreports/Compaq-DEC/WRL-88-2.pdf</a>.<p>Clarity in your technical communications matters. The Immix papers are similarly well written and clear. I don’t think it’s a surprise that both GC designs have also been independently implemented over and over. The Chaitin-Briggs register allocator is another example where I’d attribute at least some of the success in widespread industrial implementation to Briggs’ excellent and approachable PhD thesis describing the algorithm: <a href="https://www.cs.utexas.edu/users/mckinley/380C/lecs/briggs-thesis-1992.pdf" rel="nofollow noreferrer">https://www.cs.utexas.edu/users/mckinley/380C/lecs/briggs-th...</a>