diff options
Diffstat (limited to 'docs/users_guide')
-rw-r--r-- | docs/users_guide/separate_compilation.rst | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/docs/users_guide/separate_compilation.rst b/docs/users_guide/separate_compilation.rst index f5c53171ac..9d11830237 100644 --- a/docs/users_guide/separate_compilation.rst +++ b/docs/users_guide/separate_compilation.rst @@ -659,14 +659,15 @@ jot. So now… GHC calculates a fingerprint (in fact an MD5 hash) of each interface file, and of each declaration within the interface file. It also keeps in every interface file a list of the fingerprints of everything it used -when it last compiled the file. If the source file's modification date -is earlier than the ``.o`` file's date (i.e. the source hasn't changed -since the file was last compiled), and the recompilation checking is on, -GHC will be clever. It compares the fingerprints on the things it needs -this time with the fingerprints on the things it needed last time -(gleaned from the interface file of the module being compiled); if they -are all the same it stops compiling early in the process saying -“Compilation IS NOT required”. What a beautiful sight! +when it last compiled the file. If the MD5 hash of the source file +stored in the ``.hi`` file hasn't changed, the ``.o`` file's +modification date is greater than or equal to that of the ``.hi`` file, +and the recompilation checking is on, GHC will be clever. It compares +the fingerprints on the things it needs this time with the fingerprints +on the things it needed last time (gleaned from the interface file of +the module being compiled); if they are all the same it stops compiling +early in the process saying “Compilation IS NOT required”. What a +beautiful sight! You can read about :ghc-wiki:`how all this works <commentary/compiler/recompilation-avoidance>` in the GHC commentary. |