Recent and related (but we merged the comments hither):<p><i>Steel Bank Common Lisp 2.3.8 released: “a mark-region parallel GC is available”</i> - <a href="https://news.ycombinator.com/item?id=37295611">https://news.ycombinator.com/item?id=37295611</a>
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>
Other great achievements from last year [0]:<p>- SBCL is callable as a shared library (see sbcl-librarian)<p>- sb-simd<p>- prebuilt binaries for Android (termux, unofficial)<p>- better image compression using zstd<p>- I'll add <a href="https://github.com/sionescu/sbcl-goodies">https://github.com/sionescu/sbcl-goodies</a>, binaries with "goodies" inside (OpenSSL, libfixposix)<p>yay!<p>[0]: <a href="https://lisp-journey.gitlab.io/blog/these-years-in-common-lisp-2022-in-review/#implementations" rel="nofollow noreferrer">https://lisp-journey.gitlab.io/blog/these-years-in-common-li...</a><p>bonus from 2021: true static binaries are coming <a href="https://www.timmons.dev/posts/static-executables-with-sbcl-v2.html" rel="nofollow noreferrer">https://www.timmons.dev/posts/static-executables-with-sbcl-v...</a>
Nice, good to see activity in SBCL dev.<p>Does anyone know how difficult implementing a Real-Time GC would be for SBCL or ECL. I know of that paper by Rodney Brooks (L -- A Common Lisp for Embedded Systems)
A pattern I've noticed is that in languages with garbage collection, the garbage collection aspect is never finished. It is always a pain point and people are constantly waiting for promised future features and refinements.