Skip to content

phaller/reactive-async

Repository files navigation

Reactive Async

Reactive Async is a concurrent programming model, which decouples concurrent computations using so-called cells, shared locations which generalize futures as well as 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 between cells. In this repository you find a complete implementation of the Reactive Async programming model in and for Scala.

Talks:

  • Talk at Scala Days 2016: video, slides

  • Talk at ACM SIGPLAN Scala Symposium 2016: slides

  • Talk at ISSTA 2020: video

Papers and thesis:

Contributing

Reactive Async is published under the BSD 2-Clause License (see file LICENSE in the project's root directory). Contributions submitted using the normal means to contribute to the project--such as pull requests and patches--indicate the contributors' assent for inclusion of that software in the canonical version under the project's license.

Building

Building Reactive Async requires sbt. Follow these steps:

$ sbt
> project core
> compile

To package the Reactive Async library into a jar file use package instead of compile.

Testing

The test suite (based on ScalaTest) is run as follows:

$ sbt
> project core
> test

Benchmarking

Microbenchmarks

The microbenchmarks (based on ScalaMeter) are run as follows:

$ sbt
> project bench
> test

Note that this consumes a fair amount of memory. Thus, it might be necessary to increase the JVM's maximum heap size before starting sbt.