~/talk

Join points in practice

Talkat Haskell 2025 · 2025-10-16..10-17· [compilers-and-language-design]
slides:none on file

Join points are a small extension to GHC Core (tagging some let-binders) that the compiler infers with the Occurrence Analyser and treats specially in the Simplifier and a dedicated Exitification pass. The implementation maps joins to ordinary lets (but tail-only jumps that perform no allocation on jumps), enables pushing continuations into RHSes, unlocks new fusion and allocation wins (including for recursive joins), and proves practical across eight years of GHC engineering, with lint catching regressions.

AI-written summary · about

  1. 0:00Introduction
  2. 1:08CPS and ANF history
  3. 3:36CPS to ANF and join points
  4. 7:08Zena and join points
  5. 8:31GHC Core overview
  6. 10:40Case of case optimization
  7. 13:58Join points to avoid duplication
  8. 16:02Join points as CFG labels
  9. 18:07Let-no-escape history
  10. 19:33Formalizing join points
  11. 21:18Practical compiler experience
  12. 25:14Join point typing rules
  13. 28:04Mapping to GHC Core
  14. 31:17Implementation details
  15. 34:28Occurrence analysis
  16. 37:17Join points as tail calls
  17. 40:29Optimization opportunities
  18. 46:10Pushing continuations
  19. 53:15Recursive join points
  20. 56:25Tricky corner cases
  21. 1:03:51Exitification
  22. 1:04:33Summary and open questions
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.