wiki:Commentary/Rts

Version 18 (modified by SamB, 6 years ago) (diff)

Add "Also check the list of cross-cutting concerns in Commentary" after list of subtopics.

GHC Commentary: The Runtime System

GHC's runtime system is a slightly scary beast: 50,000 lines of C and C-- code, much of which seems at first glance to be completely obscure. What on earth does the RTS do? Here are the highlights:

  • It includes all the bits required to execute Haskell code that aren't compiled into the code itself. For example, the RTS contains the code that knows how to raise an exception when you call error, and code to implement the multi-precision Integer operations (via the GMP library).
  • It includes a sophisticated storage manager, including a multi-generational garbage collector with copying and compacting strategies.
  • It includes a user-space scheduler for Haskell threads, together with support for scheduling Haskell threads across multiple CPUs, and allowing Haskell threads to call foreign functions in separate OS threads.
  • There's a byte-code interpreter for GHCi, and a dynamic linker for loading up object code into a GHCi session.
  • Heap-profiling (of various kinds), time-profiling and code coverage of Haskell code are included.
  • Support for Software Transactional Memory is now included...

Next, we try to make sense of how it all fits together.

Block Diagram

RTS: Contents

Also check the list of cross-cutting concerns in Commentary.

Attachments (1)

Download all attachments as: .zip