Sandy Maguire
Sandy Maguire
ok so HERE'S THE THING. in modeled code, the unmodeled stuff _never actually exists_ so it's not like that variance thing is an issue. The problem here is actually the...
Maybe `tab` and `ta` would be better names than `t1` and `t2`?
No. See https://github.com/wireapp/wire-server/pull/1917#issuecomment-969267902 for how noisy the current errors can be. Eg, in the message: ``` src/Galley/API/Public.hs: warning: Found a large number of coercions in GHC Core. GHC produced a...
Bonus points if we stick the srcspan into the warning itself. Looks like we can do it via https://hackage.haskell.org/package/ghc-9.2.1/docs/src/GHC.Core.Opt.Monad.html#msg using our span instead of `getSrcSpanM`
Currently, almost all of our time is being spent in `getImplicitShared`. We can shave off a lot of that by specializing it: ```haskell {-# SPECIALIZE getImplicitShared :: SharedObj SymbolicObj2 ℝ2...
Enabling `StrictData` and `-funbox-strict-fields` reduces the allocation by ~7x.
After both of the optimizations above, we're still spending a huge chunk of time inside `getImplicitShared`: ``` Sat Dec 19 18:22 2020 Time and Allocation Profiling Report (Final) cad-exe +RTS...
I think the reason for the massive costs of translate and union in this case is twofold: 1. we're calling `getImplicit` a lot 2. my model has lots of constructions...
I think I've worked out how to do this. The trick is just to give a second interpretation of the symbolic object's free structure. ```haskell merge :: SymbolicObj3 -> SymbolicObj3...
This seems to work! ```haskell merge :: SymbolicObj3 -> SymbolicObj3 -> SymbolicObj3 merge x (UnionR3 d l_s) = unionR d $ x : l_s merge x (DifferenceR3 d (l :...