on develop help sign in
Merge branch 'develop' into je-clean-up-changelog-traverse
494af2bJohn Ericson
ChangeLog.md+17
@@ -4,8 +4,13 @@
4
4
5* Data.WeakBag.traverse` and `Data.FastWeakBag.traverse` have been deprecated.
5* Data.WeakBag.traverse` and `Data.FastWeakBag.traverse` have been deprecated.
6 They are replaced with `Data.WeakBag.traverse_` and `Data.FastWeakBag.traverse_`, respectively.
6 They are replaced with `Data.WeakBag.traverse_` and `Data.FastWeakBag.traverse_`, respectively.
7+
7* Fixes a bug in `Reflex.Patch.MapWithMove.patchThatSortsMapWith` that was producing invalid `PatchMapWithMove`.
8* Fixes a bug in `Reflex.Patch.MapWithMove.patchThatSortsMapWith` that was producing invalid `PatchMapWithMove`.
8
9
10+* Add missing `NotReady` instances:
11+ - `instance NotReady (SpiderTimeline x) (SpiderHost x)`
12+ - `instance HasSpiderTimeline x => NotReady (SpiderTimeline x) (PerformEventT (SpiderTimeline x) (SpiderHost x))`
13+
9## 0.6.2.4
14## 0.6.2.4
10
15
11* Update to monoidal-containers 0.6
16* Update to monoidal-containers 0.6
@@ -17,7 +22,9 @@
17## 0.6.2.2
22## 0.6.2.2
18
23
19* Support these >= 1. Add `split-these` flag to control whether to use new these/semialign combination or not.
24* Support these >= 1. Add `split-these` flag to control whether to use new these/semialign combination or not.
25+
20* Update version bounds to fix some CI failures
26* Update version bounds to fix some CI failures
27+
21* Add travis CI configuration
28* Add travis CI configuration
22
29
23## 0.6.2.1
30## 0.6.2.1
@@ -43,21 +50,31 @@
43
50
44* Fix `holdDyn` so that it is lazy in its event argument
51* Fix `holdDyn` so that it is lazy in its event argument
45 These produce `DMap`s whose values needn't be `Identity`.
52 These produce `DMap`s whose values needn't be `Identity`.
53+
46* Stop using the now-deprecated `*Tag` classes (e.g., `ShowTag`).
54* Stop using the now-deprecated `*Tag` classes (e.g., `ShowTag`).
55+
47* Fix `holdDyn` so that it is lazy in its event argument.
56* Fix `holdDyn` so that it is lazy in its event argument.
48
57
49## 0.6.1.0
58## 0.6.1.0
50
59
51* Re-export all of `Data.Map.Monoidal`
60* Re-export all of `Data.Map.Monoidal`
61+
52* Fix `QueryT` and `RequesterT` tests
62* Fix `QueryT` and `RequesterT` tests
53
63
54## 0.6.0.0 -- 2019-03-20
64## 0.6.0.0 -- 2019-03-20
55
65
56* Deprecate `FunctorMaybe` in favor of `Data.Witherable.Filterable`. We still export `fmapMaybe`, `ffilter`, etc., but they all rely on `Filterable` now.
66* Deprecate `FunctorMaybe` in favor of `Data.Witherable.Filterable`. We still export `fmapMaybe`, `ffilter`, etc., but they all rely on `Filterable` now.
67+
57* Rename `MonadDynamicWriter` to `DynamicWriter` and add a deprecation for the old name.
68* Rename `MonadDynamicWriter` to `DynamicWriter` and add a deprecation for the old name.
69+
58* Remove many deprecated functions.
70* Remove many deprecated functions.
71+
59* Add a `Num` instance for `Dynamic`.
72* Add a `Num` instance for `Dynamic`.
73+
60* Add `matchRequestsWithResponses` to make it easier to use `Requester` with protocols that don't do this matching for you.
74* Add `matchRequestsWithResponses` to make it easier to use `Requester` with protocols that don't do this matching for you.
75+
61* Add `withRequesterT` to map functions over the request and response of a `RequesterT`.
76* Add `withRequesterT` to map functions over the request and response of a `RequesterT`.
77+
62* Suppress nil patches in `QueryT` as an optimization. The `Query` type must now have an `Eq` instance.
78* Suppress nil patches in `QueryT` as an optimization. The `Query` type must now have an `Eq` instance.
79+
63* Add `throttleBatchWithLag` to `Reflex.Time`. See that module for details.
80* Add `throttleBatchWithLag` to `Reflex.Time`. See that module for details.
dep/reflex-platform/github.json+3−3
@@ -1,7 +1,7 @@
1{
1{
2 "owner": "reflex-frp",
2 "owner": "reflex-frp",
3 "repo": "reflex-platform",
3 "repo": "reflex-platform",
4− "branch": "jailbreakTheselens",
4+ "branch": "develop",
5− "rev": "4284ed527c96c373538dc7e31776d9a50ca6aa91",
5+ "rev": "e7b76dd552a10916c7d8702c11292dac4f4299ea",
6− "sha256": "1m1nkxq7ng9wnqbd77xn8d81f2iz8g61y5m0r3gp0gi0q59jm8ay"
6+ "sha256": "0s1183arrwldcs50qhzgnv94v24n9bgq6dfq64wp0a3q2nzyvgwh"
7}
7}
release.nix+27−17
@@ -17,26 +17,36 @@ let
17 ] ++ lib.optionals (reflex-platform.iosSupport) [
17 ] ++ lib.optionals (reflex-platform.iosSupport) [
18 "ghcIosAarch64"
18 "ghcIosAarch64"
19 ];
19 ];
20+ variations = map (v: "reflex" + v) [
21+ "-dontUseTemplateHaskell"
22+ ""
23+ ];
20− hsPkgs = lib.genAttrs compilers (ghc: let
24+ compilerPkgs = lib.genAttrs compilers (ghc: let
21− ghc' = reflex-platform.${ghc}.override {
25+ variationPkgs = lib.genAttrs variations (variation: let
22− overrides = self: super: let
26+ reflex-platform = reflex-platform-fun {
27+ inherit system;
28+ __useTemplateHaskell = variation == "reflex"; # TODO hack
29+ haskellOverlays = [
30+ # Use this package's source for reflex
31+ (self: super: {
32+ _dep = super._dep // {
23− reflexSrc = builtins.filterSource (path: type: !(builtins.elem (baseNameOf path) [
33+ reflex = builtins.filterSource (path: type: !(builtins.elem (baseNameOf path) [
24− "default.nix"
25− "release.nix"
34+ "release.nix"
26− ".git"
35+ ".git"
27− "dist"
36+ "dist"
28− ])) ./.;
37+ ])) ./.;
29− in {
38+ };
30− reflex-dontUseTemplateHaskell = self.callCabal2nixWithOptions "reflex" reflexSrc "-f -use-template-haskell" {};
39+ })
31− reflex = self.callCabal2nixWithOptions "reflex" reflexSrc "-f +use-template-haskell" {};
40+ ];
32 };
41 };
33− };
42+ in reflex-platform.${ghc}.reflex);
34− in {
43+ in variationPkgs // {
35− inherit (ghc') reflex reflex-dontUseTemplateHaskell;
44+ cache = reflex-platform.pinBuildInputs "reflex-${system}-${ghc}"
45+ (builtins.attrValues variationPkgs);
36 });
46 });
37− in hsPkgs // {
47+ in compilerPkgs // {
38 cache = reflex-platform.pinBuildInputs "reflex-${system}"
48 cache = reflex-platform.pinBuildInputs "reflex-${system}"
39− (lib.concatLists (map builtins.attrValues (builtins.attrValues hsPkgs)));
49+ (map (a: a.cache) (builtins.attrValues compilerPkgs));
40 });
50 });
41
51
42 metaCache = native-reflex-platform.pinBuildInputs "reflex-everywhere"
52 metaCache = native-reflex-platform.pinBuildInputs "reflex-everywhere"
src/Reflex/Network.hs+1−1
@@ -20,7 +20,7 @@ import Reflex.NotReady.Class
20import Reflex.PostBuild.Class
20import Reflex.PostBuild.Class
21
21
22-- | A 'Dynamic' "network": Takes a 'Dynamic' of network-creating actions and replaces the network whenever the 'Dynamic' updates.
22-- | A 'Dynamic' "network": Takes a 'Dynamic' of network-creating actions and replaces the network whenever the 'Dynamic' updates.
23−-- The returned Event of network results fires when the 'Dynamic' updates.
23+-- The returned Event of network results fires at post-build time and when the 'Dynamic' updates.
24-- Note: Often, the type 'a' is an Event, in which case the return value is an Event-of-Events, where the outer 'Event' fires
24-- Note: Often, the type 'a' is an Event, in which case the return value is an Event-of-Events, where the outer 'Event' fires
25-- when switching networks. Such an 'Event' would typically be flattened (via 'switchPromptly').
25-- when switching networks. Such an 'Event' would typically be flattened (via 'switchPromptly').
26networkView :: (NotReady t m, Adjustable t m, PostBuild t m) => Dynamic t (m a) -> m (Event t a)
26networkView :: (NotReady t m, Adjustable t m, PostBuild t m) => Dynamic t (m a) -> m (Event t a)
src/Reflex/Spider/Internal.hs+9
@@ -103,6 +103,7 @@ import qualified Reflex.Host.Class
103import Reflex.NotReady.Class
103import Reflex.NotReady.Class
104import Reflex.Patch
104import Reflex.Patch
105import qualified Reflex.Patch.DMapWithMove as PatchDMapWithMove
105import qualified Reflex.Patch.DMapWithMove as PatchDMapWithMove
106+import Reflex.PerformEvent.Base (PerformEventT)
106
107
107#ifdef DEBUG_TRACE_EVENTS
108#ifdef DEBUG_TRACE_EVENTS
108import qualified Data.ByteString.Char8 as BS8
109import qualified Data.ByteString.Char8 as BS8
@@ -2705,3 +2706,11 @@ instance MonadAtomicRef (SpiderHostFrame x) where
2705instance PrimMonad (SpiderHostFrame x) where
2706instance PrimMonad (SpiderHostFrame x) where
2706 type PrimState (SpiderHostFrame x) = PrimState IO
2707 type PrimState (SpiderHostFrame x) = PrimState IO
2707 primitive = SpiderHostFrame . EventM . primitive
2708 primitive = SpiderHostFrame . EventM . primitive
2709+
2710+instance NotReady (SpiderTimeline x) (SpiderHost x) where
2711+ notReadyUntil _ = return ()
2712+ notReady = return ()
2713+
2714+instance HasSpiderTimeline x => NotReady (SpiderTimeline x) (PerformEventT (SpiderTimeline x) (SpiderHost x)) where
2715+ notReadyUntil _ = return ()
2716+ notReady = return ()
src/Reflex/Workflow.hs+1−1
@@ -34,7 +34,7 @@ workflow w0 = do
34 rec eResult <- networkHold (unWorkflow w0) $ fmap unWorkflow $ switch $ snd <$> current eResult
34 rec eResult <- networkHold (unWorkflow w0) $ fmap unWorkflow $ switch $ snd <$> current eResult
35 return $ fmap fst eResult
35 return $ fmap fst eResult
36
36
37−-- | Similar to 'workflow', but outputs an 'Event' that fires whenever the current 'Workflow' is replaced by the next 'Workflow'.
37+-- | Similar to 'workflow', but outputs an 'Event' that fires at post-build time and whenever the current 'Workflow' is replaced by the next 'Workflow'.
38workflowView :: forall t m a. (Reflex t, NotReady t m, Adjustable t m, MonadFix m, MonadHold t m, PostBuild t m) => Workflow t m a -> m (Event t a)
38workflowView :: forall t m a. (Reflex t, NotReady t m, Adjustable t m, MonadFix m, MonadHold t m, PostBuild t m) => Workflow t m a -> m (Event t a)
39workflowView w0 = do
39workflowView w0 = do
40 rec eResult <- networkView . fmap unWorkflow =<< holdDyn w0 eReplace
40 rec eResult <- networkView . fmap unWorkflow =<< holdDyn w0 eReplace