Monix: Critical Bug Fix in Version 2.2.3 for Scala 2.12

Version 2.2.3 is out now.

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:

  • Bug #330: 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 immediately.

Upgrade should be safe, being binary compatible with all previous 2.2.x versions.

Upgrading #

To use the new version, include this in your build.sbt (and use %%% for Scala.js):

libraryDependencies += "io.monix" %% "monix" % "2.2.3"

The other projects from the @Monix organization have also been upgraded to depend on this new version.

shade, the Scala Memcached client:

dependencies += "io.monix" %% "shade" % "1.9.3"

monix-kafka, the Apache Kafka integration:

// For Kafka 8
libraryDependencies += "io.monix" %% "monix-kafka-8" % "0.12"

// For Kafka 9
libraryDependencies += "io.monix" %% "monix-kafka-9" % "0.12"

// For Kafka 10
libraryDependencies += "io.monix" %% "monix-kafka-10" % "0.12"

Enjoy!