@hackage seqaid0.1.7.0

Dynamic strictness control, including space leak repair

  • Installation

  • Dependencies (14)

  • Dependents (2)

    @hackage/acme-everything, @hackage/leaky
  • Package Flags

      try_inject_noinline_on_requested_binds
       (off by default)

      If we can prevent inling of injected binds (without requiring user edits), that would probably be a good trade off in terms of lost optimiser oppportunities in exchange for assurance that the bind won't be inlined. This didn't work, and is a poor solution anyway.

      seqable_only
       (off by default)

      Like NFDATAN_ONLY, but for newer Seqable module.

      th_type_in_types_ann
       (off by default)

      Actually this is just preparatory, haven't gone down this road far yet. (We would like a TH.Type to Type.Type conversion function in the GHC API. Then we'd just send the list of Type.Type for direct use by the Core-plugin downstream).

      seqaidpp_types
       (on by default)

      Rather than choose types to seqinj for based on the types of the top-level binds, use seqaidpp to parse the types from seqaid.config. This stays on perpetually, finally, and could be removed soon.

      infer_top_level_types
       (off by default)

      If True, then TH/modulespection will be used as it has been, to blanket-inject all top-level functions (at least, those not explicitly or implicitly excluded). Now, if False, only RHS's with result types in the "types" list for the module (in seqaid.config) will be wrapped (again, at least those not explicitly or implicitly excluded).

      demo_mode
       (on by default)

      This is the only working mode in the first release. (And it only works when tested on the "leaky" package.) The switch exists to exclude hashable/hashtables deps (and subdeps) from the first release, while I can continue to work on this aspect in the development head.

      dbg_seqaid
       (on by default)

      When set, every call to seqaidDispatch emits a line of info.

      no_top_level_seqinj_dummies
       (off by default)

      If have to inject a class and instance anyway to evade DCE, no need for the old top-level seqinj_ declarations (we hope...).

      nfdatan_only
       (off by default)

      To simplify debugging.

      show_type
       (on by default)

      Include Typeable instance for (show . typeOf) in seqaidDispatch

Seqaid is a GHC plugin for non-invasive auto-instrumentation of dynamic strictness (and parallelism) control, shortly to include optimisation for automated space leak relief using minimal strictification. [The optimiser is still in development however.]

Refer to the seqaid homepage for more information.

Please share your comments on this reddit discussion.