Changelog History
Page 1
-
v3.4.0 Changes
May 14, 2021π The release is binary and source compatible with 3.x series, and was cross-built for the following Scala and ScalaJS versions:
- Scala
2.12
,2.13
and3.0
- Scala.js
1.5.1
WARN: we're dropping compatibility with Scala
2.11
and ScalaJS0.6.x
. If you still need those you'll have to stay on version3.3.0
.π Changes in this release:
- β¬οΈ Dropped support for Scala
2.11
and Scala.js0.6.x
- β‘οΈ Dependency updates:
- Cats
2.6.1
- Cats-Effect
2.5.1
- JCTools
3.3.0
- Cats
- β Adds support for Scala 3 (#1326, #1327, #1328, #1329, #1344, #1323)
- β Adds
Observable.whileBusyAggregateEvents
(#1320) - π Fix tracing in
Coeval
andTask
via a more accurate filter (#1353) - β Adds
Observable.throttleLatest
(#1396) - Implement pagination for
Observable
(#1381)
π This release was made possible by the work and feedback of:
- Alexandru Nedelcu (@alexandru)
- Dominik WosiΕski (@Wosin)
- Lars Hupel (@larsrh)
- Luke Stephenson (@lukestephenson)
- Oleg Pyzhcov (@oleg-py)
- Pau AlarcΓ³n (@paualarco)
- Piotr GawryΕ (@Avasil)
- Scala
-
v3.3.0 Changes
November 07, 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.3.x
- Scala 2.13: ScalaJS 0.6.x and 1.3.x
π Note that most likely, this is going to be the last release on ScalaJS 0.6.x.
We can consider doing backports on-demand.Highlights
π Better Stack Traces
π This release includes a highly requested feature of better stack traces for
Task
andCoeval
!
Big thanks to @RaasAhsan and @djspiewak for providing the original implementation that we have ported.π§ They are enabled by default, but it is configurable.
π Refer to Stack Traces section for more details.π We have measured about 10-30% performance hit in CACHED mode (the default) in microbenchmarks.
π If you have any performance tests, we would greatly appreciate any reports!
If the hit is too big, you can disable the stack traces with-Dmonix.eval.stackTracingMode=none
.For the following code:
package test.appimport monix.eval.Taskimport monix.execution.Schedulerimport cats.implicits.\_import scala.concurrent.duration.\_object TestTracingApp extends App { implicit val s = Scheduler.global def customMethod: Task[Unit] =Task.now(()).guarantee(Task.sleep(10.millis)) val tracingTestApp: Task[Unit] = for { \_ \<- Task.shift \_ \<- Task.unit.attempt \_ \<- (Task(println("Started the program")), Task.unit).parTupled \_ \<- customMethod \_ \<- if (true) Task.raiseError(new Exception("boom")) else Task.unit } yield () tracingTestApp.onErrorHandleWith(ex =\> Task(ex.printStackTrace())).runSyncUnsafe }
0οΈβ£ The default (cached) stack trace is going to be:
java.lang.Exception: boom at test.app.TestTracingApp$.$anonfun$tracingTestApp$5(TestTracingApp.scala:36) at guarantee @ test.app.TestTracingApp$.customMethod(TestTracingApp.scala:29) at flatMap @ test.app.TestTracingApp$.$anonfun$tracingTestApp$4(TestTracingApp.scala:35) at parTupled @ test.app.TestTracingApp$.$anonfun$tracingTestApp$2(TestTracingApp.scala:34) at parTupled @ test.app.TestTracingApp$.$anonfun$tracingTestApp$2(TestTracingApp.scala:34) at flatMap @ test.app.TestTracingApp$.$anonfun$tracingTestApp$2(TestTracingApp.scala:34) at flatMap @ test.app.TestTracingApp$.$anonfun$tracingTestApp$1(TestTracingApp.scala:33) at flatMap @ test.app.TestTracingApp$.delayedEndpoint$test$app$TestTracingApp$1(TestTracingApp.scala:32)
Before
3.3.0
and with stack traces disabled, stack traces are a mess:java.lang.Exception: boom at test.app.TestTracingApp$.$anonfun$tracingTestApp$5(TestTracingApp.scala:36) at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:188) at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:101) at monix.eval.internal.TaskRestartCallback$$anon$1.run(TaskRestartCallback.scala:118) at monix.execution.internal.Trampoline.monix$execution$internal$Trampoline$$immediateLoop(Trampoline.scala:66) at monix.execution.internal.Trampoline.startLoop(Trampoline.scala:32) at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.super$startLoop(TrampolineExecutionContext.scala:142) at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.$anonfun$startLoop$1(TrampolineExecutionContext.scala:142) at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18) at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94) at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.startLoop(TrampolineExecutionContext.scala:142) at monix.execution.internal.Trampoline.execute(Trampoline.scala:40) at monix.execution.schedulers.TrampolineExecutionContext.execute(TrampolineExecutionContext.scala:57) at monix.execution.schedulers.BatchingScheduler.execute(BatchingScheduler.scala:50) at monix.execution.schedulers.BatchingScheduler.execute$(BatchingScheduler.scala:47) at monix.execution.schedulers.AsyncScheduler.execute(AsyncScheduler.scala:31) at monix.eval.internal.TaskRestartCallback.onSuccess(TaskRestartCallback.scala:72) at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:183) at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:101) at monix.eval.internal.TaskRestartCallback.onSuccess(TaskRestartCallback.scala:74) at monix.eval.internal.TaskSleep$SleepRunnable.run(TaskSleep.scala:71) at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
π Better Task => Future interop when using Local
β Running
Task
isolatesLocal
, which was not available in theFuture
, resulting inrunToFuture
.
π This release enables it and unblocks compelling use cases, such as reading proper request context in Akka HTTP Directive.
We've created an AkkaHTTP Example that demonstrates it.β Latest behavior is:
implicit val s: Scheduler = Scheduler.Implicits.tracedval local = Local(0)for { \_ \<- Task(local.update(1)).runToFuture value \<- Future(local.get) } yield println(s"Local value in Future $value") println(s"Local value on the current thread = $value")// =\> Local value on the current thread = 0// =\> Local value in Future = 1
Task
still isolates theLocal
, but theFuture
continuation keeps the same reference and can read it.
Before the change,Local
would be0
in theFuture
.π More information about
Local
can be found in the new Local documentation.β‘οΈ Relevant updates
- π #1205: Observable.mergePrioritizedList
- #1209: Bring back Observable.transform and Transformer alias
- #1198: Fix flatMapIterable calling recursively itself
- #1213: Propagate Local isolation in runToFuture
- π #1217: Fix performance regression in bufferSliding
- π #1244: Add support for compression: Gzip and deflate
- #1262: Fix bug in Task.runSyncUnsafe related to ContextSwitch
- #1265: Implement Observable#bufferWhile and bufferWhileInclusive
- #1267: Implement Asynchronous Stack Traces for Task
- #1276: Add Task/Coeval convenience methods like .when
- #1282: Add 'as' in Task and Coeval
- π #1284: Add left/right builders for Task and Coeval
- π #1286: Add none/some builders for Task and Coeval
- #1291: tapEval, tapError methods at Task and Coeval
- #1293: removing no-op onComplete() in Observable.takeByTimespan
- #1299: Fix a bug in Local.value
- #1307: Observable.fromIteratorBuffered
π People who made this release possible
- Adrian (@adrian-salajan)
- Alexandru Nedelcu (@alexelcu)
- ctoomey (@ctoomey)
- Dmitro Pochapsky (@pchpsky)
- Georgy Khotyan (@GKhotyan)
- James Yoo (@jyoo980)
- Kasper Kondzielski (@ghostbuster91)
- Pau AlarcΓ³n (@paualarco)
- Piotr GawryΕ (@Avasil)
- Sandeep Kota (@sandeepkota)
- tafit3 (@tafit3)
- Vladyslav (@VladPodilnyk)
-
v3.2.2 Changes
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:
- Akosh Farkash (@aakoshh)
- Alexander (@ppressives)
- fnqista (@fnqista)
- Kasper Kondzielski (@ghostbuster91)
- Pau AlarcΓ³n (@paualarco)
- Piotr GawryΕ (@Avasil)
- Vasily Kirichenko (@vasily-kirichenko)
- Viktor LΓΆvgren (@vlovgr)
-
v3.2.1 Changes
April 30, 2020 -
v3.2.0 Changes
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:
- Allan Timothy Leong (@allantl)
- Eugene Platonov (@jozic)
- Fabien Chaillou (@fchaillou)
- Gabriel Claramunt (@gclaramunt)
- Mantas IndraΕ‘ius (@mantasindrasius)
- TapanVaishnav (@TapanVaishnav)
- najder-k (@najder-k)
- Oleg Pyzhcov (@oleg-py)
- Pau AlarcΓ³n (@paualarco)
- Piotr GawryΕ (@Avasil)
- Ross A. Baker (@rossabaker)
- Viet Yen Nguyen (@nguyenvietyen)
- Viktor Dychko (@dychko)
-
v3.1.0 Changes
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:
- Alexandru Nedelcu (@alexandru)
- Allan Timothy Leong (@allantl)
- fdilg (@fdilg)
- Jan Bracker (@jbracker)
- Moritz Bust (@busti)
- mudsam (@mudsam)
- Oleg Pyzhcov (@oleg-py)
- PaweΕ Kiersznowski (@pk044)
- Piotr GawryΕ (@Avasil)
- tanaka takaya (@takayahilton)
- TapanVaishnav (@TapanVaishnav)
-
v3.0.0 Changes
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 toLocal
aimed at fixing interop withFuture
. Note that
you might have to callLocal.isolate
to disable any sharing between tasks.PR #775:
Simplified FutureUtils materialize & dematerializePR #790:
π improve fixed rate scheduling on JSPR #803:
Eagerly null out dequeued elements in ChunkedArrayQueuePR #822:
β remove dependency on cats-effect from monix-executionPR #773:
π change Cancelable.empty type to CancelablePR #887:
Shared locals with bindsPR #888:
π Fix uncaught exception reporting for SchedulerSub-project: monix-catnap
PR #778:
β Adds ConcurrentChannelPR #784:
β More concurrent tests for MVar/SemaphorePR #865:
β Adding FunctionK values for Task, CoevalSub-project: monix-eval
PR #802:
encapsulate local ctx on task executionPR #807:
π Improve encapsulation test, encapsulate locals on ContextShiftPR #838:
β Add taskified variants of timeout combinatorsPR #839:
TaskLocal should propagate when used with Bracket MethodsPR #849:
π» Specify exception on timeoutPR #887:
Shared locals with bindsPR #865:
β Adding FunctionK values for Task, CoevalSub-project: monix-reactive
PR #759:
β Add Contravariant Observer and SubscriberPR #760:
β add Observable.filterEvalPR #774:
β Add FunctorFilter instances for Iterant&ObservablePR #779:
fork blocking i/o observable opsPR #794:
π Acquire lock per subscription instead of observable-wide lockPR #801:
π¨ Observable buffers refactoringPR #819:
Extend ObservableLike with filterNot methodPR #831:
β SerializableSuite to no longer test Future for serializabilityPR #834:
Observable.reduce should emit for single item sourcePR #846:
Ensure mapParallelOrdered runs in parallelPR #872:
β Add observable take while inclusivePR #895:
π Fix memory leak in MapParallelOrderedObservableSub-project: monix-tail
PR #778:
β Adds Iterant.channel, Iterant#consumePR #826:
β add Iterant.uncons operationChores
PR #766:
β‘οΈ Update sbt-unidoc to 0.4.2PR #766:
β‘οΈ Update sbt-pgp to 1.1.2PR #768:
β‘οΈ Update sbt-mima-plugin to 0.3.0PR #769:
β‘οΈ Update sbt-git to 1.0.0PR #770:
β‘οΈ Update jctools-core to 2.1.2PR #771:
β‘οΈ Update kind-projector to 0.9.8PR #772:
β‘οΈ Update sbt-jmh to 0.3.4PR #771:
β‘οΈ Update kind-projector to 0.9.9PR #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.26PR #788:
β‘οΈ Update cats-effect, cats-effect-laws to 1.1.0PR #796:
π fix scalacOptionsPR #797:
Scala 2.12.8PR #798:
β‘οΈ Update intervalWithFixedDelay scaladocPR #805:
π Rename keysBuffer to os in groupBy's parametersPR #808:
β‘οΈ Update Copyright to 2019PR #810:
sbt 1.2.8 (was 1.1.0)PR #812:
β‘οΈ Update Minitest to 2.3.2PR #813:
Disable code coveragePR #818:
β‘οΈ Update Cats-Effect to 1.2.0PR #820:
β‘οΈ Update cats-laws to 1.5.0PR #821:
β‘οΈ Update cats-laws to 1.6.0PR #823:
π Scala 2.13 supportPR #821:
β‘οΈ Update sbt-header to 5.1.0PR #827:
β Remove comments from .jvmoptsPR #833:
π Fix build for 2.13.0-M5 by deactivating Mima for itPR #840:
β Add adopters list seedPR #842:
π Fixed deprecation docs for Task#coevalPR #843:
β Remove dead code from testsPR #844:
β‘οΈ Update sbt-header to 5.2.0PR #847:
β‘οΈ Update ExecutionModel.scalaPR #850:
β± Increase rate in AsyncSchedulerSuitePR #854:
π fix apparently erronous code involving Unit companionPR #855:
β‘οΈ Update sbt-jmh to 0.3.5PR #857:
π Make benchmarks compilePR #859:
β‘οΈ Update sbt-scalajs, scalajs-compiler to 0.6.27PR #867:
β‘οΈ Update kind-projector to 0.10.0PR #869:
π fix compile errors with latest Scala 2.13PR #874:
β‘οΈ Update cats-effect, cats-effect-laws to 1.3.0PR #878:
Compile Benchmarks in CIPR #879:
Do on subscription cancel scaladoc fixPR #889:
β‘οΈ Update cats-effect, cats-effect-laws to 1.3.1PR #894:
β Add UnsafeBecauseImpure Annotation to foreach.PR #896:
β‘οΈ Update cats-laws to 1.6.1PR #898:
Reformating via ScalafmtPR #899:
π Fix autoCancelableRunLoops comment.PR #901:
π avoid deprecated unicode arrow charsPR #902:
π reformat build filesThanks
π People that made this release possible, in alphabetical order:
- Alexandru Nedelcu (@alexandru)
- Allan Timothy Leong (@allantl)
- Daniel Neades (@djneades)
- Dawid Dworak (@ddworak)
- Eugene Platonov (@jozic)
- Itamar Ravid (@iravid)
- Jorge (@jvican)
- Jorge Branco (@jorgedfbranco)
- Kenji Yoshida (@xuwei-k)
- Luke Stephenson (@lukestephenson)
- Matthew de Detrich (@mdedetrich)
- Mikhail Chugunkov (@poslegm)
- Oleg Pyzhcov (@oleg-py)
- Ota Hauptmann (@Otah)
- Piotr GawryΕ (@Avasil)
- Roman Tkalenko (@tkroman)
- Ryo Fukumuro (@rfkm)
- Sam Guymer (@guymers)
- Seth Tisue (@SethTisue)
- Tanaka Takaya (@takayahilton)
- Yann Simon (@yanns)
π And special thanks to our top contributor in this release:
https://github.com/fthomas/scala-steward :) -
v3.0.0-RC5 Changes
August 29, 2019π This is a bug fix release β fixing a critical issue:
- #991 (PR #993):
NullPointerException
inTask
when used in combination withLocal
- π¨ #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
. - #991 (PR #993):
-
v3.0.0-RC4 Changes
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 with3.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 release4.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 ofScheduler.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 inTask
so
β running it withrunToFutureOpt
or setting env variable is no longer a necessity. Local.isolate
has a overload for isolatingFuture
which is safer than regularLocal.isolate
.
0οΈβ£ The
Local
model since3.0.0-RC3
shares by default. To isolate modifications ofLocal
by
other concurrently runningFuture
, you have to callLocal.isolate
.In case of
Task
, there is aTaskLocal.isolate
version. It is automatically called whenever you runTask
so if your use case is settingcorrelationId
or similar, it probably won't require any explicit isolation because
your HTTP library will most likely run theTask
per request.π Task Builders
There are two major improvements:
- β± Now all
Task
builders (Task.create
,Task.async
,Task.fromFuture
etc.) will return aTask
that continues on defaultScheduler
which is the one supplied during execution unless overriden byexecuteOn
. - π 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
toTask.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:
- Alexandru Nedelcu (@alexandru)
- Allan Timothy Leong (@allantl)
- BambooTuna (@BambooTuna)
- Carlo (@entangled90)
- Oleg Pyzhcov (@oleg-py)
- Paul K (@pk044)
- Piotr GawryΕ (@Avasil)
- Rahil Bohra (@rahilb)
- Richard Tarczaly (@arlequin-nyc)
- Ryo Fukumuro (@rfkm)
- TapanVaishnav (@TapanVaishnav)
- Valentin Willscher (@valenterry)
- β± Using
-
v3.0.0-RC3 Changes
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 toLocal
aimed at fixing interop withFuture
. Note that
you might have to callLocal.isolate
to disable any sharing between tasks.PR #775:
Simplified FutureUtils materialize & dematerializePR #790:
π improve fixed rate scheduling on JSPR #803:
Eagerly null out dequeued elements in ChunkedArrayQueuePR #822:
β remove dependency on cats-effect from monix-executionPR #773:
π change Cancelable.empty type to CancelablePR #887:
Shared locals with bindsPR #888:
π Fix uncaught exception reporting for SchedulerSub-project: monix-catnap
PR #778:
β Adds ConcurrentChannelPR #784:
β More concurrent tests for MVar/SemaphorePR #865:
β Adding FunctionK values for Task, CoevalSub-project: monix-eval
PR #802:
encapsulate local ctx on task executionPR #807:
π Improve encapsulation test, encapsulate locals on ContextShiftPR #838:
β Add taskified variants of timeout combinatorsPR #839:
TaskLocal should propagate when used with Bracket MethodsPR #849:
π» Specify exception on timeoutPR #887:
Shared locals with bindsPR #865:
β Adding FunctionK values for Task, CoevalSub-project: monix-reactive
PR #759:
β Add Contravariant Observer and SubscriberPR #760:
β add Observable.filterEvalPR #774:
β Add FunctorFilter instances for Iterant&ObservablePR #779:
fork blocking i/o observable opsPR #794:
π Acquire lock per subscription instead of observable-wide lockPR #801:
π¨ Observable buffers refactoringPR #819:
Extend ObservableLike with filterNot methodPR #831:
β SerializableSuite to no longer test Future for serializabilityPR #834:
Observable.reduce should emit for single item sourcePR #846:
Ensure mapParallelOrdered runs in parallelPR #872:
β Add observable take while inclusivePR #895:
π Fix memory leak in MapParallelOrderedObservableSub-project: monix-tail
PR #778:
β Adds Iterant.channel, Iterant#consumePR #826:
β add Iterant.uncons operationChores
PR #766:
β‘οΈ Update sbt-unidoc to 0.4.2PR #766:
β‘οΈ Update sbt-pgp to 1.1.2PR #768:
β‘οΈ Update sbt-mima-plugin to 0.3.0PR #769:
β‘οΈ Update sbt-git to 1.0.0PR #770:
β‘οΈ Update jctools-core to 2.1.2PR #771:
β‘οΈ Update kind-projector to 0.9.8PR #772:
β‘οΈ Update sbt-jmh to 0.3.4PR #771:
β‘οΈ Update kind-projector to 0.9.9PR #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.26PR #788:
β‘οΈ Update cats-effect, cats-effect-laws to 1.1.0PR #796:
π fix scalacOptionsPR #797:
Scala 2.12.8PR #798:
β‘οΈ Update intervalWithFixedDelay scaladocPR #805:
π Rename keysBuffer to os in groupBy's parametersPR #808:
β‘οΈ Update Copyright to 2019PR #810:
sbt 1.2.8 (was 1.1.0)PR #812:
β‘οΈ Update Minitest to 2.3.2PR #813:
Disable code coveragePR #818:
β‘οΈ Update Cats-Effect to 1.2.0PR #820:
β‘οΈ Update cats-laws to 1.5.0PR #821:
β‘οΈ Update cats-laws to 1.6.0PR #823:
π Scala 2.13 supportPR #821:
β‘οΈ Update sbt-header to 5.1.0PR #827:
β Remove comments from .jvmoptsPR #833:
π Fix build for 2.13.0-M5 by deactivating Mima for itPR #840:
β Add adopters list seedPR #842:
π Fixed deprecation docs for Task#coevalPR #843:
β Remove dead code from testsPR #844:
β‘οΈ Update sbt-header to 5.2.0PR #847:
β‘οΈ Update ExecutionModel.scalaPR #850:
β± Increase rate in AsyncSchedulerSuitePR #854:
π fix apparently erronous code involving Unit companionPR #855:
β‘οΈ Update sbt-jmh to 0.3.5PR #857:
π Make benchmarks compilePR #859:
β‘οΈ Update sbt-scalajs, scalajs-compiler to 0.6.27PR #867:
β‘οΈ Update kind-projector to 0.10.0PR #869:
π fix compile errors with latest Scala 2.13PR #874:
β‘οΈ Update cats-effect, cats-effect-laws to 1.3.0PR #878:
Compile Benchmarks in CIPR #879:
Do on subscription cancel scaladoc fixPR #889:
β‘οΈ Update cats-effect, cats-effect-laws to 1.3.1PR #894:
β Add UnsafeBecauseImpure Annotation to foreach.PR #896:
β‘οΈ Update cats-laws to 1.6.1PR #898:
Reformating via ScalafmtPR #899:
π Fix autoCancelableRunLoops comment.PR #901:
π avoid deprecated unicode arrow charsPR #902:
π reformat build filesThanks
π People that made this release possible, in alphabetical order:
- Alexandru Nedelcu (@alexandru)
- Allan Timothy Leong (@allantl)
- Daniel Neades (@djneades)
- Dawid Dworak (@ddworak)
- Eugene Platonov (@jozic)
- Itamar Ravid (@iravid)
- Jorge (@jvican)
- Jorge Branco (@jorgedfbranco)
- Kenji Yoshida (@xuwei-k)
- Luke Stephenson (@lukestephenson)
- Matthew de Detrich (@mdedetrich)
- Mikhail Chugunkov (@poslegm)
- Oleg Pyzhcov (@oleg-py)
- Ota Hauptmann (@Otah)
- Piotr GawryΕ (@Avasil)
- Roman Tkalenko (@tkroman)
- Ryo Fukumuro (@rfkm)
- Sam Guymer (@guymers)
- Seth Tisue (@SethTisue)
- Tanaka Takaya (@takayahilton)
- Yann Simon (@yanns)
π And special thanks to our top contributor in this release:
https://github.com/fthomas/scala-steward :)