Changes between Version 20 and Version 21 of Status/Oct10


Ignore:
Timestamp:
Nov 1, 2010 10:49:50 AM (3 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Status/Oct10

    v20 v21  
    2525 * 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]]. 
    2626 
    27  * Simon M did a lot of work on the runtime system.  In particular he substantially improved the way that thunks are handled in a concurrent programs.  '''Simon: a little more info?''' 
     27 * As reported in the previous status update, the runtime system has undergone substantial changes to the implementation of lazy evaluation in parallel, particularly in the way that threads block and wake up again.  Certain benchmarks show significant improvements, and some cases of wildly unpredictable behaviour when using large numbers of threads are now much more consistent. 
    2828 
    29  * Simon M designed and implemented a new API for asynchronous exceptions.  '''Simon: describe''' 
     29 * The API for asynchronous exceptions has had a redesign.  Previously the combinators `block` and `unblock` were used to prevent asynchronous exceptions from striking during critical sections, but these had some serious disadvantages, particularly a lack of modularity where a library function could unblock asynchronous exceptions despite a prevailing `block`.  The new API closes this loophole, and also changes the terminology: preventing asynchronous exceptions is now called "masking", and the new combinator is `mask`.  See the documentation for the new API in `Control.Exception` for more details. 
    3030 
    3131We are fortunate to have a growing team of people willing to roll up their 
     
    6161== Packages and the runtime system == 
    6262 
    63 '''Simon M''' 
     63 * Simon Marlow is working on a new garbage collector that is designed to improve scaling of parallel programs beyond small numbers of cores, by allowing each processor core to collect its own local heap independently of the other cores.  Some encouraging preliminary results were reported in a [http://hackage.haskell.org/trac/ghc/blog/2010/9#new-gc-preview blog post].  Work on this continues; the complexity of the system and the number of interacting design choices means that achieving an implementation that works well in a broad variety of situations is proving to be quite a challenge. 
    6464 
    65  * Independent parallel garbage collection [Simon M] 
    66  * Better package management (esp wrt profiling) 
    67  * Glorious new back end -fuse-new-codegen 
     65 * The "new back end" is still under construction.  This is a rewrite of the part of GHC that turns STG syntax into C--, i.e. the bit between the Core optimisation passes and the native code generator.  The rewrite is based on  
     66[Hoopl], a data-flow optimisation framework.  Ultimately this rewrite should enable better code generation.  The new code generator is already in GHC, but turned off by default; you get it with the flag `-fuse-new-codegen`.  Don't expect to get better code with this flag yet! 
    6867 
    6968== The Parallel Haskell Project == 
     
    107106 
    108107 * [!TemplateHaskell] New directions for Template Haskell, Peyton Jones, blog post October 2010, http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal 
     108 
     109 * [Hoopl] Hoopl: A Modular, Reusable Library for 
     110Dataflow Analysis and Transformation, http://research.microsoft.com/en-us/um/people/simonpj/papers/c--/dfopt.pdf