LucreEvent provides a reactive event and observer layer for LucreSTM, a software transactional memory and persistence library for the Scala programming language. The reactive system implements event graphs which also can be persistent, along with live observers. A sub module adds an provides an expression tree system.
LucreEvent is (C)opyright 2011–2015 by Hanns Holger Rutz. All rights reserved. It is released under the GNU Lesser General Public License v2.1+ and comes with absolutely no warranties. To contact the author, send an email to
contact at sciss.de
- Rutz, H.H., "A Reactive, Confluently Persistent Framework for the Design of Computer Music Systems," in Proceedings of the 9th Sound and Music Computing Conference (SMC), Copenhagen 2012.
- Gasiunas, V. and Satabin, L. and Mezini, M. and Núñez, A. and Noyé, J., "EScala: Modular Event-Driven Object Interactions in Scala," in Proceedings of the tenth international conference on Aspect-oriented software development, pp. 227--240, 2011.
requirements / installation
The projects is divided into a
core module (just the event layer) and an
expr module (the expression tree layer). The following dependency is necessary:
"de.sciss" %% "lucreevent" % v
Or for each layer:
"de.sciss" %% "lucreevent-core" % v "de.sciss" %% "lucreevent-expr" % v "de.sciss" %% "lucreevent-artifact" % v
expr requires the following additional resolver:
resolvers += "Oracle Repository" at "http://download.oracle.com/maven"
The current version
At the moment, there are only sparse API documentation, which is generated by
sbt doc. The basic concept:
- The system distinguishes between persisted and live references (even with a pure in-memory system), where a change in an observed object is propagated through a mechanism called 'tunnelling', pushing along stub nodes until a live node is found, which in turn evaluates the path in pull fashion.