Interface file freshness checking without populating NameCache
Currently, an interface file's freshness is checked via checkOldIface
which takes a complete ModIface
as argument. So to use this function, .hi
files need to be fully deserialized using GHC.Iface.Binary.readBinIface
, which consists of loading the interface header, then the dictionary, then the symbol table, before deserializing the rest of the interface. Loading the symbol table has the side-effect of populating the NameCache
.
However, checkOldIface
(via checkVersions
in the same module) only needs access to the various fingerprints stored in ModIfaceBackend
, plus mi_deps
, but notably there's no need to look at the actual contents of the interface file such as mi_decls
. So it should be possible to split out the parts of ModIface
/ ModIfaceBackend
that are needed for freshness checking, and then those parts could be deserialized without having to populate the NameCache
.