Repository navigation
Make things simpler and more predictable - #21
Conversation
443ce28 to
ffd0073
Compare
|
Great, so was the problem that the simplifier had reordered the evaluation because There are a few tests for this package, but you have to run them as part of a GHC build (unfortunately). Do they still pass? |
|
Oh, I didn't run tests because I assumed Travis did. I can try to do that today. |
|
And yes, I believe the |
* `Eval` has always been a hand-written copy of `IO`. Use a newtype wrapper around `IO` instead. This gives us the necessary instances for free and shifts the proof obligations into `base`. * Use `unsafeDupablePerformIO` instead of applying `realWorld#` directly. This should make the optimizer much less likely to eat our shorts. * Redefine `rparWith` to do the simplest thing that could possibly work. It seems to do so. * Remove the rewrite rule for `parList`; as far as I can tell, it slows things down. Fixes haskell#17
ffd0073 to
9ea4c07
Compare
|
Looks like the tests pass. See ghc/ghc#144 (the Hadrian failure has nothing to do with me). |
|
Let me restate: the various failures in different flavors seem quite unrelated to this change and to each other. |
|
I don't think CircleCI actually ran the tests. We don't build the parallel package by default, it has to be enabled explicitly with |
|
I've now run the tests locally and they pass. |
|
Ok. It would be good to have more tests so that this bug doesn't return, but I'll accept the PR in the meantime. |
Evalhas always been a hand-written copy ofIO. Usea newtype wrapper around
IOinstead. This gives us thenecessary instances for free and shifts the proof obligations
into
base.Use
unsafeDupablePerformIOinstead of applyingrealWorld#directly. This should make the optimizer much less likely to
eat our shorts.
Redefine
rparWithto do the simplest thing that couldpossibly work. It seems to do so.
Remove the rewrite rule for
parList; as far as I can tell,it slows things down.
Fixes #17
Closes #9