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.

About

Expressive deterministic concurrency in Scala

Resources

License

Stars

Watchers

Forks

Packages

No packages published