Add use-reflex-optimizer flag; default to False
commit496dac10f65da5eed253d24589409520aa9f8f66
authorRyan Trinkle <ryan.trinkle@gmail.com>
dateWed 9 Nov 2016, 12:47 (10 years ago)
parent3835a1f
reflex.cabal+5
@@ -18,6 +18,11 @@ flag specialize-to-spidertimeline-global
1818 default: False
1919 manual: True
2020
21+flag use-reflex-optimizer
22+ description: Use the GHC plugin Reflex.Optimizer on some of the modules in the package. This is still experimental.
23+ default: False
24+ manual: True
25+
2126library
2227 hs-source-dirs: src
2328 build-depends:
src/Data/Functor/Misc.hs+3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DeriveDataTypeable #-}
23{-# LANGUAGE FlexibleContexts #-}
34{-# LANGUAGE FlexibleInstances #-}
@@ -9,7 +10,9 @@
910{-# LANGUAGE RankNTypes #-}
1011{-# LANGUAGE ScopedTypeVariables #-}
1112{-# LANGUAGE StandaloneDeriving #-}
13+#ifdef USE_REFLEX_OPTIMIZER
1214{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
15+#endif
1316-- | This module provides types and functions with no particular theme, but
1417-- which are relevant to the use of 'Functor'-based datastructures like
1518-- 'Data.Dependent.Map.DMap'.
src/Data/WeakBag.hs+3
@@ -1,6 +1,9 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE BangPatterns #-}
23{-# LANGUAGE ExistentialQuantification #-}
4+#ifdef USE_REFLEX_OPTIMIZER
35{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
6+#endif
47-- | This module defines the 'WeakBag' type, which represents a mutable
58-- collection of items that does not cause the items to be retained in memory.
69-- This is useful for situations where a value needs to be inspected or modified
src/Reflex/Class.hs+2
@@ -16,7 +16,9 @@
1616{-# LANGUAGE TypeFamilies #-}
1717{-# LANGUAGE TypeOperators #-}
1818{-# LANGUAGE UndecidableInstances #-}
19+#ifdef USE_REFLEX_OPTIMIZER
1920{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
21+#endif
2022#ifdef SPECIALIZE_TO_SPIDERTIMELINE_GLOBAL
2123{-# OPTIONS_GHC -Wno-redundant-constraints #-}
2224#endif
src/Reflex/Dynamic.hs+2
@@ -12,7 +12,9 @@
1212{-# LANGUAGE TypeFamilies #-}
1313{-# LANGUAGE TypeOperators #-}
1414{-# LANGUAGE UndecidableInstances #-}
15+#ifdef USE_REFLEX_OPTIMIZER
1516{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
17+#endif
1618-- | This module contains various functions for working with 'Dynamic' values.
1719-- 'Dynamic' and its primitives have been moved to the 'Reflex' class.
1820module Reflex.Dynamic
src/Reflex/Dynamic/TH.hs+3
@@ -1,10 +1,13 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE EmptyDataDecls #-}
23{-# LANGUAGE GADTs #-}
34{-# LANGUAGE PatternGuards #-}
45{-# LANGUAGE ScopedTypeVariables #-}
56{-# LANGUAGE TemplateHaskell #-}
67{-# LANGUAGE TypeOperators #-}
8+#ifdef USE_REFLEX_OPTIMIZER
79{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
10+#endif
811-- | Template Haskell helper functions for building complex 'Dynamic' values.
912module Reflex.Dynamic.TH (qDyn, unqDyn, mkDyn) where
1013
src/Reflex/Dynamic/Uniq.hs+3
@@ -1,7 +1,10 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE FlexibleInstances #-}
23{-# LANGUAGE MagicHash #-}
34{-# LANGUAGE MultiParamTypeClasses #-}
5+#ifdef USE_REFLEX_OPTIMIZER
46{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
7+#endif
58-- | This module provides a variation of 'Dynamic' values that uses cheap
69-- pointer equality checks to reduce the amount of signal propagation needed.
710module Reflex.Dynamic.Uniq
src/Reflex/DynamicWriter.hs+2
@@ -9,7 +9,9 @@
99{-# LANGUAGE ScopedTypeVariables #-}
1010{-# LANGUAGE TypeFamilies #-}
1111{-# LANGUAGE UndecidableInstances #-}
12+#ifdef USE_REFLEX_OPTIMIZER
1213{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
14+#endif
1315module Reflex.DynamicWriter where
1416
1517import Control.Monad.Exception
src/Reflex/Host/Class.hs+2
@@ -10,7 +10,9 @@
1010{-# LANGUAGE ScopedTypeVariables #-}
1111{-# LANGUAGE TypeFamilies #-}
1212{-# LANGUAGE UndecidableInstances #-}
13+#ifdef USE_REFLEX_OPTIMIZER
1314{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
15+#endif
1416-- | This module provides the interface for hosting 'Reflex' engines. This
1517-- should only be necessary if you're writing a binding or some other library
1618-- that provides a core event loop.
src/Reflex/PerformEvent/Base.hs+3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE FlexibleContexts #-}
23{-# LANGUAGE FlexibleInstances #-}
34{-# LANGUAGE GADTs #-}
@@ -12,7 +13,9 @@
1213{-# LANGUAGE TypeFamilies #-}
1314{-# LANGUAGE TypeOperators #-}
1415{-# LANGUAGE UndecidableInstances #-}
16+#ifdef USE_REFLEX_OPTIMIZER
1517{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
18+#endif
1619module Reflex.PerformEvent.Base where
1720
1821import Reflex.Class
src/Reflex/PostBuild/Class.hs+3
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12{-# LANGUAGE DataKinds #-}
23{-# LANGUAGE FlexibleInstances #-}
34{-# LANGUAGE FunctionalDependencies #-}
@@ -8,7 +9,9 @@
89{-# LANGUAGE TypeFamilies #-}
910{-# LANGUAGE TypeOperators #-}
1011{-# LANGUAGE UndecidableInstances #-}
12+#ifdef USE_REFLEX_OPTIMIZER
1113{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
14+#endif
1215module Reflex.PostBuild.Class where
1316
1417import Control.Monad.Exception
src/Reflex/Pure.hs+2
@@ -5,7 +5,9 @@
55{-# LANGUAGE MultiParamTypeClasses #-}
66{-# LANGUAGE ScopedTypeVariables #-}
77{-# LANGUAGE TypeFamilies #-}
8+#ifdef USE_REFLEX_OPTIMIZER
89{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
10+#endif
911
1012-- There are two expected orphan instances in this module:
1113-- * MonadSample (Pure t) ((->) t)
src/Reflex/Spider/Internal.hs+2
@@ -17,7 +17,9 @@
1717{-# LANGUAGE TypeFamilies #-}
1818{-# LANGUAGE TypeOperators #-}
1919{-# LANGUAGE UndecidableInstances #-}
20+#ifdef USE_REFLEX_OPTIMIZER
2021{-# OPTIONS_GHC -fplugin=Reflex.Optimizer #-}
22+#endif
2123#ifdef SPECIALIZE_TO_SPIDERTIMELINE_GLOBAL
2224{-# OPTIONS_GHC -fno-warn-orphans #-}
2325#endif