The trend in microprocessor design toward multicore processors has
sparked renewed interest in programming languages and language
features for harnessing concurrency and parallelism in commodity
applications. Past research efforts demonstrated that functional
programming provides a good semantic base for concurrent- and
parallel-language designs, but slowed in the absence of widely
available multiprocessor machines. I will describe new functional
programming approaches towards concurrency and parallelism, grounded
in more recent functional programming research.
To frame the discussion, I will introduce the Manticore project, an
effort to design and implement a new functional language for parallel
programming. Unlike some earlier parallel language proposals,
Manticore is a heterogenous language that supports parallelism at
multiple levels. In this talk, I will describe a number of
Manticore's notable features, including implicitly-parallel
programming constructs (inspired by common functional programming
idioms) and a flexible runtime model that supports multiple scheduling
disciplines. I will also take a deeper and more technical look at
transactional events, a novel concurrency abstraction that combines
first-class synchronous message-passing events with all-or-nothing
transactions. This combination enables elegant solutions to
interesting problems in concurrent programming. Transactional events
have a rich compositional structure, inspired by the use of monads for
describing effectful computations in functional programming. I will
conclude with future research directions in the Manticore project,
aiming to combine static and dynamic information for the
implementation and optimization of parallel constructs.