Does Haskell have concurrency?
Concurrent Haskell extends Haskell 98 with explicit concurrency. Its two main underlying concepts are: A primitive type MVar α implementing a bounded/single-place asynchronous channel, which is either empty or holds a value of type α . The ability to spawn a concurrent thread via the forkIO primitive.
Why is Haskell good for concurrency?
Haskell threads are much more efficient in terms of both time and space than Operating System threads. Apart from traditional synchronization primitives like semaphores, Haskell offers Software Transactional Memory which greatly simplifies concurrent access to shared memory. The modules for concurrency are Control.
Is Haskell parallel?
Parallelism and Concurrency in HaskellHaskell supports both pure parallelism and explicit concurrency.
In the 2009-2012 period, the following things have happened:
2012:
- From 2012, the parallel Haskell status updates began appearing in the Parallel Haskell Digest.
2011:
-
Parallel and Concurrent Programming in Haskell, a tutorial. version 1.1 released by Simon Marlow
-
Haskell and parallelism, mentioned in an article in the Economist magazine, Jun 2nd 2011.
-
Parallel tree scans via composition, an article by Conal Elliott
-
Numeric Haskell, a tutorial on parallel array programming with Repa, released
- Works has begun on extending GHC eventlog and Threadscope to support multi-process or distributed Haskell systems
-
Parallel Haskell Digest: Edition 2.
-
The par-monad package and a monad for deterministic parallelism, Simon Marlow -- more control over pure parallelism than strategies/par/pseq.
-
Cloud Haskell: Erlang-style message passing between distributed Haskell nodes.
-
Parallel Haskell: Embracing Diversity, a talk by SPJ.
- Real time edge detection in parallel Haskell
- Parallel Haskell Digest: news on parallel Haskell
- Composable parallel scanning
-
Haskell-MPI is released
2010:
-
Parallel futures for Haskell, in GHC.
- The Orc language, for concurrent job scheduling and scripting, was released.
- A new scalable thread event manager was merged into GHC.
- An improved approach to parallel sparks and strategies was developed.
- The Nikola EDSL for embedding GPU programs in Haskell was developed.
- The LLVM backend for GHC was merged in, with good performance improvements.
- ghc 6.12.x series: with parallel performance improvements
- Microsoft announces 2 years of funding to support commercial users of Parallel Haskell
-
Google published their experience report on the use of Haskell (PDF)
- Intel announced the Concurrent Collections for Haskell library, including scalability numbers -- scaling results for 32 and 48 cores
- Sun/Oracle bought us a machine and funded work on improving parallel performance.
- Recent updates to the status of Data Parallelism in Haskell
- MSR released ThreadScope, a graphical profiler for parallel Haskell programs
- The GHC runtime got extensively tuned for sparks and futures
- There was a good discussion on additional ways to improve parallel performance
- A collection of reading material on parallelism in Haskell to help you get started
- The Snap guys are getting 45k req/sec on their 4 way box, by using all the cores.
- Even the Erlang guys are taking notice.
- Meanwhile, there is work to make the IO manager more scalable -- now with a paper on the design :: PDF.
- We're out there teaching people too .. all .. over .. the ... place.
- Starling Software wrote about their real time, multicore financial trading system in Haskell.
- Ericsson published a parallel language for DSP based on, and written in Haskell
- Galois published an implementation of Orc, a concurrent workflow language, in Haskell.
- And a new library for fast regular, parallel arrays appeared
- And Haskell continues to do well on the quad-core shootout.
-
Snap, a multicore-enabled scalable web server with great performance numbers
-
haskell-torrent - benchmarking a mulitcore-enabled bittorrent client in Haskell
-
Haskell code was published at Supercomputing 09 -- our first appearance at SC!