... | @@ -117,43 +117,26 @@ As ever, there is a lot still to do, and if you wait for us to do something then |
... | @@ -117,43 +117,26 @@ As ever, there is a lot still to do, and if you wait for us to do something then |
|
|
|
|
|
Work continues on improving GHC in various directions. Active projects we know about include:
|
|
Work continues on improving GHC in various directions. Active projects we know about include:
|
|
|
|
|
|
### Cloud Haskell
|
|
- **Cloud Haskell**. The first version of Cloud Haskell has been released, aiming to bring Erlang-style distributed actors to Haskell [ http://hackage.haskell.org/package/remote](http://hackage.haskell.org/package/remote). See also the paper at Haskell Symposium 2011 [ http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/remote.pdf CloudHaskell](http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/remote.pdf CloudHaskell). Next, we're working on expanding the backend to work with HPC environments.
|
|
|
|
|
|
|
|
- **Parallel GHC project**: **Duncan**
|
|
|
|
|
|
The first version of Cloud Haskell has been released, aiming to bring Erlang-style distributed actors to Haskell [ http://hackage.haskell.org/package/remote](http://hackage.haskell.org/package/remote). See also the paper at Haskell Symposium 2011 [ http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/remote.pdf CloudHaskell](http://research.microsoft.com/en-us/um/people/simonpj/papers/parallel/remote.pdf CloudHaskell). Next, we're working on expanding the backend to work with HPC environments.
|
|
- **Data Parallel Haskell**. GHC 7.2 includes rudimentary support for Data Parallel Haskell — just enough for a little experimentation and to run simple benchmarks. We are working on significantly improving this for GHC 7.4. In particular, we aim to support the use of basic types and classes from the standard Prelude (replacing the minimalistic mock Prelude that DPH programs had to use so far), and we are working on drastically improved space and time complexity for shared data structures in nested parallel programs, such as the Barnes-Hut n-body algorithm.
|
|
|
|
|
|
### Liquid types
|
|
>
|
|
|
|
> Binary distributions of GHC 7.x require the installation of separate Data Parallel Haskell libraries from Hackage — follow the instructions in the wiki documentation [ http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell DPH](http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell DPH).
|
|
|
|
|
|
Ranjit Jhala is working on adding liquid types to GHC. Liquid Types are a form of (dependent) refinement types that use predicate abstraction and SMT solvers to carry out type inference. A prototype has been built that works for a subset of the language (without typeclasses) [ http://goto.ucsd.edu/\~rjhala/liquid Liquid](http://goto.ucsd.edu/~rjhala/liquid Liquid).
|
|
|
|
Currently, we are working on ways of handling at the basic typeclasses (Ord, Num etc.), and building
|
|
|
|
a web-interface.
|
|
|
|
|
|
|
|
### Parallel project
|
|
|
|
|
|
|
|
**Duncan**
|
|
|
|
|
|
|
|
### Data Parallel Haskell
|
|
|
|
|
|
|
|
|
|
|
|
GHC 7.2 includes rudimentary support for Data Parallel Haskell — just enough for a little experimentation and to run simple benchmarks. We are working on significantly improving this for GHC 7.4. In particular, we aim to support the use of basic types and classes from the standard Prelude (replacing the minimalistic mock Prelude that DPH programs had to use so far), and we are working on drastically improved space and time complexity for shared data structures in nested parallel programs, such as the Barnes-Hut n-body algorithm.
|
|
|
|
|
|
|
|
|
|
|
|
Binary distributions of GHC 7.x require the installation of separate Data Parallel Haskell libraries from Hackage — follow the instructions in the wiki documentation [ http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell DPH](http://haskell.org/haskellwiki/GHC/Data_Parallel_Haskell DPH).
|
|
|
|
|
|
|
|
|
|
|
|
Moreover, we are working at the third revision of the regular parallel array library [ http://hackage.haskell.org/package/repa Repa](http://hackage.haskell.org/package/repa Repa). It uses indexed types to distinguish multiple array representations, which helps to guide users to write high-performance code. To see it in action, check out Ben Lippmeier's recent demo [ http://youtu.be/v_0Yyl19fiI Quasicrystals](http://youtu.be/v_0Yyl19fiI Quasicrystals).
|
|
|
|
|
|
|
|
## The glorious future
|
|
|
|
|
|
|
|
|
|
>
|
|
|
|
> Moreover, we are working at the third revision of the regular parallel array library [ http://hackage.haskell.org/package/repa Repa](http://hackage.haskell.org/package/repa Repa). It uses indexed types to distinguish multiple array representations, which helps to guide users to write high-performance code. To see it in action, check out Ben Lippmeier's recent demo [ http://youtu.be/v_0Yyl19fiI Quasicrystals](http://youtu.be/v_0Yyl19fiI Quasicrystals).
|
|
|
|
|
|
Also on the go, but not yet fully baked, are:
|
|
- **Contracts**. Work on adding contracts to Haskell, along the lines of Dana Xu's these, but using a first order logic theorem prover to check contract satisfaction (with Koen Claessen, Dimitrios Vytiniotis, Charles-Pierre Astolfi, and Nathan Collins).
|
|
|
|
|
|
- Work on adding contracts to Haskell, along the lines of Dana Xu's these, but using a first order logic theorem prover to check contract satisfaction (with Koen Claessen, Dimitrios Vytiniotis, Charles-Pierre Astolfi, and Nathan Collins).
|
|
- **Liquid types**. Ranjit Jhala is working on adding liquid types to GHC. Liquid Types are a form of (dependent) refinement types that use predicate abstraction and SMT solvers to carry out type inference. A prototype has been built that works for a subset of the language (without typeclasses) [ http://goto.ucsd.edu/\~rjhala/liquid Liquid](http://goto.ucsd.edu/~rjhala/liquid Liquid).
|
|
|
|
Currently, we are working on ways of handling at the basic typeclasses (Ord, Num etc.), and building a web-interface.
|
|
|
|
|
|
- Extending the code generator to exploit vector instructions (with Peter Braam, Paul Monday, Duncan Coutts) [ http://hackage.haskell.org/trac/ghc/wiki/SimdLlvm VectorInstructions](http://hackage.haskell.org/trac/ghc/wiki/SimdLlvm VectorInstructions).
|
|
- **Vector instructions**. Paul Monday and Geoff Mainland are extending the code generator to exploit vector instructions (with Peter Braam, Duncan Coutts) [ http://hackage.haskell.org/trac/ghc/wiki/SimdLlvm VectorInstructions](http://hackage.haskell.org/trac/ghc/wiki/SimdLlvm VectorInstructions).
|
|
|
|
|
|
- A modular package language for Haskell (with Derek Dreyer and Scott Kilpatrick) [ http://hackage.haskell.org/trac/ghc/wiki/PackageLanguage Packages](http://hackage.haskell.org/trac/ghc/wiki/PackageLanguage Packages).
|
|
- **A modular package language for Haskell** (with Derek Dreyer and Scott Kilpatrick) [ http://hackage.haskell.org/trac/ghc/wiki/PackageLanguage Packages](http://hackage.haskell.org/trac/ghc/wiki/PackageLanguage Packages).
|
|
|
|
|
|
## Bibliography
|
|
## Bibliography
|
|
|
|
|
... | | ... | |