Skip to content

Spurious recompilation in GHCi due to incorrect pruning logic

The pruneCache function assumes that the list of CachedInfo all have unique ModuleName, this is not true:

  • In normal compilation, the same module name can appear for a file and it's boot file.
  • In multiple home unit compilation the same ModuleName can appear in different units

The fix is to use a NodeKey as the actual key for the interfaces which includes ModuleName, IsBoot and UnitId.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information