Guile GC Heap Sizing Heuristics: A Live-Lock Story

2025-05-26

The Guile project is integrating a Nofl-based conservative scanning garbage collector. Currently using a growable heap policy, the heap size is adjusted by a multiplier to account for fragmentation. However, severe fragmentation can lead to allocation failures and deadlocks even when the heap is twice the expected size. The post explores solutions: increasing the multiplier, changing heap organization, and reserving empty blocks for the Nofl collector. The goal is efficient handling of fragmentation and deadlock avoidance.

Read more
Development

Building a Garbage Collector from Scratch: A 20-Year Journey

2025-05-12

A programmer with 20 years of experience, after studying the Immix garbage collection algorithm, decided to implement a new garbage collector for Guile Scheme. His initial goal was to create a generic memory management interface, but he ended up developing a novel garbage collector called Nofl, which leverages a side table from a mark-sweep collector for bump-pointer allocation. The author also shares his experience submitting his research to an academic conference and his reflections on academic research and industry.

Read more
Development

The Puzzling Performance of Generational Garbage Collection

2025-02-09

The author conducted experiments to verify the performance benefits of generational garbage collection. Surprisingly, the results showed that generational garbage collection took longer than whole-heap garbage collection in various benchmarks. The article explores several potential causes, including write barrier overhead, nursery size selection, benchmark representativeness, and collection frequency. The author concludes that further investigation is needed to determine the root cause.

Read more
Development