s_mach.datadiff is an open-source data difference engine for Scala. Implementations of the DataDiff type-class are provided which can compute the difference between all data types, Option, Set, Seq, and Map and all tuple classes. An implementation for any case case class (or other type that can be represented as a struct type) can be generated at compile-time by the mkDataDiff macro method. The difference between any two instances is stored as a patch type, which can be user-defined per type. Patches can be applied to instances of the original type to propagate computed changes. All provided DataDiff implementations are 100% strongly-typed and use absolutely no runtime reflection.
[![datadiff Scala version support](https://index.scala-lang.org/s-mach/s_mach.datadiff/datadiff/latest.svg)](https://index.scala-lang.org/s-mach/s_mach.datadiff/datadiff)
[![datadiff Scala version support](https://index.scala-lang.org/s-mach/s_mach.datadiff/datadiff/latest-by-scala-version.svg?platform=jvm)](https://index.scala-lang.org/s-mach/s_mach.datadiff/datadiff)