Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
Source project has a limited visibility.
  • Ryan Scott's avatar
    f975b0b1
    Rework Template Haskell's handling of strictness · f975b0b1
    Ryan Scott authored
    Currently, Template Haskell's treatment of strictness is not enough to
    cover all possible combinations of unpackedness and strictness. In
    addition, it isn't equipped to deal with new features (such as
    `-XStrictData`) which can change a datatype's fields' strictness during
    compilation.
    
    To address this, I replaced TH's `Strict` datatype with
    `SourceUnpackedness` and `SourceStrictness` (which give the programmer a
    more complete toolkit to configure a datatype field's strictness than
    just `IsStrict`, `IsLazy`, and `Unpack`). I also added the ability to
    reify a constructor fields' strictness post-compilation through the
    `reifyConStrictness` function.
    
    Fixes #10697.
    
    Test Plan: ./validate
    
    Reviewers: simonpj, goldfire, bgamari, austin
    
    Reviewed By: goldfire, bgamari
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1603
    
    GHC Trac Issues: #10697
    f975b0b1
    History
    Rework Template Haskell's handling of strictness
    Ryan Scott authored
    Currently, Template Haskell's treatment of strictness is not enough to
    cover all possible combinations of unpackedness and strictness. In
    addition, it isn't equipped to deal with new features (such as
    `-XStrictData`) which can change a datatype's fields' strictness during
    compilation.
    
    To address this, I replaced TH's `Strict` datatype with
    `SourceUnpackedness` and `SourceStrictness` (which give the programmer a
    more complete toolkit to configure a datatype field's strictness than
    just `IsStrict`, `IsLazy`, and `Unpack`). I also added the ability to
    reify a constructor fields' strictness post-compilation through the
    `reifyConStrictness` function.
    
    Fixes #10697.
    
    Test Plan: ./validate
    
    Reviewers: simonpj, goldfire, bgamari, austin
    
    Reviewed By: goldfire, bgamari
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1603
    
    GHC Trac Issues: #10697
Code owners
Assign users and groups as approvers for specific file changes. Learn more.