Changes between Version 16 and Version 17 of Status/May11


Ignore:
Timestamp:
Apr 29, 2011 8:31:14 AM (3 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/May11

    v16 v17  
    1  
    21'''WORK IN PROGRESS''' 
    32 
     
    54 
    65GHC is still busy as ever. The GHC 7.0 branch has come and gone, and now that the branch has been closed we have finally made the long-planned switch from darcs to git. Meanwhile, we are busily working towards the 7.2 branch, and hope to make the 7.2.1 release in June. Some of the forthcoming highlights are: 
     6 
     7 * In the autumn, Dimitrios and Simon PJ implemented a completely 
     8   new constraint solver for the type checker; we also complete an 
     9   epic JFP paper describing how it works [[http://research.microsoft.com/en-us/um/people/simonpj/papers/constraints/ OutsideIn]].  The new 
     10   solver is far more tractable and maintainable than the old type 
     11   checker, and has fixed many outstanding problems.  We are still 
     12   shaking out the last bugs, and we have some nifty ideas for improving 
     13   performance.  Based on this new foundation, we are planning to 
     14   develop the type system further, notably by adding a richer kind 
     15   system along the lines of Conor !McBride's SHE system [[http://personal.cis.strath.ac.uk/~conor/pub/she/ SHE]]. 
    716 
    817 * GHC's intermediate language (which we call "Core") is a simple, 
     
    1928 Core necessarily has to become a bit more complicated.  For a few 
    2029 years wa have been using an extension of System F, called System 
    21  FC, as described in our paper [FC}.  However, the way that System FC 
     30 FC, as described in our paper [[http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/ FC]].  However, the way that System FC 
    2231 was actually ''implemented'' in GHC's Core language was a bit unsatisfactory 
    2332 so, with help from Brent Yorgey, Simon PJ is busy re-engineering it.  
     
    2635 squeezed into `Type`.  Moreover, these coercion terms can get big,  
    2736 so there's a new "coercion optimiser" to replace big coercions by 
    28  equivalent smaller ones. All this is described in our new paper [New FC]. 
     37 equivalent smaller ones. All this is described in our new paper [http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/ !NewFC]. 
    2938 These changes will (finally) complete the type-family story by 
    3039 making so-called "equality superclasses" work for the first time. 
    3140 
    32  * In the autumn, Dimitrios and Simon PJ implemented a completely 
    33    new constraint solver for the type checker; we also complete an 
    34    epic JFP paper describing how it works [OutsideIn].  The new 
    35    solver is far more tractable and maintainable than the old type 
    36    checker, and has fixed many outstanding problems.  We are still 
    37    shaking out the last bugs, and we have some ideas for improving 
    38    performance.  Based on this new foundation, we are planning to 
    39    develop the type system further, notably by adding a richer kind 
    40    system along the lines of Conor McBride's SHE system [SHE]. 
     41 * '''Pedro Magalhaes''' has nearly completed his implementation of the 
     42   '''derivable type classes''' mechanism described in his 2010 
     43   Haskell Symposium paper [[http://www.dreixel.net/research/pdf/gdmh_nocolor.pdf Derivable]].  It will be in GHC 7.2. 
    4144 
    42  * Pedro Magalhaes has nearly completed his implementation of the 
    43    '''derivable type classes''' mechanism described in his 2010 
    44    Haskell Symposium paper [Derivable].  It will be in GHC 7.2. 
    45  
    46  * Edward Yang has done a lot of work on the long-promised new 
     45 * '''Edward Yang''' has done a lot of work on the long-promised new 
    4746   code-generation path.  Hoopl is now fully part of GHC, and 
    4847   the new path uses it extensively.  We are now working on making 
    4948   the new pipeline generate better code than the old one.  Stay 
    50    tuned. * '''Simon PJ: New coercions''' 
    51  
    52  
    53  
    54  * '''Simon PJ: Any update? Any regressions remaining?''' Previous entry: ''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 families, 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]].  A blog post describes some consequential changes to let generalisation [[http://hackage.haskell.org/trac/ghc/blog/LetGeneralisationInGhc7 LetGen]].'' 
    55  
     49   tuned. 
    5650 
    5751 * '''Simon Marlow: Any update?''' Previous entry: ''In joint work with Phil Trinder and his colleagues at Herriot Watt, Simon M designed implemented a new '''parallel strategies library''', described in their 2010 Haskell Symposium paper [[http://www.haskell.org/~simonmar/papers/strategies.pdf Seq]].'' 
     
    8478Here's a selection that we know about. 
    8579 
    86  * ''Pedro Magalhaes is implementing the '''derivable type classes''' mechanism described in his 2010 Haskell Symposium paper [[http://www.dreixel.net/research/pdf/gdmh_nocolor.pdf Derivable]].  I plan for this to replace GHC's current derivable-type-class mechanism, which has a poor power-to-weight ratio and is little used.'' 
    87  
    88  * ''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 [[http://www.cis.upenn.edu/~sweirich/newtypes.pdf Newtype]].  Brent is working on some infrastructal changes to GHC's Core language, and then we'll be ready to tackle the main issue.'' 
    89  
    90  * ''Next after that is a mechanism for '''promoting 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 [[http://personal.cis.strath.ac.uk/~conor/pub/she/ SHE]].  Currently it is, embarrassingly, essentially untyped.'' 
    91  
    92  * '' '''Template Haskell''' seems to be increasingly widely used.  Simon PJ has written a proposal for a raft of improvements, which we plan to implement in the new year [[http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal TemplateHaskell]].'' 
    93  
    94  * ''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.'' 
     80 * '''Jeff Epstein''' has implemented a library that brings Erlang's programming model to Haskell programmers.  In particular, you can write a Haskell program that runs on a cluster of machines that do not share memory.  It is all based on a modest but powerful language extension that makes it possible for a programmer to work with "static" functions; that is, ones consisting of pure code with no free variables.  The paper that describes all this is called "Haskell for the cloud" [[http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/ Cloud]]. 
    9581 
    9682 * ''David Mazieres at Stanford wants to implement '''Safe Haskell''', a flag for GHC that will guarantee that your program does not use `unsafePerformIO`, foreign calls, RULES, and other stuff stuff.'' 
     
    11197with consulting and engineering support from Well-Typed. Each organisation is working on its own particular project making use of parallel Haskell. The overall goal is to demonstrate successful serious use of parallel Haskell, and along the way to apply engineering effort to any problems with the tools that the organisations might run into. 
    11298 
    113 For more details, see the '''link:'''parallel GHC project entry. 
     99For more details, see the '''link:'''parallel GHC project entry, and the project home page [[http://www.haskell.org/haskellwiki/Parallel_GHC_Project !ParallelGHCProject]] 
    114100 
    115101== Data Parallel Haskell == 
     
    124110'''TODO: Remove redundant entries''' 
    125111 
    126  * [Bryan] "A brief tale of faster equality", Bryan O'Sullivan blog post, Oct 2010, http://www.serpentine.com/blog/2010/10/19/a-brief-tale-of-faster-equality/. 
    127  
    128  * [Containers] "The performance of the Haskell containers package", Straka, Haskell Symposium 2010, http://research.microsoft.com/~simonpj/papers/containers/containers.pdf 
     112 * [Cloud] "Haskell for the cloud", Epstein, Black, Peyton Jones, submitted to ICFP 2011, http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/ 
    129113 
    130114 * [Derivable] "A generic deriving mechanism for Haskell", Magalhães, Dijkstra, Jeuring and Löh, Haskell Symposium 2010, http://www.dreixel.net/research/pdf/gdmh_nocolor.pdf. 
    131115 
    132  * [!LetGen] "Let generalisation in GHC 7.0", Peyton Jones, blog post Sept 2010, http://hackage.haskell.org/trac/ghc/blog/LetGeneralisationInGhc7 
     116 * [FC] "System F with type equality coercions", Sulzmann, Chakravarty, Peyton Jones, TLDI 2007, http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/ 
    133117 
    134  * [Newtype] "Generative Type Abstraction and Type-level Computation", Weirich, Zdancewic, Vytiniotis, and Peyton Jones, POPL 2010, http://www.cis.upenn.edu/~sweirich/newtypes.pdf 
     118 * [!NewFC] "Practical aspects of evidence-based compilation in System FC", Vytiniotis and Peyton Jones, submitted to ICFP 2011, http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/ 
    135119 
    136  * [Llvm] "An LLVM Backend for GHC", Terei and Chakravarty, Haskell Symposium 2010, http://www.cse.unsw.edu.au/~davidt/downloads/ghc-llvm-hs10.pdf 
     120 * [!OutsideIn] "Modular type inference iwth local assumptions", Vytiniotis, Peyton Jones, Schrijvers, and Sulzmann, Journal of Functional Programming (to appear), http://research.microsoft.com/en-us/um/people/simonpj/papers/constraints/ 
     121 
     122 * [!ParallelGhcProject] "The Parallel GHC Project home page", http://www.haskell.org/haskellwiki/Parallel_GHC_Project 
    137123 
    138124 * [Seq] "Seq no more", Marlow, Maier, Trinder, Loidl, and Aswad, Haskell Symposium 2010, http://www.haskell.org/~simonmar/papers/strategies.pdf