ICFP 2024
Mon 2 - Sat 7 September 2024 Milan, Italy
Sat 7 Sep 2024 14:30 - 15:00 at Orange 3 - Haskell 5 Chair(s): Simon Marlow

Most functional language runtime systems context switch between executing user code and a non-concurrent garbage collector (GC), exposing GC latency to overall wall-clock time. Recent concurrent software-based GCs reduce these latencies, but wall-clock times are instead increased due to their synchronisation and write barrier overheads, by as much as 21%. This GC overhead is exacerbated further for pure non-strict languages like Haskell, due to the abundance of allocations for storing immutable data structures and closures. This paper presents Cloaca, an FPGA-based hardware implementation of a concurrent, hybrid GC for a pure non-strict functional language. It combines mark-and-sweep tracing and one-bit reference counting. It traces live heap data using hardware-level synchronisation and write barriers, without damaging graph reduction performance. To ensure the correctness of Cloaca, three invariants of its Haskell-based implementation are verified with property-based testing. Despite GHC running on an Intel i7 CPU operating at a x25 higher clock frequency than Cloaca; Cloaca takes, on average, 8.6% of GHC’s GC wall-clock time across 14 of 15 benchmarks. Moreover, Cloaca’s small hardware footprint consumes under 4 Watts of power, compared with Intel i7 drawing between 5 and 20 Watts.

Sat 7 Sep

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

14:00 - 15:30
Haskell 5Haskell at Orange 3
Chair(s): Simon Marlow Meta
14:00
30m
Talk
Calculating Compilers Effectively
Haskell
Zac Garby University of Nottingham, Graham Hutton University of Nottingham, Patrick Bahr IT University of Copenhagen
14:30
30m
Talk
Cloaca: A Concurrent Hardware Garbage Collector for Non-Strict Functional Languages
Haskell
Craig Ramsay Heriot-Watt University, Rob Stewart Heriot-Watt University
15:00
30m
Talk
Functional Reactive Programming, Rearranged
Haskell
Finnbar Keating University of Warwick, Michael Gale GitHub