Changes between Version 20 and Version 21 of Status/Oct10

Nov 1, 2010 10:49:50 AM (5 years ago)



  • 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 [[ Seq]].
    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.
    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.
    3131We are fortunate to have a growing team of people willing to roll up their
    6161== Packages and the runtime system ==
    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 [ 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.
    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!
    6968== The Parallel Haskell Project ==
    108107 * [!TemplateHaskell] New directions for Template Haskell, Peyton Jones, blog post October 2010,
     109 * [Hoopl] Hoopl: A Modular, Reusable Library for
     110Dataflow Analysis and Transformation,