Monix v3.0.0-M1 Release Notes
Release Date: 2017-09-15 // over 6 years ago-
๐ This is a major release that breaks both binary and source ๐ compatibility. The major themes of this release:
- deep integration with Typelevel Cats
- the
Iterant
data type in a newmonix-tail
sub-project ๐จ 3. API refactoring, eliminated deprecations - major improvements to
Observable
,Task
andCancelableFuture
Typelevel Cats integration:
- PR #370: introduced
Cats and
cats-effect
as direct dependencies - PR #377: added
Cats related conversions, along with naming changes for consistency
(e.g. renamed
Coeval.Attempt
toCoeval.Eager
) - โก๏ธ PR #387: updated Cats to
1.0.0-MF
, removed deprecated functions and classes - PR #397: standardizes
on Cats-related naming, removes
Coeval
'sComonad
implementation - PR #398: re-adds
instances for
CoflatMap
- PR #427: adds conversions from Cats to Observable
๐ New
monix-tail
sub-project, exposingmonix.tail.Iterant[F[_], A]
:- PR #280: introduces
Iterant[F[_], A]
for pull-based streaming based onTask
/Coeval
- PR #396:
adds the
Iterant.scan
operator - PR #403:
adds
Iterant.foldWhileLeftL
andIterant.foldWhileLeftEvalL
operators - PR #404:
adds Iterant
existsL
,forallL
, changesObservable.foldWhileL
(breaking change) - PR #402:
adds
Iterant.foldRightL
operator - PR #405:
adds
Iterant
ops -findL
,foldL
,maxL
,minL
,reduceL
- PR #407:
adds
Iterant
ops -countL
,distinctUntilChanged
,distinctUntilChangedByKey
- PR #412:
adds
scanEval
on bothIterant
andObservable
- PR #411:
another naming consistency change between
Observable
andIterant
- PR #413:
Iterant.bufferSliding
,bufferTumbling
andbatched
operators - PR #417 and
PR #418:
Reactive Streams implementation for
Iterant
๐ Improvements for
monix-execution
andCancelableFuture
:- PR #390: changes for
flatMap
onCancelableFuture
to cancel all involved futures (thanks to @larsrh) - PR #395: adds
Cats type class implementations for
CancelableFuture
- PR #431: improvements
to
CancelableFuture
to get rid of memory leak, also adding utils likeCancelableFuture.async
- PR #432: further
fixes to
CancelableFuture
, since describing a cancellableflatMap
is a hard problem - PR #418:
adds flip convenience method to
AtomicBoolean
(thanks to@Wogan
)
๐ Improvements for
monix-reactive
andObservable
:- PR #391: makes Observable concatenation (++) stack safe
- PR #408:
changes for
Iterant
and Cats consistency (make use ofEq
andOrder
type classes, addfoldF
andfoldL
, removedistinct
anddistinctByKey
) - PR #368: added
the
Observable.intersperse
operator (thanks to @omainegra) - PR #384: added
contramap
method to Callback (thanks to @Wogan) - PR #425: gets rid of
ObservableLike
, makesObservable
anabstract class
where the operators are final,Pipe
no longer hasObservable
's operators, justtransform
๐ Improvements for
monix-eval
,Task
andCoeval
:- PR #410:
Task
andCoeval
performance optimisations - PR #422: adds
Task.shift
, an innovation inspired bycats.effect.IO
- PR #424:
Task
refactoring, gets rid ofTask.OnFinish
type alias - PR #430:
Coeval
andTask
refactoring to therun
methods for consistency, introducedmap2
,map3
...map6
on bothTask
andCoeval
, renamedzipMap*
toparMap2
,parMap3
...parMap6
forTask
๐ Administrative and build changes:
- ๐ง PR #372: configured project for Git hash versioning (for enabling automatic releases)
- PR #378: dropped Scala 2.10 support
- ๐ enabled automatic deployments through Travis-ci, wrote a blog post documenting the necessarily steps, see Automatic Releases to Maven Central with Travis and SBT
- โก๏ธ PR #423: updates Scala.js to 0.6.20, the final in the series before 1.0.0