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

Displayed time zone: Osaka, Sapporo, Tokyo change

09:15 - 10:15
Strictness and STM Haskell at Noh Theater
Chair(s): Richard A. Eisenberg Bryn Mawr College
09:25
25m
Talk
Revisiting Software Transactional Memory in Haskell
Haskell
Matthew Le , Ryan Yates , Matthew Fluet Rochester Institute of Technology
DOI
09:50
25m
Talk
Autobahn: Using Genetic Algorithms to Infer Strictness Annotations
Haskell
Yisu Remy Wang Tufts University, Diogenes Nunez , Kathleen Fisher Tufts University
DOI