Consider storing direct home module dependencies instead of transitive closure in interface files
Haskell interface files (*.hi) store a list of the transitive closure of home module dependencies. With !931 (closed), after (incremental) builds, this list is guaranteed to be up to date (noted on the wiki). Unfortunately this means that recompilation may be done even though the object file hasn't changed (only the interface file). This also results in more cases that we touch the interface file, which can cause more recompilation in e.g. a make build system (see note on the wiki).
By swapping from the transitive closure of home module dependencies to just the direct dependencies, this list can be kept up to date while avoiding many unneeded recompilations and touching the interface file. This is a good use case (note it assumes optimizations are disabled).
Some work needs to be done to verify that this change is actually possible. What are the current uses of this info (see here).
There is probably a similar issue with transitive closure of packages. Investigate if this can be simplified too.