Lucre (STM|Event|Data|Confluent) - a transactional, persistent, reactive object model
Scala
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
aux/src/main/scala/de/sciss/lucre/aux
base/src
bdb/src/main/scala/de/sciss/lucre/stm/store
bdb6
confluent/src
core/src/main/scala/de/sciss/lucre
data/src/main/scala/de/sciss/lucre/data
expr/src/main/scala/de/sciss/lucre
geom/src/main/scala/de/sciss/lucre/geom
licenses
notes
project
src/test/scala/de/sciss/lucre
.gitignore
.travis.yml
CONTRIBUTING.md
LICENSE
README.md
build.sbt

README.md

Lucre

Build Status Maven Central

statement

Lucre is an STM based persistent and reactive system for the Scala programming language. It is the foundation of the computer music framework SoundProcesses and its interface front-end Mellite.

Lucre is (C)opyright 2009–2018 by Hanns Holger Rutz. All rights reserved. All modules but the BerkeleyDB bindings are released under the GNU Lesser General Public License, whereas the bdb backend module for Berkeley DB JE 5 (itself governed by the Sleepycat License) is released under the GNU General Public License v2+, and the bdb6 backend module for Berkeley DB JE 6 (itself governed by the AGPL 3 License) is released under the GNU General Public License v3+. The software comes with absolutely no warranties. To contact the author, send an email to contact at sciss.de

Further reading:

  • 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.

requirements / installation

Lucre builds with sbt against Scala 2.12, 2.11.

linking to Lucre

Lucre comes with multiple modules:

  • base introduces Base quasi-system type, which may or may not be transactional; it contains a Plain base system.
  • geom introduces geometric data types (required by data)
  • data introduces data structures compatible with base
  • core introduces Sys system type, extending over base, and introducing the event reaction layer; it contains in-memory and durable systems.
  • expr introduces expressions
  • confluent contains a confluently persistent system
  • bdb and bdb6 contain database back-ends (GPL), based on Oracle BerkeleyDB Java Edition 5 (bdb) or 6 (bdb6)

The following dependency is necessary:

"de.sciss" %% "lucre" % v

Or just for a selected module:

"de.sciss" %% "lucre-{module}" % v

Where {module} is any of the above names. And for the database backend:

resolvers += "Oracle Repository" at "http://download.oracle.com/maven"

"de.sciss" %% "lucre-bdb"  % v   // BDB JE v5
"de.sciss" %% "lucre-bdb6" % v   // BDB JE v6

Note that the file format of BDB JE v6 is not backward compatible with v5. Also BDB JE v6 requires Java 1.7, whereas BDB v5 works with Java 1.6.

The current version v is "3.9.1".

contributing

Please see the file CONTRIBUTING.md