Changes between Version 1 and Version 2 of Status/Oct10


Ignore:
Timestamp:
Oct 22, 2010 10:56:47 PM (4 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/Oct10

    v1 v2  
    33GHC is humming along.  We are currently deep into the release cycle for GHC 7.0.  We have finally bumped the major version number, becuase GHC 7.0 has quite a bit of new stuff 
    44 
    5  * As long promised, Simon and Dimitrios have spend a good chunk of the summer doing a complete rewrite of the constraint solver in the type inference engine.  Because of GHC's myriad type-system extensions, especially GADTs and type famlies, the old engine had begun to resemble the final stages of a game of Jenga.  It was a delicately-balanced pile of blocks that lived in constant danger of complete collapse, and had become extremely different to modify (or even to understand).  The new inference engine is much more modular and robust; it is described in detail in our paper [[http://haskell.org/haskellwiki/Simonpj/Talk:OutsideIn OutsideIn]].   
     5 * As long promised, Simon PJ and Dimitrios have spent a good chunk of the summer doing a complete rewrite of the constraint solver in the type inference engine.  Because of GHC's myriad type-system extensions, especially GADTs and type famlies, the old engine had begun to resemble the final stages of a game of Jenga.  It was a delicately-balanced pile of blocks that lived in constant danger of complete collapse, and had become extremely different to modify (or even to understand).  The new inference engine is much more modular and robust; it is described in detail in our paper [[http://haskell.org/haskellwiki/Simonpj/Talk:OutsideIn OutsideIn]].   
    66 
    77 As a result we have closed dozens of open type inference bugs, especially related to GADTs and type families. 
     
    1515g2 ys = map f ys 
    1616}}} 
    17 Here, `f` will be inlined into `g1` as you'd expect, but obviously not into `g2` (since it's not applied to anything). 
     17 Here, `f` will be inlined into `g1` as you'd expect, but obviously not into `g2` (since it's not applied to anything). 
    1818However `f`'s right hand side will be optimised (sepraately from the copy retained for inlining) so that the 
    1919call from `g2` runs optimised code. 
     
    4848 * Stephanie Weirich and Steve Zdancewic had a great sabbatical year at Cambridge.  One of the things we worked on, with Brent Yorgey who came as an intern, was to close the embarrassing hole in the type system concerning "newtype deriving" (see Trac bug #1496).  I have delayed fixing until I could figure out a Decent Solution, but now we know; see our 2011 POPL paper [Newtype].  Brent is working on some infrastructal changes to GHC's Core language, and then we'll be ready to tackle the main issue. 
    4949 
    50  * Next after that is a mechanism for promotimg types to become kinds, and data constructors to become types, so that you can do ''typed'' functional programming at the type level.  Conor McBride's SHE prototype is the inspiration here [SHE].  Currently it is, embarrassingly, essentially untyped.   
     50 * Next after that is a mechanism for promotimg types to become kinds, and data constructors to become types, so that you can do ''typed'' functional programming at the type level.  Conor !McBride's SHE prototype is the inspiration here [SHE].  Currently it is, embarrassingly, essentially untyped.   
    5151 
    5252 * Iavor Diatchki plans to add numeric types, so that you can have a type like `Bus 8`, and do simple arithmetic at the type level.  You can encode this stuff, but it's easier to use and more powerful to do it directly.