Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
Source project has a limited visibility.
  • Matthew Pickering's avatar
    25977ab5
    Driver Rework Patch · 25977ab5
    Matthew Pickering authored
    This patch comprises of four different but closely related ideas. The
    net result is fixing a large number of open issues with the driver
    whilst making it simpler to understand.
    
    1. Use the hash of the source file to determine whether the source file
    has changed or not. This makes the recompilation checking more robust to
    modern build systems which are liable to copy files around changing
    their modification times.
    
    2. Remove the concept of a "stable module", a stable module was one
    where the object file was older than the source file, and all transitive
    dependencies were also stable. Now we don't rely on the modification
    time of the source file, the notion of stability is moot.
    
    3. Fix TH/plugin recompilation after the removal of stable modules. The
    TH recompilation check used to rely on stable modules. Now there is a
    uniform and simple way, we directly track the linkables which were
    loaded into the interpreter whilst compiling a module. This is an
    over-approximation but more robust wrt package dependencies changing.
    
    4. Fix recompilation checking for dynamic object files. Now we actually
    check if the dynamic object file exists when compiling with -dynamic-too
    
    Fixes #19774 #19771 #19758 #17434 #11556 #9121 #8211 #16495 #7277 #16093
    25977ab5
    History
    Driver Rework Patch
    Matthew Pickering authored
    This patch comprises of four different but closely related ideas. The
    net result is fixing a large number of open issues with the driver
    whilst making it simpler to understand.
    
    1. Use the hash of the source file to determine whether the source file
    has changed or not. This makes the recompilation checking more robust to
    modern build systems which are liable to copy files around changing
    their modification times.
    
    2. Remove the concept of a "stable module", a stable module was one
    where the object file was older than the source file, and all transitive
    dependencies were also stable. Now we don't rely on the modification
    time of the source file, the notion of stability is moot.
    
    3. Fix TH/plugin recompilation after the removal of stable modules. The
    TH recompilation check used to rely on stable modules. Now there is a
    uniform and simple way, we directly track the linkables which were
    loaded into the interpreter whilst compiling a module. This is an
    over-approximation but more robust wrt package dependencies changing.
    
    4. Fix recompilation checking for dynamic object files. Now we actually
    check if the dynamic object file exists when compiling with -dynamic-too
    
    Fixes #19774 #19771 #19758 #17434 #11556 #9121 #8211 #16495 #7277 #16093
Code owners
Assign users and groups as approvers for specific file changes. Learn more.