Libraries
Besides research prototypes, Bismuth contains libraries that are ready for building local-first applications. They are published separately and can be used individually, on the JVM, in the browser via Scala.js, and natively via Scala Native (group id de.tu-darmstadt.stg). We document the RDTs (algebraic replicated data types) and Reactives libraries with a hands-on manual each, and all libraries with generated API documentation (Scaladoc). For everything else, the repository describes how to build the project and gives an overview of all modules.
RDTs
Algebraic replicated data types: lattices with automatically derived merge for products and sums, causal metadata, and a collection of common replicated data types.
Reactives
Signals and events in a transactional dataflow graph – the continuation of the REScala library.
Channels
A minimal send/receive abstraction over TCP, WebSockets, WebRTC, BroadcastChannel, and more. Channels is an integration project that connects RDTs and Reactives into distributed applications; it is not documented yet.