Monix v3.1.0 Release Notes

Release Date: 2019-11-08 // 13 days ago
  • 🔖 Version 3.1.0 (November 8, 2019)

    🚀 The release is binary and source compatible with 3.0.0.

    ⚡️ Important updates:

    • ✅ #1008: Fixed stack safety issue of Observable.combineLatestList for big lists
    • #1010: flatMapLoop for Task and Coeval
    • #1012: ConcurrentQueue.isEmpty
    • #1014: Observable.timeoutOnSlowDownstreamTo
    • #1016: Observable.takeUntilEval
    • ⏱ #1057: Fix default scheduleOnce implementation
    • ⏱ #1062: Solves a memory leak which sometimes occurred when using Task with localContextPropagation and non-TracingScheduler
    • #1063: Ensure async boundary in TaskCreate if LCP is enabled
    • #1064 and #1070: Earlier cancelation in Observable.mapParallel if any task fails
    • #1065: Add mapAccumulate to Observable

    🚀 People that made this release possible:


Previous changes from v3.0.0

  • 🔖 Version 3.0.0-RC3 (June 16, 2019)

    🚀 This release depends on Cats-Effect 1.3.1 and Cats 1.6.1.

    🚀 The next planned release will target Cats-Effect 2.0.0 with Scala 2.13 support.

    🚀 NOTE: this release IS NOT binary compatible with 3.0.0-RC2, as it contains some API changes, but it should be source compatible (with @deprecated symbols where the case).

    Sub-project: monix-execution

    This sub-project no longer depends on cats-effect and there are various
    👌 improvement to Local aimed at fixing interop with Future. Note that
    you might have to call Local.isolate to disable any sharing between tasks.

    PR #775:
    Simplified FutureUtils materialize & dematerialize

    PR #790:
    👌 improve fixed rate scheduling on JS

    PR #803:
    Eagerly null out dequeued elements in ChunkedArrayQueue

    PR #822:
    ✂ remove dependency on cats-effect from monix-execution

    PR #773:
    🔄 change Cancelable.empty type to Cancelable

    PR #887:
    Shared locals with binds

    PR #888:
    🛠 Fix uncaught exception reporting for Scheduler

    Sub-project: monix-catnap

    PR #778:
    ➕ Adds ConcurrentChannel

    PR #784:
    ✅ More concurrent tests for MVar/Semaphore

    PR #865:
    ➕ Adding FunctionK values for Task, Coeval

    Sub-project: monix-eval

    PR #802:
    encapsulate local ctx on task execution

    PR #807:
    👌 Improve encapsulation test, encapsulate locals on ContextShift

    PR #838:
    ➕ Add taskified variants of timeout combinators

    PR #839:
    TaskLocal should propagate when used with Bracket Methods

    PR #849:
    👻 Specify exception on timeout

    PR #887:
    Shared locals with binds

    PR #865:
    ➕ Adding FunctionK values for Task, Coeval

    Sub-project: monix-reactive

    PR #759:
    ➕ Add Contravariant Observer and Subscriber

    PR #760:
    ➕ add Observable.filterEval

    PR #774:
    ➕ Add FunctorFilter instances for Iterant&Observable

    PR #779:
    fork blocking i/o observable ops

    PR #794:
    🔒 Acquire lock per subscription instead of observable-wide lock

    PR #801:
    ♻️ Observable buffers refactoring

    PR #819:
    Extend ObservableLike with filterNot method

    PR #831:
    ✅ SerializableSuite to no longer test Future for serializability

    PR #834:
    Observable.reduce should emit for single item source

    PR #846:
    Ensure mapParallelOrdered runs in parallel

    PR #872:
    ➕ Add observable take while inclusive

    PR #895:
    🛠 Fix memory leak in MapParallelOrderedObservable

    Sub-project: monix-tail

    PR #778:
    ➕ Adds Iterant.channel, Iterant#consume

    PR #826:
    ➕ add Iterant.uncons operation

    Chores

    PR #766:
    ⚡️ Update sbt-unidoc to 0.4.2

    PR #766:
    ⚡️ Update sbt-pgp to 1.1.2

    PR #768:
    ⚡️ Update sbt-mima-plugin to 0.3.0

    PR #769:
    ⚡️ Update sbt-git to 1.0.0

    PR #770:
    ⚡️ Update jctools-core to 2.1.2

    PR #771:
    ⚡️ Update kind-projector to 0.9.8

    PR #772:
    ⚡️ Update sbt-jmh to 0.3.4

    PR #771:
    ⚡️ Update kind-projector to 0.9.9

    PR #783:
    👉 Use globally accessible (rather than local) source paths in JS source maps (#781)

    PR #785:
    ⚡️ Update sbt-scalajs, scalajs-compiler, scalajs-library... to 0.6.26

    PR #788:
    ⚡️ Update cats-effect, cats-effect-laws to 1.1.0

    PR #796:
    🛠 fix scalacOptions

    PR #797:
    Scala 2.12.8

    PR #798:
    ⚡️ Update intervalWithFixedDelay scaladoc

    PR #805:
    📇 Rename keysBuffer to os in groupBy's parameters

    PR #808:
    ⚡️ Update Copyright to 2019

    PR #810:
    sbt 1.2.8 (was 1.1.0)

    PR #812:
    ⚡️ Update Minitest to 2.3.2

    PR #813:
    Disable code coverage

    PR #818:
    ⚡️ Update Cats-Effect to 1.2.0

    PR #820:
    ⚡️ Update cats-laws to 1.5.0

    PR #821:
    ⚡️ Update cats-laws to 1.6.0

    PR #823:
    👍 Scala 2.13 support

    PR #821:
    ⚡️ Update sbt-header to 5.1.0

    PR #827:
    ✂ Remove comments from .jvmopts

    PR #833:
    🛠 Fix build for 2.13.0-M5 by deactivating Mima for it

    PR #840:
    ➕ Add adopters list seed

    PR #842:
    🛠 Fixed deprecation docs for Task#coeval

    PR #843:
    ✂ Remove dead code from tests

    PR #844:
    ⚡️ Update sbt-header to 5.2.0

    PR #847:
    ⚡️ Update ExecutionModel.scala

    PR #850:
    ⏱ Increase rate in AsyncSchedulerSuite

    PR #854:
    🛠 fix apparently erronous code involving Unit companion

    PR #855:
    ⚡️ Update sbt-jmh to 0.3.5

    PR #857:
    👉 Make benchmarks compile

    PR #859:
    ⚡️ Update sbt-scalajs, scalajs-compiler to 0.6.27

    PR #867:
    ⚡️ Update kind-projector to 0.10.0

    PR #869:
    🛠 fix compile errors with latest Scala 2.13

    PR #874:
    ⚡️ Update cats-effect, cats-effect-laws to 1.3.0

    PR #878:
    Compile Benchmarks in CI

    PR #879:
    Do on subscription cancel scaladoc fix

    PR #889:
    ⚡️ Update cats-effect, cats-effect-laws to 1.3.1

    PR #894:
    ➕ Add UnsafeBecauseImpure Annotation to foreach.

    PR #896:
    ⚡️ Update cats-laws to 1.6.1

    PR #898:
    Reformating via Scalafmt

    PR #899:
    🛠 Fix autoCancelableRunLoops comment.

    PR #901:
    🗄 avoid deprecated unicode arrow chars

    PR #902:
    🏗 reformat build files

    Thanks

    🚀 People that made this release possible, in alphabetical order:

    🚀 And special thanks to our top contributor in this release:
    https://github.com/fthomas/scala-steward :)