It is a minor release that’s binary and source compatible with
2.2.x, fixing a critical bug that happens in Scala 2.12, due to
changes to how flatMap is implemented in scala.concurrent.Future:
Ack.Continue.transformWith and Ack.Stop.transformWith
are not stack-safe
Impact of this bug: it does NOT impact most (probably all)
functionality in Monix, because Monix rarely flatMaps direct
Continue references (due to batching and optimizations) and we have
had extensive tests for long loops that could trigger this problem.
However this bug can be dangerous for people that have implemented the
communication protocol (as
described in the docs)
by themselves. If you’re using Monix with Scala 2.12, then upgrade
Upgrade should be safe, being binary compatible with all previous
It is a major release that shouldn’t be considered binary compatible with 2.1.x,
even though it is source compatible. This is due to several operators being
changed in Observable and Task, but extension methods are provided for the older
versions, therefore source compatibility is maintained.
As a summary: the new MVar synchronization primitive, performance improvements
in Observable.concatMap and in the Task run-loop, new SchedulerService
interface for shutting down schedulers, bug fixes and upgrade to Cats 0.9.0.
See details below.