deepseq-bounded, seqaid, leaky

This trio of related packages explores strictness control in a variety of ways.

deepseq-bounded provides classes and generic functions to artificially force evaluation, to extents controlled by static or dynamic configuration.

seqaid puts that into practise, providing a GHC plugin to auto-instrument your package with a strictness harness, which is dynamically optimisable during runtime. This is supported directly in the GHC compilation pipeline, without requiring (or performing!) any edits to your sources.

leaky is a minimal, prototypic executable that leaks space under current state-of-the-art compilation (even with -O2 GHC 7.10.1-rc1; but certainly with -O2 GHC 7.8.*).

On hackage.haskell.org:

I've started a reddit discussion page for the three together.

Easiest way to try them all, is to install seqaid and run the demo:

cabal install seqaid seqaid demo

This tests seqaid on a local copy of the leaky source package.

It turned out to be routine to extend deepseq-bounded and seqaid to dynamically configurable parallelisation (paraid?). Many other wrappers could be explored, too! Maybe seqaid should be renamed to koolaid or something...