Monix v3.0.0-RC1 Release Notes

Release Date: 2018-05-18 // almost 6 years ago
  • [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