rescala-lang / rescala   0.24.0

Apache License 2.0 Website GitHub

REScala - distributed and reactive programming embedded in OO and FP programs.

Scala versions: 2.12 2.11
Scala.js versions: 0.6


REScala is a set of libraries for principled reactive programming, a programming paradigm that integrates the strong guarantees of functional reactive programming into object oriented programs, and is useful in many contexts such as traditional user interfaces, concurrent and distributed applications, web development, and server software.

REScala is a research project held at TU Darmstadt in the Software Technology Group in the context of the PACE and NICER projects.

Repository Overview

This repository contains multiple subprojects in the Modules folder:

  • Aead: This is a simple Scala library that provides authenticated encryption with associated data using the same interfaces on the JVM and for Scala.js.
  • Example EncryptedTodoFx
  • Example Misc 2015: various example applications.
    • examples: misc examples involving swing, time, datastructures (no reswing, using swing directly)
      • demo: application design demonstrating, showing multiple steps of adding features to a reactive application
    • reswing: misc reswing examples
      • millgame: mill game using reswing
      • reader: imperative/reactive versions of a reswing RSS reader (actual network request, no support for failures yet)
      • reshapes: reswing drawing application
      • texteditor: basic text editor in different implementation styles (imperative, to full reactive)
    • universe: console application demoing parallel execution of simulations
  • Example Replication: This case study demonstrates how the REScala project and replicated data types can be used to design an interactive application that makes use of one or more services within an arbitrary ad-hoc network.
  • Example Todolist: Rescalatags todo application in the style of common todo applications
  • Graph-Compiler
  • Javafx
  • Microbenchmarks: contains a benchmark suite for reactive programming. Execute with jmh:run
  • Reactives: contains the main reactive programming library, for the JVM and JS. Also includes a concurrent scheduler for the JVM, making it thread safe.
  • Swing: contains an integration with scalaswing to write UIs on the JVM.

The Historical folder contains code that is no longer maintained:

  • Android/REAndroidThings: contains an integration with androidthings to write apps for the android of things platform.
  • dividiParoli
    • DividiApp: money dividing application, showing the use of distributed CRDTs integrated into rescala
    • ParoliChatApp: console application demoing distributed CRDTs