Write a Blog >>
ICFP 2016
Sun 18 - Sat 24 September 2016 Nara, Japan
Fri 23 Sep 2016 09:25 - 09:50 at Noh Theater - Strictness and STM Chair(s): Richard A. Eisenberg

Software Transactional Memory (STM) has become very popular in Haskell. Currently, there are nearly 500 packages on Haskell's package archive that directly use STM@. Despite the widespread use in real world applications, Haskell's STM implementation has seen very few updates since its introduction in 2005.

In this work, we describe our efforts to redesign the STM implementation in the Glasgow Haskell Compiler (GHC), based on a TL2-like implementation that is able to support both \verb|orElse| and \verb|retry| without the use of traditional nested transactions. We argue that our implementation is simpler than the current GHC implementation while supporting opacity. We also demonstrate that our implementation performs better than the current GHC implementation on a number of benchmarks by multiple orders of magnitude for long-running transactions.

In an effort to measure the performance of \verb|orElse| and \verb|retry|, we present an STM-based work stealing scheduler. With \verb|orElse| and \verb|retry|, we are able to elegantly implement the scheduler in just a few lines of code. We have modified the Par Monad, a real-world Haskell package that provides deterministic parallelism, to use our STM-based work stealing scheduler and show that it is not only simpler but is able to perform as well as the current scheduler.

Fri 23 Sep

09:15 - 10:15: Haskell - Strictness and STM at Noh Theater
Chair(s): Richard A. EisenbergBryn Mawr College
haskellsymp-2016-papers09:25 - 09:50
Matthew Le, Ryan Yates, Matthew FluetRochester Institute of Technology
haskellsymp-2016-papers09:50 - 10:15
Yisu Remy WangTufts University, Diogenes Nunez, Kathleen FisherTufts University