All Versions
49
Latest Version
Avg Release Cycle
65 days
Latest Release
68 days ago

Changelog History
Page 1

  • v3.2.2

    June 04, 2020

    πŸš€ The release is binary and source compatible with 3.x.x line.
    πŸš€ It is released for the following Scala and ScalaJS versions:

    • Scala 2.11: ScalaJS 0.6.x
    • Scala 2.12: ScalaJS 0.6.x and 1.0.x
    • Scala 2.13: ScalaJS 0.6.x and 1.0.x

    ⚑️ Relevant updates:

    • πŸ›  #1197: Fixes a memory leak in bracket, introduced in 3.2.0
    • πŸ›  #1195: Fixes non-deterministic behavior in Observable.zip of sources different size
    • 🚦 #1190: Now Observable.groupBy correctly signals error as a failed stream instead of normal completion
    • πŸ›  #1188: Fixes an issue in ForeachAsyncConsumer where it wasn't properly propagaing errors in some cases
    • πŸ›  #1187: Fixes an issue where Observable.doAfterSubscribe was not executing its finalizer
    • ⏱ #1186: Observable.interval method now schedules the first tick asynchronously
    • 🐎 #1184: Huge performance improvement in CharsReader, InputStream and LinesReaderObservable
    • #1154: Observable.fromInputStream and fromCharsReader now respects the chunkSize
    • #1181: Fix MatchError in Iterant.fromReactivePublisher

    πŸš€ People who made this release possible:

  • v3.2.1

    April 30, 2020

    πŸ› Bug fix release, fixing a critical issue with ScalaJS 1.0.x #1666 and a corner case with Bracket #1175

  • v3.2.0

    April 26, 2020

    πŸš€ The release is binary and source compatible with 3.x.x line.
    πŸš€ It is released for the following Scala and ScalaJS versions:

    • Scala 2.11: ScalaJS 0.6.x
    • Scala 2.12: ScalaJS 0.6.x and 1.0.x
    • Scala 2.13: ScalaJS 0.6.x and 1.0.x

    ⚑️ Relevant updates:

    • #1087: Bracket should not evaluate "use" if Task was canceled during "acquire"
    • #1098: Allow to pass Long in Observable.drop(n)
    • #1101: Canceled tasks in Half-Open state should return to Open state in CircuitBreaker
    • #1107: Add CommutativeApplicative[Task.Par] instance
    • #1106 and #1125: Add Observable.concatMapIterable
    • πŸ”€ #1117: SyncEffect instance for Coeval
    • #1120: Cancel should always wait for the finalizer
    • 🚦 #1126: bufferIntrospective should signal Stop upstream when it is back-pressured
    • πŸ›  #1135: Observable.intervalAtFixedRate under-millisecond interval fix
    • #1132: Add Iterant.withFilter
    • #1129: Add Observable.withFilter
    • πŸ—„ #1145: Deprecate gather, gatherN, gatherUnordered in favor of parSequence, parSequenceN, parSequenceUnordered
    • #1152: Add Consumer.toList

    πŸš€ People that made this release possible:

  • v3.1.0

    November 08, 2019

    πŸ”– 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:

  • v3.0.0

    June 16, 2019

    πŸ”– 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 :)

  • v3.0.0-RC5

    August 29, 2019

    πŸš‘ This is a bug fix release β€” fixing a critical issue:

    • #991 (PR #993): NullPointerException in Task when used in combination with Local
    • ♻️ #992 (PR #998): hide InterceptableRunnable exposed accidentally, refactor it for efficiency
    • #997: bumped Scala version to 2.12.9 and Scala.js to 0.6.28

    πŸš€ This release is binary compatible with 3.0.0-RC4.

  • v3.0.0-RC4

    August 25, 2019

    πŸ”– Version 3.0.0-RC4 (August 25, 2019)

    πŸš‘ Last release before 3.0.0 which will be released as soon as Cats-Effect 2.0.0 is available. At the time of writing release notes, it is only waiting on Cats 2.0.0 which is about to release next RC which will become stable version if no critical issues are discovered.

    πŸš‘ Any other development for this release is now frozen except if we discover critical bugs like memory leaks. All other changes will target 3.1.0.

    πŸš€ 3.0.0 will be binary and source compatible with 3.0.0-RC4 for Scala 2.12. Monix itself will be also binary compatible for 2.11 but it will have a dependency on Cats-Effect which is not. See Cats-Effect release notes for more details.

    πŸš€ We wish we could release 3.0.0 already but if we released now, we would have to release 4.0.0 for Cats-Effect 2.0 because of 2.11 incompatibility there so we decided to hold on.
    πŸš€ It was a rough road but currently we have multiple active maintainers that can do releases going forward, instead of just Alex so we hope it can give you a confidence for the future! :)
    πŸš€ Note that Cats-Effect 2.0 is very small release and mostly targeted at support for Scala 2.13 and bug fixes - the upgrade should be limited to bumping version without changing a single line of code.

    πŸš€ This release depends on Cats-Effect 1.4.0 and Cats 1.6.1

    πŸš€ This release is binary compatible with 3.0.0-RC3 on Scala 2.12.
    ⏱ On Scala 2.11 there is an incompatibility caused by introduction of Scheduler.features:

    exclude[ReversedMissingMethodProblem]("monix.execution.Scheduler.features")
    

    Main changes

    Local

    πŸ›  There are several fixes related to Local usage.

    • ⏱ Using TracingScheduler will also automatically enable local context propagation in Task so
      βš™ running it with runToFutureOpt or setting env variable is no longer a necessity.
    • Local.isolate has a overload for isolating Future which is safer than regular Local.isolate.

    0️⃣ The Local model since 3.0.0-RC3 shares by default. To isolate modifications of Local by
    other concurrently running Future, you have to call Local.isolate.

    In case of Task, there is a TaskLocal.isolate version. It is automatically called whenever you run Task
    so if your use case is setting correlationId or similar, it probably won't require any explicit isolation because
    your HTTP library will most likely run the Task per request.

    πŸ— Task Builders

    There are two major improvements:

    • ⏱ Now all Task builders (Task.create, Task.async, Task.fromFuture etc.) will return a Task that continues on default Scheduler which is the one supplied during execution unless overriden by executeOn.
    • πŸ”€ Callback in Task.create is now thread-safe against contract violation (calling it more than once) so does not require synchronization on the user side.

    Sub-project: monix-execution

    PR #946: Expose less implementation details in Local

    PR #948: Make Task.memoize play well with Local

    ⏱ PR #953: Make default scheduler remove cancelled tasks

    ⏱ PR #960: Scheduler.features

    PR #971: Callback tryOnSuccess/tryOnFailure

    PR #973: Fix Local.isolate corner case

    PR #977: Use type classes instead of overloads in Local.isolate/bind

    Sub-project: monix-eval

    ⚑️ PR #913: Optimize Task.guarantee

    PR #921 & PR #917: Callbacks in Task.create are now thread-safe and
    ⏱ always return to the main Scheduler.

    PR #933: Adds >> syntax to Task

    PR #935: Adds >> syntax to Coeval

    PR #934: Implement doOnFinish in terms of guaranteeCase

    PR #951: Add void to Task + Coeval

    PR #952: Implement ContextShift.evalOn in terms of Task.executeOn

    PR #954: Add gatherN + wanderN

    PR #972: Rename Task.forkAndForget to Task.startAndForget

    Sub-project: monix-reactive

    PR #906: Fix race in MapParallelOrderedObservable

    PR #918: switchMap should wait for last child to complete

    PR #919: propagate cancellation to tasks in async Consumers

    🚚 PR #932: Remove try-catch for EvalOnceObservable implementation

    PR #941: Added some polymorphic methods for Observable

    PR #945: Add collectWhile observable

    PR #958: Add Observable.throttle

    PR #963: Added fromAsyncStateActionF

    PR #970: Observable.unfold

    PR #989: Observable.unfoldEval and Observable.unfoldEvalF

    Sub-project: monix-tail

    • πŸ›  PR #965: fixes resource handling in Iterant.repeat, adds Iterant.retryIfEmpty

    Chores

    0️⃣ PR #936: Add defaults values for benchmarking

    ⚑️ Tons of updates by https://github.com/fthomas/scala-steward

    Thanks

    πŸš€ People that made this release possible, in alphabetical order:

  • v3.0.0-RC3

    June 16, 2019

    πŸ”– 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 :)

  • v3.0.0-RC2

    November 06, 2018

    ⚑️ Cats-Effect Updates

    πŸ‘Œ Supporting Cats-Effect 1.0.0 has been a massive amount of work:

    • PR #659 Cats Effect 1.0.0-RC update
    • PR #681: Cats-Effect 1.0.0-RC2 update
    • PR #686: Cats-Effect 1.0.0-RC3 update, Task conversions
    • PR #716: Updates to Cats-Effect 1.0.0

    Also related, but mentioned below:

    • Iterant's encoding had to change due to the new contract of Cats-Effect's type classes, in a massive change of internals that also improved its performance and safety (#683)

    Sub-project: monix-execution

    ♻️ Several features, deprecations and refactorings happened in monix-execution, mentioned under the changes for monix-catnap below:

    • ♻️ monix.execution.misc.AsyncVar was refactored, to have an interface in line with the MVar in Cats-Effect and moved to monix.execution.AsyncVar (#753)
    • ♻️ monix.execution.misc.AsyncSemaphore was also refactored and enhanced, with an interface resembling that of Cats-Effect's Semaphore and moved to monix.execution.Semaphore (#754)
    • monix.execution.AsyncQueue was added (#757)
    • monix.execution.Callback was added (#740)
    • monix.execution.FutureUtils and CancelableFuture can now take care of the conversions of Scala's Future to and from Java's CompletableFuture (#761)

    Other features:

    • PR #675: Switches to stdlib NonFatal
    • PR #738: Adds CancelablePromise
    • PR #765: Changes TrampolineScheduler's internal stack back to a queue

    Sub-project: monix-catnap

    This is a new project introduced that currently depends on only monix-execution and Cats/Cats-Effect and whose purpose is to provide abstractions built on top of Cats-Effect's type classes.

    • PR #744: Adds monix.catnap.CircuitBreaker and LiftFuture
    • PR #753: Adds generic monix.catnap.MVar and monix.execution.AsyncVar refactoring
    • PR #756: Makes MVar fork on async take for fairness
    • PR #754: Adds generic monix.catnap.Semaphore and monix.execution.AsyncSemaphore refactoring
    • PR #757: Adds monix.execution.AsyncQueue and monix.catnap.ConcurrentQueue
    • PR #762: Fixes issue typelevel/cats-effect#403, also added monix.catnap.cancelables.SingleAssignCancelableF

    Also mentioned below, as part of other features:

    • βž• Added monix.catnap.CancelableF and monix.catnap.cancelables.BooleanCancelableF (#726)

    Note: the new FutureLift type class provides some of the πŸ—„ functionality of the now deprecated monix-java8.

    Sub-project: monix-eval

    πŸ—„ Major removals (with deprecation symbols kept around):

    • monix.eval.TaskSemaphore, replaced by the generic monix.catnap.Semaphore
    • monix.eval.MVar, replaced by the generic monix.catnap.MVar
    • monix.eval.TaskCircuitBreaker, replaced by the generic monix.catnap.CircuitBreaker

    This was done because having these implementations specialized for πŸ‘ Task doesn't make sense and the new implementations are better and have more features.

    πŸ”‹ Features:

    • PR #626: Adds forever for Task
    • PR #636: Adds join to the fork documentation
    • PR #639: Makes Coeval.value empty-parens to indicate side effects
    • PR #638: Fixes Task.foreach waiting / error reporting
    • PR #634: Adds ability to specify custom options on Effect[Task]
    • PR #655: Handles InterruptedException in NonFatal
    • PR #660: Makes TaskApp scheduler and options defs
    • PR #664: Fixes Task.map2 not executing things in sequence
    • PR #661: Makes mapBoth always execute tasks in parallel
    • PR #669 Adds uncancelable to example
    • PR #647: Changes internal encoding for Task.Async (major!)
    • PR #670: Task gets smarter about forking and async boundaries
    • PR #652: Uses TaskLocal#local in TaskLocal#bindL and TaskLocal#bindClear
    • PR #679: Fixes Task.bracket, onCancelRaiseError; introduce Task.ContextSwitch
    • PR #706: Adds SemigroupK[Task] instance
    • PR #715: Implements Task timed method
    • PR #724: Makes Task auto-cancelable by defaul (major!)
    • PR #725: Adds runtime check to TaskLocal to make it safer
    • PR #726: Changes Task to sequence (back-pressure) async finalizers (major!)
    • PR #732: Adds guarantee and guaranteeCase methods on Task and Coeval
    • PR #740: Moves Callback to monix.execution, Task runAsync refactor, rename to runToFuture (major!)
    • PR #761: Expands FutureLift to take care of CompletableFuture

    Sub-project: monix-reactive

    ♻️ Observable suffered an API refactoring, changing the convention for operators that take Task or F[_] : Effect values as arguments:

    • operators using Task now use the Eval suffix instead of Task, or no special suffix at all
    • πŸ”€ operators using F[_] : Sync parameters use an F suffix
    • 🚦 the F suffixed operators previously signalled operators that kept the Observable context (e.g. findF), however all of them have been renamed

    πŸ‘€ See PR #729 for details.

    πŸ”‹ Features:

    • PR #610: Adds scan0, flatScan0, flatScan0DelayErrors, scanEval0, scanMap0 on Observable
    • PR #641: Reference bufferTumbling instead of buffer in scaladoc
    • PR #646: Fixes ack.future called when Ack is null
    • PR #657: Adds a few missing tests to Observable methods
    • PR #684: Simplifies logic in TakeLastOperator.onNext
    • PR #704: Introduces Observable.doOnStartTask and Observable.doOnStartEval
    • PR #723: Adds Alternative instance for Observable
    • PR #654: Makes Observable#++'s argument lazy
    • PR #729: Adds Observable.bracket, Iterant/Task API refactorings, fixes (major!)
    • PR #741: Adds cats Profunctor instance for Subject
    • PR #739: Adds operator bufferTimedWithPressure with sizeOf on Observable
    • PR #743: Improvs Observable.collect to avoid double evaluation
    • PR #749: Adds Profunctor and Contravariant instance for Consumer
    • PR #750: Fixes handling start/end of Long range in RangeObservable
    • PR #558: Adds Observable.mapParallelOrdered

    Sub-project: monix-tail

    The Iterant encoding suffered a major change, with all operators described for Iterant being changed for it. This was done because:

    πŸ‘ 1. the old encoding couldn't be supported under the auto-cancelable model promoted by Cats-Effect 1.0.0 🐎 2. the new encoding is safer and has better performance too

    πŸ”‹ Features:

    • PR #683: Iterant, version 2 (major)
    • PR #614: Adds scan0, scanEval0, scanMap0 on Iterant
    • PR #622: Adds mapBatch for Iterant
    • PR #629: Fixes IterantBuildersSync methods to not require implicit F: Sync[F]
    • PR #631: Renames toGenerator to toBatch in Cursor
    • PR #633: Fixes eagerness of .bracket on Last nodes
    • PR #621: Changes behavior of Batch#fromArray, fromAnyArray
    • PR #656: Makes Iterant's ++ take a lazy (by-name) parameter
    • PR #662: Adds Iterant.fromReactivePublisher
    • PR #709: Removes unused function from EvalOnNextAck
    • PR #707: Add Iterant.lastOptionL
    • PR #746: Fix Iterant.fromReactivePublisher
    • PR #755: Remove the Sync[Iterant] instance

    πŸ—„ Sub-project deprecation: monix-java8

    The functionality in monix-java8 was implemented directly in:

    1. monix.execution.FutureUtils
    2. monix.execution.CancelableFuture
    3. monix.catnap.FutureLift

    πŸ—„ The monix-java8 sub-project is still provided, but is deprecated and 🚚 will soon be removed.

    Chores

    • PR #653: Update Monix's rootdoc, the landing page for the ScalaDoc
    • PR #671: Optionally allow forcing a build on Java 9+
    • PR #677: Add Starting Point section to CONTRIBUTING.md
    • PR #693: Fix micro doc typo in monix.execution.misc.InlineMacros
    • PR #699: Add Concat and Scope to Iterant's description
    • PR #640: Add sbt-doctest, to verify code examples in ScalaDoc
    • PR #705: Fix all ScalaDocs (except Task's) in monix.eval
    • PR #717: Change to Scala's Code of Conduct
    • PR #720: Add @Avasil to the Code of Conduct
    • PR #718: Fix Task ScalaDocs
    • PR #736: Update doctest plugin version
    • PR #763: Fix Observable doc mentioning cats.Eq

    Thanks

    πŸš€ People that made this release possible, in alphabetical order:

    • Alexandru Nedelcu (@alexandru)
    • Eduardo Barrientos (@kdoomsday)
    • Eugene Platonov (@jozic)
    • Jakub KozΕ‚owski (@kubukoz)
    • Jamie Wilson (@jfwilson)
    • Joe Ferris (@jferris)
    • Jules Ivanic (@guizmaii)
    • Kacper Gunia (@cakper)
    • Kamil Kloch (@kamilkloch)
    • LorΓ‘nd SzakΓ‘cs (@lorandszakacs)
    • Oleg Pyzhcov (@oleg-py)
    • Piotr GawryΕ› (@Avasil)
    • Raas A (@RaasAhsan)
    • Seth Tisue (@SethTisue)
    • Yohann B (@ybr)
    • jendakol (@jendakol)
    • volth (@volth)
  • v3.0.0-RC1

    May 18, 2018

    [https://typelevel.org/cats-effect/ Cats Effect] integration:

    • PR #598: Integrates cats.effect.Timer and IO.cancelable
    • PR #600: Add Sync & Async instances for Iterant
    • PR #607: implement ConcurrentEffect[Task] (upgrade to cats-effect 0.10)
    • PR #609: update Cats to 1.1.0 & Cats Effect to 0.10

    πŸ”‹ Features for monix-execution:

    • PR #527 (#517, #525 and #526): removes macros, replacing them with plain extension methods, removes SerialCancelable#orderedUpdate
    • PR #556: SchedulerService.awaitTermination and fix concurrency tests
    • PR #584 (#221): add conversions module for the Java 8 CompletableFuture

    πŸ”‹ Features for monix-eval:

    • PR #507: add onErrorRestartLoop for Task and Coeval
    • PR #533 (#523): add Task.fork operator, deprecate old Task.fork and executeWithFork, renamed to executeAsync
    • PR #530 (#520): add Task.forkAndForget
    • PR #537 (#535): Make MVar constructors return Task
    • PR #540 (#539): make all Task abstractions referentially transparent
    • PR #545 (#538): add newtype for Task.Par, using same encoding used in cats-effect
    • PR #547 (#542): add Task.runSyncUnsafe
    • PR #550: add Task.sleep, refactor the implementation of delayExecution and delayResult and deprecate delayExecutionWith and delayResultBySelector
    • PR #482 (#477): add the .cancelable operator on Task
    • PR #561: Bracket for Task / Coeval, Task.cancelable and Task.onCancelRaiseError
    • PR #596: add Fiber interface, refactor memoize for Task and Coeval
    • PR #602: TaskLocal should expose Local
    • PR #603: Changed implementation TaskLocal#bind in terms of Task#bracket

    πŸ”‹ Features for monix-reactive:

    • PR #511 (#269): add monix.reactive.subjects.Var type
    • PR #528: add Observable.scanMap operator
    • PR #536 (#459): add a NonEmptyParallel for Observable using combineLatest

    πŸ”‹ Features for monix-tail:

    • PR #503 (#487): add Iterant.liftF builder for lifting monadic values
    • PR #510 (#500): add Iterant.takeEveryNth operator
    • PR #504 (#499): add Iterant.switchIfEmpty operator
    • PR #509 (#495): add Iterant.dropLast operator
    • PR #508 (#501): add Iterant.intersperse operator
    • PR #512 (#496): add Iterant.dropWhileWithIndex operator
    • PR #514 (#497): add Iterant.takeWhileWithIndex operator
    • PR #523 (#519): add Iterant.scanMap operator
    • PR #518 (#516): add Iterant[Task].intervalAtFixedRate
    • PR #524 (#498): add Iterant.interleave
    • PR #549 (#548): add Iterant.fromStateAction and fromStateActionL
    • PR #567 (related to #563): completedL should handle F[_] errors, mapEval should not
    • PR #569 (related to #563): Iterant fold left operators (yielding F[_]) need to handle errors thrown in F[_]
    • PR #566 (#562): improve safety of attempt & onErrorHandleWith on Iterant
    • PR #578 (#570): add Iterant#sumL method
    • PR #579 (#577): make Iterant#reduceL and headOptionL left folds handle errors from F[_] context
    • PR #575 (##571 and #572): add Iterant.repeat (method and builder)
    • PR #583 (#549): add Iterant.fromStateAction builder
    • PR #582 (#573 and #574): add repeatEval/repeatEvalF for Iterant & repeatEvalF for Observable
    • PR #554 (#479): add Iterant#bracket operator
    • PR #581 (#559): handle broken nodes in Iterant.skipSuspendL
    • PR #589: improve handling of broken batches/cursors in Iterant.attempt
    • PR #591 (#580): improve strictness of Eq of Iterant, fix doOnFinish on Last

    πŸ› Bug fixes:

    • PR #552 (#483): MVar is stack unsafe, triggering stack overflow on put
    • PR #543 (#541): Observable.take(0) shouldn't subscribe to the source at all
    • PR #496 (#468): race condition for Observable in concatenation operators
    • PR #568: in Iterant.toReactivePublisher the cancel should be made by request()
    • PR #592 (#590): potential nontermination in Observable.zip[Map]

    Chores:

    • ⚑️ PR #502: update SBT to 1.1
    • PR #488: add note about execution model for Observable.fromInputStream
    • PR #531 (related to #513): add automatic header creation on compilation
    • PR #557: disable automatic publishing, too dangerous
    • PR #546 (related to #513): add scalafmt.conf configuration
    • PR #565: correct small typo in doc of Task#executeOn
    • PR #576: fix comment mentioning Akka instead of Monix
    • PR #588: update copyright headers for Scala 2.11 source files
    • PR #605: Make concurrent Atomic tests more resilient to timeouts