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.