Somebody brought to my attention the 2024-04-16 discussion between Victor Miraldo, Niki Vazou and Joachim Breiner about GHC-produced software and garbage collection (GC) and the needs of users of certain software in production, starting at about 0:36:39 at the podcast transcript at: Victor Cacciari Miraldo. There is a reference there to @bgamari (Ben Gamari) having worked on GC strategies and ‘relatively recent’ developments in GHC’s approach to GC. Some questions flow from that:
-
are there members of the Haskell community who are actively thinking about GHC and GC?
-
are there any tutorial-like guides out there to GC in modern GHC? I am aware of the reference-like guide at 5.7. Runtime system (RTS) options — Glasgow Haskell Compiler 9.10.1 User's Guide.
The reference guide starts by explaining that there are several things that can be tweaked for maximum performance. A tutorial-like guide might explain what to tweak and how and when, to maximise performance in different circumstances.
EDIT: I am going to edit this top post to collect interesting strands in any discussion below, attempting a roughly chronological order. Thank you to all contributors:
- Towards Haskell in the Cloud by Jeff Epstein, Andrew P. Black and @simonpj (Simon Peyton Jones) 22 September 2011
- Efficient Communication and Collection with Compact Normal Forms by @ezyang (Edward Z. Yang), Giovanni Campagna, Omer S Agacan, Ahmed El-Hassany, Abhishek Kulkarni and Ryan R. Newton 31 August 2015
- The Garbage Collector at GHC’s wiki, last edited on 13 October 2021
- Bugs in GHC’s non-moving CG fixed in GHC 9.4.5, released 18 April 2023
- Erland-style processes in the RTS - GHC issue #21578, originated by @Kleidukos (Théophile (Hécate) Choutri) on 16 May 2023.
- Execution Domains in GHC/Haskell: A Proposal, by @bgamari 27 Nov 2023.
- For comparison: The Erland Runtime System, Chapter 3: Processes, cross-referenced in GHC issue #21578
People: