The Haskell programming language is an active laboratory for cutting edge ideas. Early in the evolution of transactional memory (TM), Haskell included language support and quickly grew a community of TM users. Since TM's inclusion in Haskell, a flurry of research has brought significant developments in TM in non-Haskell contexts including improved understanding of TM semantics, higher-performance implementations, and support for TM in commodity hardware. The community of Haskell TM users has continued to grow, largely due to composition and blocking features that are included in Haskell's TM but are typically missing from TM implementations in other languages.
In this thesis we connect Haskell with new developments from the TM research community while preserving Haskell's rich TM features. We explore the challenges of integrating new ideas, including Transactional Locking II and hardware TM (HTM) into a pure functional programming language, and evaluate the performance of our developments. Achieving good cache performance, particularly avoiding speculative overflow, is critical to realizing benefits from HTM in its current form. To this end we implement a TM that removes indirection and allows for multiple transactional fields in a single heap object. To enable access to these features, we extend the Haskell language, implementing support for mutable constructor fields. Together these changes yield an implementation with significantly better performance than the original TM.
We also explore the potential of using Haskell's advanced type system to decrease the cost of unused features. We argue that this can be achieved while still maintaining the existing API. More static information can be used both by the compiler to improve code and by users to better understand the performance characteristics of their code.
|Advisor:||Scott, Michael L.|
|Commitee:||Dwarkadas, Sandhya, Ding, Chen, Fluet, Matthew|
|School:||University of Rochester|
|Department:||Hajim School of Engineering and Applied Sciences|
|School Location:||United States -- New York|
|Source:||DAI-B 81/4(E), Dissertation Abstracts International|
|Keywords:||Concurrency, Haskell, Transactional memory|
Copyright in each Dissertation and Thesis is retained by the author. All Rights Reserved
The supplemental file or files you are about to download were provided to ProQuest by the author as part of a
dissertation or thesis. The supplemental files are provided "AS IS" without warranty. ProQuest is not responsible for the
content, format or impact on the supplemental file(s) on our system. in some cases, the file type may be unknown or
may be a .exe file. We recommend caution as you open such files.
Copyright of the original materials contained in the supplemental file is retained by the author and your access to the
supplemental files is subject to the ProQuest Terms and Conditions of use.
Depending on the size of the file(s) you are downloading, the system may take some time to download them. Please be