ScalaMatsuri中に内職して作りました、ごめんなさい。
まずmagnoliaとは、
"型クラスのインスタンスの自動生成ライブラリ" でしょうか。
"型クラスのインスタンスの自動生成" といえば、shaplessという有名なライブラリがあります。
それ使った scalaprops-shapeless も以前作ってメンテナンスしています。
https://github.com/scalaprops/scalaprops-shapeless
shapelessはそういった機能以外にも色々入っていますが、magnoliaはその機能に特化したライブラリらしいです。
"型クラスのインスタンスの自動生成"に関して、機能的にshapelessと出来ること自体はそれほど大差がない?(自分もあまり理解してない)ですが、コンパイル速度や、定義の書きやすさなど、いくつか良い点があるらしいです。 (確かにscalaprops-shapelessのコードより、格段に実装量少なくなった)
詳細は公式サイト見てください。
ちなみに、magnolia自体は、shapeless同様マクロ内部でScalaコンパイラのclassにキャストして、それをいじる、という黒魔術を使っているようで難しかったです(小並感)
さて、scalapropsとは自分が作ってメンテナンスしているproperty based testingのライブラリですが、
Property Based Testing - scalapropsとscalacheckとその他色々
任意のデータ型を生成するための Gen という型クラスがあるので、magnoliaを使ってそのGenのインスタンスを自動生成するものが、scalaprops-magnoliaです。
同じようなscalacheck-magnoliaというものがあるので、それ参考にしたりしつつ作りました。
magnolia自体の最新版がなぜかScala 2.11で動かないバグがあるらしく、最初のversionではScala 2.12向けしかpublishしていません。
あとは、magnolia自体はscala-jsやscala-native向けビルドされていますが
「マクロのライブラリで実行時に依存する部分がないならscala-js向けビルド自体が必要なく、同じjarでscala-jsでも使用可能」
という気がしたので、一旦scala-jsやscala-nativeビルドしていませんが、それは自分の勘違いな気がしてきた(実行時に依存する部分ある?)ので、必要ならあとでscala-jsやscala-nativeビルドを追加するかもしれません。
scala-js版もリリースしました。
あとは、Gen以外の型クラス(Cogen)が対応できるなら対応する、などのタスクも可能だったらやります。