As computer hardware approaches physical speed limits, we are faced with the need to write more programs that execute in parallel where a significant amount of the work of the program is done on independent processing resources at the same time. Such programs are, however, hard to express with our present software technology.

Transactional Memory (TM) (Harris et. al. 2010) (TM) aims to make it easier to express programs that can run in parallel by allowing programmers to group program actions into transactions that appear from the outside to happen all at once. This idea is a natural fit for the Haskell programming language. While Haskell's transactional memory support (Harris et. al. 2005) is popular, it is not as fast as we would like!

Our research addresses this problem in several ways:

Publications and Talks