Skip to content
  • Ben Gamari's avatar
    Merge non-moving garbage collector · 7f72b540
    Ben Gamari authored
    This introduces a concurrent mark & sweep garbage collector to manage the old
    generation. The concurrent nature of this collector typically results in
    significantly reduced maximum and mean pause times in applications with large
    working sets.
    
    Due to the large and intricate nature of the change I have opted to
    preserve the fully-buildable history, including merge commits, which is
    described in the "Branch overview" section below.
    
    Collector design
    ================
    
    The full design of the collector implemented here is described in detail
    in a technical note
    
    > B. Gamari. "A Concurrent Garbage Collector For the Glasgow Haskell
    > Compiler" (2018)
    
    This document can be requested from @bgamari.
    The basic heap structure used in this design is heavily inspired by
    
    > K. Ueno & A. Ohori. "A fully concurrent garbage collector for
    > functional programs on multicore processors." /ACM SIGPLAN Notices/
    > Vol. 51. No. 9 (presented at ICFP 2016)
    
    This design is intended to allow both ma...
    7f72b540