Reactive Async: Expressive Deterministic Concurrency
Concurrent programming is infamous for its difficulty. An important source of difficulty is non-determinism, stemming from unpredictable interleavings of concurrent activities. Futures and promises are widely-used abstractions that help designing deterministic concurrent programs, although this property cannot be guaranteed statically in mainstream programming languages. Deterministic-by-construction concurrent programming models avoid this issue, but they typically restrict expressiveness in important ways.
This paper introduces a concurrent programming model, Reactive Async, which decouples concurrent computations using so-called cells, shared locations which generalize futures as well as recent deterministic abstractions such as LVars. Compared to previously
proposed programming models Reactive Async provides (a) a fallback mechanism for the case where no computation ever computes the value of a given cell, and (b) explicit and optimized handling of cyclic dependencies. We present a complete implementation of the Reactive Async programming model as a library in Scala. Finally, the paper reports on a case study applying Reactive Async to static analyses of JVM bytecode based on the Opal framework.
Conference DayMon 31 OctDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:30 - 12:10
|Practical Aggregate Programming in Scala|
Roberto CasadeiUniversity of Bologna, ItalyMedia Attached
|DynaML: A Scala machine learning environment|
Mandar ChandorkarCentrum Wiskunde & Informatica
|Scala-Gopher: CSP-style programming techniques with idiomatic Scala.|
Ruslan ShevchenkovertamediaMedia Attached
|Reactive Async: Expressive Deterministic Concurrency|
Philipp HallerKTH Royal Institute of Technology, Simon GeriesKTH Royal Institute of Technology, Sweden, Michael EichbergTU Darmstadt, Germany, Guido SalvaneschiTU Darmstadt, GermanyDOI Pre-print Media Attached