Reactive Async: expressive deterministic concurrency

Philipp Haller, Simon Geries, Michael Eichberg, Guido Salvaneschi
2016 Proceedings of the 2016 7th ACM SIGPLAN Symposium on Scala - SCALA 2016  
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
more » ... portant 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.
doi:10.1145/2998392.2998396 dblp:conf/scala/HallerGES16 fatcat:frm4rdmu6rbgvhjnjsrca5jihu