Compared to the 0.19 release when compiling elm-spa example from
scratch on my computer, this does 17% less allocation and total time
goes from 0.45 to 0.38 (~15%)
Being able to customize the binary serialization format also means that
elmi, elmo, and dat files are a decent bit smaller. No more using
Word64 for the length of variables like “a” and “test”
Need to do some testing with larger codebases to see how this extends
though.
It needs compareByteArrays# which is only available in newer versions
of base and ghc-prim, so this updates those dependencies as well.
The new base and ghc-prim ship with GHC 8.4.3 so I needed to update the
language-glsl constraint as well.
Do not connect:
- when elm-stuff/ is valid
- exploring constraints
Optional connect:
- when elm-stuff/ is invalid
- install
Mandatory connect:
- diff
- bump
- publish
Start figuring out how to localize types again. This version is opaque,
allowing me to find all the current uses, and it can be constructed
from a list of source inputs. This should be good for `make` and `repl`
This change also moves towards getting --debug working again. In
particular, if you are in debug mode, you must have the full transitive
set of module interfaces. By putting that information in the Mode, it
means it only needs to be loaded in that case. In dev and prod mode, no
extra work is needed.
This is neat because you get one error message telling you all the
modules that have Debug remnants.
It is also neat because the Generate.Nitpick module seems like the
perfect place for things like “efficiently detect globally unused
definitions” and “detect packages that are no longer used”