on develop help sign in
Merge branch 'develop' into extra-query-instances
commit3dbe56c014b06fc3bbd3989c97218ad32fe291a2 authorJohn Ericson <John.Ericson@Obsidian.Systems> dateThu 12 Dec 2019, 19:08 (7 years ago) parentb21a3445bbfe7d
7 files changed+58−64
ChangeLog.md+17 default.nix−49 dep/reflex-platform/github.json+3−3 release.nix+27−10 src/Reflex/Network.hs+1−1 src/Reflex/Spider/Internal.hs+9 src/Reflex/Workflow.hs+1−1
ChangeLog.md+17
@@ -5,9 +5,14 @@
55* Data.WeakBag.traverse and Data.FastWeakBag.traverse have been
66 renamed to Data.WeakBag.traverse_ and Data.FastWeakBag.traverse_
77 respectively.
8+
89* Fixes a bug in `Reflex.Patch.MapWithMove.patchThatSortsMapWith` that was producing invalid `PatchMapWithMove`.
910* Additional instances for `Group` and `Query` classes for basic types.
1011
12+* Add missing `NotReady` instances:
13+ - `instance NotReady (SpiderTimeline x) (SpiderHost x)`
14+ - `instance HasSpiderTimeline x => NotReady (SpiderTimeline x) (PerformEventT (SpiderTimeline x) (SpiderHost x))`
15+
1116## 0.6.2.4
1217
1318* Update to monoidal-containers 0.6
@@ -19,7 +24,9 @@
1924## 0.6.2.2
2025
2126* Support these >= 1. Add `split-these` flag to control whether to use new these/semialign combination or not.
27+
2228* Update version bounds to fix some CI failures
29+
2330* Add travis CI configuration
2431
2532## 0.6.2.1
@@ -45,21 +52,31 @@
4552
4653* Fix `holdDyn` so that it is lazy in its event argument
4754 These produce `DMap`s whose values needn't be `Identity`.
55+
4856* Stop using the now-deprecated `*Tag` classes (e.g., `ShowTag`).
57+
4958* Fix `holdDyn` so that it is lazy in its event argument.
5059
5160## 0.6.1.0
5261
5362* Re-export all of `Data.Map.Monoidal`
63+
5464* Fix `QueryT` and `RequesterT` tests
5565
5666## 0.6.0.0 -- 2019-03-20
5767
5868* Deprecate `FunctorMaybe` in favor of `Data.Witherable.Filterable`. We still export `fmapMaybe`, `ffilter`, etc., but they all rely on `Filterable` now.
69+
5970* Rename `MonadDynamicWriter` to `DynamicWriter` and add a deprecation for the old name.
71+
6072* Remove many deprecated functions.
73+
6174* Add a `Num` instance for `Dynamic`.
75+
6276* Add `matchRequestsWithResponses` to make it easier to use `Requester` with protocols that don't do this matching for you.
77+
6378* Add `withRequesterT` to map functions over the request and response of a `RequesterT`.
79+
6480* Suppress nil patches in `QueryT` as an optimization. The `Query` type must now have an `Eq` instance.
81+
6582* Add `throttleBatchWithLag` to `Reflex.Time`. See that module for details.
default.nixdeleted−49
@@ -1,49 +0,0 @@
1−{ mkDerivation, ghc, base, bifunctors, containers, deepseq
2−, dependent-map, dependent-sum, exception-transformers
3−, haskell-src-exts, haskell-src-meta, hlint, lens, MemoTrie
4−, monad-control, mtl, primitive, random, ref-tf
5−, semigroupoids , semigroups, split, stdenv, stm, syb
6−, template-haskell , these, time, transformers
7−, transformers-compat, unbounded-delays, prim-uniq
8−, data-default, filepath, directory, filemanip, ghcjs-base
9−, monoidal-containers, witherable, profunctors
10−, splitThese ? (semialign != null), semialign ? null, these-lens ? null
11−, useTemplateHaskell ? true
12−}:
13−mkDerivation {
14− pname = "reflex";
15− version = "0.6.2.4";
16− src = builtins.filterSource (path: type: !(builtins.elem (baseNameOf path) [
17− "default.nix"
18− "release.nix"
19− ".git"
20− "dist"
21− ])) ./.;
22− libraryHaskellDepends = [
23− base bifunctors containers dependent-map dependent-sum
24− exception-transformers lens
25− MemoTrie monad-control mtl primitive ref-tf semigroupoids
26− semigroups stm syb template-haskell these transformers
27− transformers-compat prim-uniq
28− base bifunctors containers deepseq dependent-map dependent-sum
29− mtl ref-tf split transformers data-default
30− random time unbounded-delays monoidal-containers witherable
31− profunctors
32− ] ++ (if ghc.isGhcjs or false then [
33− ghcjs-base
34− ] else []) ++ (if !useTemplateHaskell then [] else [
35− haskell-src-exts haskell-src-meta
36− ]) ++ (if splitThese then [
37− semialign
38− these-lens
39− ] else []);
40− testHaskellDepends = if ghc.isGhcjs or false then [] else [
41− hlint filepath directory filemanip
42− ];
43− configureFlags =
44− stdenv.lib.optional (!useTemplateHaskell) [ "-f-use-template-haskell" ] ++
45− stdenv.lib.optional (!splitThese) [ "-f-split-these" ];
46− homepage = "https://github.com/reflex-frp/reflex";
47− description = "Higher-order Functional Reactive Programming";
48− license = stdenv.lib.licenses.bsd3;
49−}
dep/reflex-platform/github.json+3−3
@@ -1,7 +1,7 @@
11{
22 "owner": "reflex-frp",
33 "repo": "reflex-platform",
4− "branch": "jailbreakTheselens",
5− "rev": "4284ed527c96c373538dc7e31776d9a50ca6aa91",
6− "sha256": "1m1nkxq7ng9wnqbd77xn8d81f2iz8g61y5m0r3gp0gi0q59jm8ay"
4+ "branch": "develop",
5+ "rev": "e7b76dd552a10916c7d8702c11292dac4f4299ea",
6+ "sha256": "0s1183arrwldcs50qhzgnv94v24n9bgq6dfq64wp0a3q2nzyvgwh"
77}
release.nix+27−10
@@ -17,19 +17,36 @@ let
1717 ] ++ lib.optionals (reflex-platform.iosSupport) [
1818 "ghcIosAarch64"
1919 ];
20− hsPkgs = lib.genAttrs compilers (ghc: let
21− ghc' = reflex-platform.${ghc}.override {
22− overrides = self: super: {
23− reflex-dontUseTemplateHaskell = self.callPackage ./. { useTemplateHaskell = false; };
24− reflex = self.callPackage ./. { useTemplateHaskell = true; };
20+ variations = map (v: "reflex" + v) [
21+ "-dontUseTemplateHaskell"
22+ ""
23+ ];
24+ compilerPkgs = lib.genAttrs compilers (ghc: let
25+ variationPkgs = lib.genAttrs variations (variation: 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 // {
33+ reflex = builtins.filterSource (path: type: !(builtins.elem (baseNameOf path) [
34+ "release.nix"
35+ ".git"
36+ "dist"
37+ ])) ./.;
38+ };
39+ })
40+ ];
2541 };
26− };
27− in {
28− inherit (ghc') reflex reflex-dontUseTemplateHaskell;
42+ in reflex-platform.${ghc}.reflex);
43+ in variationPkgs // {
44+ cache = reflex-platform.pinBuildInputs "reflex-${system}-${ghc}"
45+ (builtins.attrValues variationPkgs);
2946 });
30− in hsPkgs // {
47+ in compilerPkgs // {
3148 cache = reflex-platform.pinBuildInputs "reflex-${system}"
32− (lib.concatLists (map builtins.attrValues (builtins.attrValues hsPkgs)));
49+ (map (a: a.cache) (builtins.attrValues compilerPkgs));
3350 });
3451
3552 metaCache = native-reflex-platform.pinBuildInputs "reflex-everywhere"
src/Reflex/Network.hs+1−1
@@ -20,7 +20,7 @@ import Reflex.NotReady.Class
2020import Reflex.PostBuild.Class
2121
2222-- | 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.
2424-- Note: Often, the type 'a' is an Event, in which case the return value is an Event-of-Events, where the outer 'Event' fires
2525-- when switching networks. Such an 'Event' would typically be flattened (via 'switchPromptly').
2626networkView :: (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
103103import Reflex.NotReady.Class
104104import Reflex.Patch
105105import qualified Reflex.Patch.DMapWithMove as PatchDMapWithMove
106+import Reflex.PerformEvent.Base (PerformEventT)
106107
107108#ifdef DEBUG_TRACE_EVENTS
108109import qualified Data.ByteString.Char8 as BS8
@@ -2705,3 +2706,11 @@ instance MonadAtomicRef (SpiderHostFrame x) where
27052706instance PrimMonad (SpiderHostFrame x) where
27062707 type PrimState (SpiderHostFrame x) = PrimState IO
27072708 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
3434 rec eResult <- networkHold (unWorkflow w0) $ fmap unWorkflow $ switch $ snd <$> current eResult
3535 return $ fmap fst eResult
3636
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'.
3838workflowView :: 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)
3939workflowView w0 = do
4040 rec eResult <- networkView . fmap unWorkflow =<< holdDyn w0 eReplace