shapeless-2.2.2 released — binary compatibility fix and compile time speedup

Whoops! shapeless-2.2.1 was supposed to be binary compatible with shapeless-2.2.0 but, well … it wasn’t.

In particular the improvements to HList prepend weren’t, and this affected people using Spray. That’s been fixed in this release, and we’ve added the Migration Manager plugin to the build to make it less likely that things like this will happen in future (thanks to Alexandre Archambault for that).

I’m also delighted to report that thanks to Jason Zaugg we’ve got a huge improvement in compile times for code that uses Generic with types that have a coproduct representation. For the gory details see the discussion on this ticket but the TL;DR is that projects like the shapeless-powered spray-json marshaller for ENSIME are now perfectly feasible — a large fanout ADT representing a complex protocol now compiles in less than two minutes, down from somewhere between twenty minutes and forever previously (thanks to Jason and Sam Halliday).

Release notes follow …


This is the final release of shapeless-2.2.2.

These release notes provide a summary of changes since shapeless 2.2.1. shapeless 2.2.2 is source and binary compatible with shapeless 2.2.0+ and should be binary compatible with shapeless-2.1.0 in most cases.

This is this is a binary compatibility bugfix and compile time performance release. The changes are,

  • Binary compatibility with shapeless-2.2.0, which was accidentally broken in shapeless-2.2.1, has been restored. MiMa has been added to the build to make this less likely in the future (thanks to Alexandre Archambault).

  • Compile time performance of materialization of Generic instances for types with Coproduct representations has been significantly improved. Testing in the ensime-server project indicates that this gives compile time speedups of more than 10x for real world ADTs with a large fanout, making previously infeasible ADTs a realistic target for automatic type class derivation (thanks to Jason Zaugg and Sam Halliday).

Contributors for shapeless 2.2.2 are,

Many thanks to all of you and everyone else who has contributed ideas, enthusiasm and encouragement.