An Optimised Flow for Futures: From Theory to PracticeVol. 6
Tue 12 Apr 2022 07:15 - 07:40 at Virtual Space - ‹Programming› Online Tuesday Chair(s): Theo D'Hondt
A future is an entity representing the result of an ongoing computation. A synchronisation with a “get” operation blocks the caller until the computation is over, to return the corresponding value. When a computation in charge of fulfilling a future delegates part of its processing to another task, mainstream languages return nested futures, and several “get” operations are needed to retrieve the computed value (we call such futures “control-flow futures”). Several approaches were proposed to tackle this issues: the “forward” construct, that allows the programmer to make delegation explicit and avoid nested futures, and “data-flow explicit futures” which natively collapse nested futures into plain futures.
This paper supports the claim that data-flow explicit futures form a powerful set of language primitives, on top of which other approaches can be built. We prove the equivalence, in the context of data-flow explicit futures, between the “forward” construct and classical “return” from functions. The proof relies on a branching bisimulation between a program using “forward” and its “return” counterpart. This result allows language designers to consider “forward” as an optimisation directive rather than as a language primitive.
Following the principles of the Godot system, we provide a library implementation of control-flow futures, based on data-flow explicit futures implemented in the compiler. This small library supports the claim that the implementation of classical futures based on data-flow ones is easier than the opposite. Our benchmarks show the viability of the approach from a performance point of view.
Thu 24 MarDisplayed time zone: Lisbon change
13:30 - 15:00 | Concurrency & SynchronizationResearch Papers at Auditorium Nobre Chair(s): Ademar Aguiar FEUP, Universidade do Porto | ||
13:30 30mTalk | Capturing High-level Nondeterminism in Concurrent Programs for Practical Concurrency Model Agnostic Record & ReplayVol. 5 Research Papers Dominik Aumayr Johannes Kepler University Linz, Austria, Stefan Marr University of Kent, Sophie Kaleba University of Kent, Elisa Gonzalez Boix Vrije Universiteit Brussel, Belgium, Hanspeter Mössenböck JKU Linz Link to publication DOI | ||
14:00 30mTalk | Path-Sensitive Atomic Commit: Local Coordination Avoidance for Distributed TransactionsVol. 5 Research Papers Tim Soethout ING Bank; CWI, Tijs van der Storm CWI; University of Groningen, Jurgen Vinju CWI; Eindhoven University of Technology Link to publication DOI | ||
14:30 30mResearch paper | An Optimised Flow for Futures: From Theory to PracticeVol. 6 Research Papers Link to publication |
Tue 12 AprDisplayed time zone: Lisbon change
06:00 - 09:00 | ‹Programming› Online TuesdayResearch Papers / at Virtual Space Chair(s): Theo D'Hondt Vrije Universiteit Brussel | ||
06:00 25mTalk | Day 2 Opening | Bitrot Revisited: Local First Software and Orthogonal Synchronization Gilad Bracha F5 | ||
06:25 25mResearch paper | A Transient Semantics for Typed RacketVol. 6 Research Papers Ben Greenman Brown University, Lukas Lazarek Northwestern University, Christos Dimoulas PLT @ Northwestern University, Matthias Felleisen Northeastern University Link to publication | ||
06:50 25mResearch paper | A Functional Programming Language with VersionsVol. 6 Research Papers Yudai Tanabe Tokyo Institute of Technology, Luthfan Anshar Lubis , Tomoyuki Aotani Tokyo Institute of Technology, Hidehiko Masuhara Tokyo Institute of Technology Link to publication | ||
07:15 25mResearch paper | An Optimised Flow for Futures: From Theory to PracticeVol. 6 Research Papers Link to publication |