Futures and promises are a high-level concurrency construct to aid the user in writing scalable and correct asynchronous programs. We introduce a simple core language based on which we can derive a rich set of future and promise features. We discuss ways to implement the core features via shared-state concurrency making either use of Software Transactional Memory, an elementary lock-based primitive, or an atomic compare-and-swap operation. The approach has been fully implemented in Haskell and Scala. For both languages, we provide empirical evidence of the effectiveness of our method. We consider program transformations in the context of futures and promises and observe potential problems in existing Scala-based libraries.
(pepm2019-presentation.pdf) | 310KiB |
Tue 15 JanDisplayed time zone: Belfast change
Tue 15 Jan
Displayed time zone: Belfast change
14:00 - 15:30 | |||
14:00 30mTalk | Extracting a Call-by-Name Partial Evaluator from a Proof of Termination PEPM Kenichi Asai Ochanomizu University DOI File Attached | ||
14:30 30mTalk | Futures and Promises in Haskell and Scala PEPM Tamino Dauth Karlsruhe University of Applied Sciences, Germany, Martin Sulzmann Karlsruhe University of Applied Sciences, Germany DOI File Attached | ||
15:00 28mTalk | Generating Mutually Recursive Definitions PEPM DOI Pre-print | ||
15:28 2mPoster | Advanced Futures and Promises in C++ (poster) PEPM Tamino Dauth Karlsruhe University of Applied Sciences, Germany, Martin Sulzmann Karlsruhe University of Applied Sciences, Germany |