Monix v3.0.0-M3 Release Notes

Release Date: 2017-01-07 // over 7 years ago
  • ๐Ÿš€ Final milestone release before the RC and the final and stable 3.0.0.

    Highlights

    Local and TaskLocal

    ๐Ÿ“„ Special thanks to Leandro Bolivar for implementing propagation of "local vars" (aka Local and TaskLocal, the equivalents of ThreadLocal, but for usage with Future and Task). The inspiration was com.twitter.util.Local and scala.util.DynamicVariable.

    โฑ Right now the Monix Task is the only (known) IO data type for Scala that can work with such locals and because of the provided TracingScheduler, you can work with Scala's Future too.

    ๐Ÿ‘€ See:

    Pure cancellation, .start, .uncanceled, race

    ๐Ÿš€ This release also lands a long awaited feature for Task โ€” pure cancellation, aka Task.cancel. It's building on top of the current Task implementation, however it changes the API โ€” e.g. in order to keep Task pure, the chooseFirstOf operator is now gone, being replaced with an equivalent racePair that operates with tasks and pure functions.

    ๐Ÿ‘€ See:

    ๐ŸŽ Performance optimizations

    ๐Ÿš€ One other highlight of the release are the performance improvements for Task and Coeval, an on-going process to make sure that Monix's Task remains the best implementation in Scala's ecosystem.

    ๐Ÿ‘€ See:

    Typelevel Cats

    We now depend on Cats 1.0.1 and cats-effect 0.8.

    ๐Ÿš€ This unblocks the 3.0.0 release, because Cats 1.x has stronger backwards compatibility guarantees.

    Pull requests

    • โšก๏ธ PR #464: updates dependencies, Scala to 2.12.4 and 2.11.12, JCTools to 2.1.1, Minitest to 2.0.0, Scala.js to 0.6.21
    • โฑ PR #462: Fix for timeoutTo to cancel source task directly after timeout
    • PR #444: Add localContextPropagation to Task.Options, implement tracing Local vars
    • โœ… PR 470: increase test coverage
    • PR #473: Fix issue where fromAsyncStateAction is not safe for user code
    • โšก๏ธ PR #485 and PR #489: Updates Cats to 1.0.1 and cats-effect to 0.8
    • PR #474: Task / Coeval Run-loop Optimizations, First Batch
    • PR #492: Second batch of optimizations
    • PR #494: Task.cancel as a pure action, along with .start, .race and .uncancelable