leaky: Robust space leak, and its strictification
See also the project homepage for more information.
Please share your comments on this reddit discussion.
[Skip to Readme]
|Versions [faq]||0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.0.3, 0.1.0.4, 0.1.0.5, 0.1.6.0, 0.1.7.0, 0.2.0.0, 0.2.0.1, 0.2.1.0, 0.2.1.1, 0.3.0.0, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.4.0.0|
|Dependencies||base (==4.*), cpphs (>1.14), deepseq-bounded (>=0.8 && <1.0), deepseq-generics (==0.1.*), generics-sop (==0.1.*), random (==1.1), seqaid (==0.4.0.*), template-haskell [details]|
|Author||Andrew G. Seniuk|
|Maintainer||Andrew Seniuk <firstname.lastname@example.org>|
|Uploaded||by AndrewSeniuk at 2015-02-04T15:20:09Z|
|Downloads||10181 total (5 in the last 30 days)|
|Rating||(no votes yet) [estimated by Bayesian average]|
Docs not available [build log]
Last success reported on 2015-05-20 [all 8 reports]
Only when True, provide the options to enable the seqaid preprocessor and GHC plugin.
Blanket seqaid harness at subexpressions of all possible types. Shouldn't need a Cabal flag for this, but it's the same problem of casing over integer values for a macro (in a .cabal file). So this need not be orthogonal to FORCING_STRATEGY, but this way it is ... which is okay, actually. (Can then test interactions with other FS=0..6.)
Finally crumbed and availed myself of -F -pgmF, although only for things which are fairly safe via regex (injecting imports, top-level splices, "deriving instance" statements, LANGUAGE pragmas, etc.). (Later: You can't really do without this anymore, although with FORCING_STRATEGY=4 it is possible.)
Dump periodic stats lines, for FORCING_STRATEGY that need it.
Temporary for testing... (Later: Sadly this is not so temporary. There is some kind of interference between SOP.TH and Seqaid.TH splices which is still unresolved. So, types needing NFDataP (etc.) instances will need to live in a module which is not being harnessed.)
The problem with using a growing list is, it itself is a leak (as it were), so it's hard to see you've plugged anything. However, the slowdown of "force" relative to "forcep" will be noticed! Alternative to GROWING is FIXED (is at length 10000 at the moment). Fixed list is infinite if INFINITE set below. (INFINITE has no effect when GROWING set.)
XXX For some reason, memory is being retained when REDUCTION is enabled. (Later: Is this still the case? I see it's been set to True throughout development...).
To show DeepSeq.force (FORCING_STRATEGY=1) at its worst.
Put some weighty strict subtrees in the test data structure, so can showcase forcep's specificity relative to forcen.
The original intention was to make this a non-manual flag, to allow the build system to try cpphs first, and if that fails, then to try system-wide cpp (typically GNU). Due to path problems, when the build client installs cpphs in the course of installing, it turns out to be better to use a shell script to delegate which cpp runs, jimmy options, etc.
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees