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.
Version 2.1.1 is out now, while version 2.1.0 was out
on Nov 9.
The official announcement was then postponed because we waited to see
if bug reports are going to happen. Today version 2.1.1 was
released, fixing such a problem.
To use the new version, include this in your build.sbt (and use
%%% for Scala.js):