diff --git a/build.sbt b/build.sbt index 1bb4bd96..2221007a 100644 --- a/build.sbt +++ b/build.sbt @@ -20,7 +20,7 @@ inThisBuild(List( val monixVersion = "3.4.0" val minitestVersion = "2.9.6" -val catsEffectVersion = "2.5.1" +val catsEffectVersion = "3.2.0" // The Monix version with which we must keep binary compatibility. // https://github.com/typesafehub/migration-manager/wiki/Sbt-plugin diff --git a/core/jvm/src/test/scala/monix/bio/TypeClassLawsForTaskRunSyncUnsafeSuite.scala b/core/jvm/src/test/scala/monix/bio/TypeClassLawsForTaskRunSyncUnsafeSuite.scala index d9571bde..6edcabc0 100644 --- a/core/jvm/src/test/scala/monix/bio/TypeClassLawsForTaskRunSyncUnsafeSuite.scala +++ b/core/jvm/src/test/scala/monix/bio/TypeClassLawsForTaskRunSyncUnsafeSuite.scala @@ -17,7 +17,7 @@ package monix.bio -import cats.effect.{ContextShift, IO => CIO} +import cats.effect.{IO => CIO} import cats.effect.laws.discipline._ import cats.laws.discipline.{ApplicativeTests, BifunctorTests, CoflatMapTests, ParallelTests} import cats.kernel.laws.discipline.MonoidTests diff --git a/core/shared/src/main/scala/monix/bio/BIOApp.scala b/core/shared/src/main/scala/monix/bio/BIOApp.scala index e670514c..c3397308 100644 --- a/core/shared/src/main/scala/monix/bio/BIOApp.scala +++ b/core/shared/src/main/scala/monix/bio/BIOApp.scala @@ -17,10 +17,11 @@ package monix.bio -import cats.effect.{ConcurrentEffect, ContextShift, ExitCode, IOApp, Timer} +import cats.effect.{ConcurrentEffect, ExitCode, IOApp} import monix.catnap.SchedulerEffect import monix.bio.instances.CatsConcurrentEffectForTask import monix.execution.Scheduler +import cats.effect.Temporal /** Safe `App` type that executes a [[IO]]. Shutdown occurs after * the `IO` completes, as follows: @@ -88,7 +89,7 @@ trait BIOApp { val app = new IOApp { override implicit lazy val contextShift: ContextShift[cats.effect.IO] = SchedulerEffect.contextShift[cats.effect.IO](scheduler)(cats.effect.IO.ioEffect) - override implicit lazy val timer: Timer[cats.effect.IO] = + override implicit lazy val timer: Temporal[cats.effect.IO] = SchedulerEffect.timerLiftIO[cats.effect.IO](scheduler)(cats.effect.IO.ioEffect) def run(args: List[String]): cats.effect.IO[ExitCode] = self.run(args).to[cats.effect.IO] diff --git a/core/shared/src/main/scala/monix/bio/IO.scala b/core/shared/src/main/scala/monix/bio/IO.scala index 3cfd5b09..6da6c311 100644 --- a/core/shared/src/main/scala/monix/bio/IO.scala +++ b/core/shared/src/main/scala/monix/bio/IO.scala @@ -22,11 +22,9 @@ import cats.effect.{ Clock, Concurrent, ConcurrentEffect, - ContextShift, Effect, ExitCase, IO => CIO, - Timer, Fiber => _ } import cats.{~>, CommutativeApplicative, Monoid, Parallel, Semigroup} @@ -48,6 +46,7 @@ import scala.concurrent.{ExecutionContext, Future} import scala.util.{Failure, Success, Try} import monix.bio.tracing.{IOEvent, IOTrace} +import cats.effect.Temporal /** `Task` represents a specification for a possibly lazy or * asynchronous computation, which when executed will produce an `A` @@ -5453,11 +5452,11 @@ private[bio] abstract class TaskTimers extends TaskClocks { * [[monix.execution.Scheduler Scheduler]] * (that's being injected in [[IO.runToFuture]]). */ - implicit def timer[E]: Timer[IO[E, *]] = - timerAny.asInstanceOf[Timer[IO[E, *]]] + implicit def timer[E]: Temporal[IO[E, *]] = + timerAny.asInstanceOf[Temporal[IO[E, *]]] - private[this] final val timerAny: Timer[IO[Any, *]] = - new Timer[IO[Any, *]] { + private[this] final val timerAny: Temporal[IO[Any, *]] = + new Temporal[IO[Any, *]] { override def sleep(duration: FiniteDuration): IO[Any, Unit] = IO.sleep(duration) @@ -5469,8 +5468,8 @@ private[bio] abstract class TaskTimers extends TaskClocks { /** Builds a `cats.effect.Timer` instance, given a * [[monix.execution.Scheduler Scheduler]] reference. */ - def timer[E](s: Scheduler): Timer[IO[E, *]] = - new Timer[IO[E, *]] { + def timer[E](s: Scheduler): Temporal[IO[E, *]] = + new Temporal[IO[E, *]] { override def sleep(duration: FiniteDuration): IO[E, Unit] = IO.sleep(duration).executeOn(s) diff --git a/core/shared/src/main/scala/monix/bio/internal/TaskConversions.scala b/core/shared/src/main/scala/monix/bio/internal/TaskConversions.scala index 06be60c7..1af9bd42 100644 --- a/core/shared/src/main/scala/monix/bio/internal/TaskConversions.scala +++ b/core/shared/src/main/scala/monix/bio/internal/TaskConversions.scala @@ -69,7 +69,7 @@ private[bio] object TaskConversions { case IO.Termination(e) => F.raiseError(e) case IO.Eval(thunk) => F.delay(thunk()) case IO.EvalTotal(thunk) => F.delay(thunk()) - case _ => F.async(cb => eff.runAsync(source)(r => { cb(r); CIO.unit }).unsafeRunSync()) + case _ => F.async_(cb => eff.runAsync(source)(r => { cb(r); CIO.unit }).unsafeRunSync()) } /** Implementation for `IO.fromEffect`. diff --git a/core/shared/src/main/scala/monix/bio/internal/TaskParSequenceN.scala b/core/shared/src/main/scala/monix/bio/internal/TaskParSequenceN.scala index 050e4643..dccd0a24 100644 --- a/core/shared/src/main/scala/monix/bio/internal/TaskParSequenceN.scala +++ b/core/shared/src/main/scala/monix/bio/internal/TaskParSequenceN.scala @@ -18,11 +18,11 @@ package monix.bio.internal import cats.effect.ExitCase -import cats.effect.concurrent.Deferred import monix.bio.{Cause, IO, Task, UIO} import monix.catnap.ConcurrentQueue import monix.execution.exceptions.UncaughtErrorException import monix.execution.{BufferCapacity, ChannelType} +import cats.effect.Deferred private[bio] object TaskParSequenceN { diff --git a/core/shared/src/test/scala/monix/bio/TaskBracketSuite.scala b/core/shared/src/test/scala/monix/bio/TaskBracketSuite.scala index ecdb42a6..6fa0fa91 100644 --- a/core/shared/src/test/scala/monix/bio/TaskBracketSuite.scala +++ b/core/shared/src/test/scala/monix/bio/TaskBracketSuite.scala @@ -17,7 +17,6 @@ package monix.bio -import cats.effect.concurrent.Deferred import cats.laws._ import cats.laws.discipline._ import monix.execution.exceptions.{CompositeException, DummyException} @@ -25,6 +24,7 @@ import monix.execution.internal.Platform import scala.util.{Failure, Success} import scala.concurrent.duration._ +import cats.effect.Deferred object TaskBracketSuite extends BaseTestSuite { test("equivalence with onErrorHandleWith") { implicit sc => diff --git a/core/shared/src/test/scala/monix/bio/TaskClockTimerAndContextShiftSuite.scala b/core/shared/src/test/scala/monix/bio/TaskClockTimerAndContextShiftSuite.scala index fd85bb0f..c098df6c 100644 --- a/core/shared/src/test/scala/monix/bio/TaskClockTimerAndContextShiftSuite.scala +++ b/core/shared/src/test/scala/monix/bio/TaskClockTimerAndContextShiftSuite.scala @@ -19,12 +19,13 @@ package monix.bio import java.util.concurrent.TimeUnit -import cats.effect.{Clock, ContextShift, Timer} +import cats.effect.Clock import monix.execution.exceptions.DummyException import monix.execution.schedulers.TestScheduler import scala.concurrent.duration._ import scala.util.{Failure, Success} +import cats.effect.Temporal object TaskClockTimerAndContextShiftSuite extends BaseTestSuite { test("IO.clock is implicit") { _ => @@ -70,7 +71,7 @@ object TaskClockTimerAndContextShiftSuite extends BaseTestSuite { } test("IO.timer is implicit") { implicit s => - assertEquals(IO.timer[Any], implicitly[Timer[IO[Any, *]]]) + assertEquals(IO.timer[Any], implicitly[Temporal[IO[Any, *]]]) assertEquals(IO.timer[Any].clock, implicitly[Clock[IO[Any, *]]]) } diff --git a/core/shared/src/test/scala/monix/bio/TaskConversionsKSuite.scala b/core/shared/src/test/scala/monix/bio/TaskConversionsKSuite.scala index d5b33f0a..9963d195 100644 --- a/core/shared/src/test/scala/monix/bio/TaskConversionsKSuite.scala +++ b/core/shared/src/test/scala/monix/bio/TaskConversionsKSuite.scala @@ -17,7 +17,7 @@ package monix.bio -import cats.effect.{ContextShift, IO => CIO} +import cats.effect.{IO => CIO} import monix.catnap.SchedulerEffect import scala.util.Success diff --git a/core/shared/src/test/scala/monix/bio/TaskConversionsSuite.scala b/core/shared/src/test/scala/monix/bio/TaskConversionsSuite.scala index a840e453..f09e521d 100644 --- a/core/shared/src/test/scala/monix/bio/TaskConversionsSuite.scala +++ b/core/shared/src/test/scala/monix/bio/TaskConversionsSuite.scala @@ -556,13 +556,13 @@ object TaskConversionsSuite extends BaseTestSuite { fa.io.runAsync(cb) override def async[A](k: (Either[Throwable, A] => Unit) => Unit): CEIO[A] = - CEIO(CIO.async(k)) + CEIO(CIO.async_(k)) override def asyncF[A](k: (Either[Throwable, A] => Unit) => CEIO[Unit]): CEIO[A] = CEIO(CIO.asyncF(cb => k(cb).io)) override def suspend[A](thunk: => CEIO[A]): CEIO[A] = - CEIO(CIO.suspend(thunk.io)) + CEIO(CIO.defer(thunk.io)) override def flatMap[A, B](fa: CEIO[A])(f: A => CEIO[B]): CEIO[B] = CEIO(fa.io.flatMap(a => f(a).io)) diff --git a/core/shared/src/test/scala/monix/bio/TaskLikeConversionsSuite.scala b/core/shared/src/test/scala/monix/bio/TaskLikeConversionsSuite.scala index 3490e94f..0d0b24ae 100644 --- a/core/shared/src/test/scala/monix/bio/TaskLikeConversionsSuite.scala +++ b/core/shared/src/test/scala/monix/bio/TaskLikeConversionsSuite.scala @@ -18,7 +18,7 @@ package monix.bio import cats.Eval -import cats.effect.{ContextShift, IO => CIO, SyncIO} +import cats.effect.{IO => CIO, SyncIO} import cats.laws._ import cats.laws.discipline._ import cats.syntax.all._