Pretty cool, but 2 pointers of overhead per object is a lot. The linked-list approach to garbage collection is also going to produce a lot of memory fragmentation compared to arena-based collectors. The docs also suggest calling `ugc_step` multiple times per allocation. So this isn't a high performance solution, but the code is clean and easy to read.
Related reading: http://www.pipeline.com/~hbaker1/NoMotionGC.html