Resource Limits for Haskell
Edward Z. Yang
Safe Haskell offers the tantalizing possibility of running arbitrary, untrusted code as part of Haskell programs. However, a major obstacle to this dream is how to bound the time and space usage of such untrusted code. In this talk, we would like to describe a first implementation of a resource limits system for Haskell, which reuses the preexisting conceptual framework GHC has for discussing time and space usage: the cost semantics for profiling.
Our first implementation largely reuses the existing implementation of profiling, and requires relatively few changes to the runtime system. However, profiling imposes a substantial memory and time cost on Haskell programs; thus, we'd also like to describe a partially implemented alternate strategy which utilizes a block-structured heap for what should be dramatic performance improvements. We'd like to pose an open question: how can this scheme be implemented in a *parallel* garbage collector?