Skip to content

Commit

Permalink
defer ExecutionContextExecutor instanciation
Browse files Browse the repository at this point in the history
  • Loading branch information
ornicar committed Mar 31, 2024
1 parent 1e955bd commit 42e01ec
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 17 deletions.
2 changes: 1 addition & 1 deletion build.sbt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
lazy val scalalib = Project("scalalib", file("."))
organization := "com.github.lichess-org"
name := "scalalib"
version := "10.0.1"
version := "10.0.2"
scalaVersion := "3.4.1"
licenses += "MIT" -> url("https://opensource.org/licenses/MIT")
libraryDependencies += "org.typelevel" %% "cats-core" % "2.10.0"
Expand Down
6 changes: 3 additions & 3 deletions src/main/scala/actor/AsyncActorSequencer.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package actor

import com.github.blemale.scaffeine.{ LoadingCache, Scaffeine }
import scala.concurrent.duration.FiniteDuration
import scala.concurrent.{ ExecutionContext, Future, Promise }
import scala.concurrent.{ ExecutionContextExecutor, Future, Promise }

import scalalib.model.Max
import scalalib.future.FutureAfter
Expand All @@ -14,7 +14,7 @@ final class AsyncActorSequencer(
timeout: FiniteDuration,
name: String,
monitor: AsyncActorBounded.Monitor
)(using ExecutionContext, FutureAfter):
)(using ExecutionContextExecutor, FutureAfter):

import AsyncActorSequencer.*

Expand All @@ -35,7 +35,7 @@ final class AsyncActorSequencers[K](
timeout: FiniteDuration,
name: String,
monitor: AsyncActorBounded.Monitor
)(using ExecutionContext, FutureAfter):
)(using ExecutionContextExecutor, FutureAfter):

def apply[A <: Matchable](key: K)(task: => Future[A]): Future[A] =
sequencers.get(key).run(() => task)
Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/actor/SyncActorMap.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ package actor

import com.github.benmanes.caffeine.cache.RemovalCause
import com.github.blemale.scaffeine.LoadingCache
import scala.concurrent.{ Future, Promise }
import scala.concurrent.{ ExecutionContextExecutor, Future, Promise }
import scala.concurrent.duration.FiniteDuration

final class SyncActorMap[Id, T <: SyncActor](
mkActor: Id => T,
accessTimeout: FiniteDuration
):
)(using ExecutionContextExecutor):

def getOrMake(id: Id): T = actors.get(id)

Expand Down
14 changes: 4 additions & 10 deletions src/main/scala/cache.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,12 @@ package scalalib

import com.github.blemale.scaffeine.Scaffeine
import com.github.benmanes.caffeine.cache.Scheduler
import scala.concurrent.ExecutionContextExecutor

object cache:

def scaffeine: Scaffeine[Any, Any] =
def scaffeine(using ExecutionContextExecutor): Scaffeine[Any, Any] =
scaffeineNoScheduler.scheduler(Scheduler.systemScheduler)

def scaffeineNoScheduler: Scaffeine[Any, Any] =
Scaffeine().executor(defaultExecutor)

// https://www.scala-lang.org/api/2.13.4/Executor%24.html#global:Executor
private val defaultExecutor: scala.concurrent.ExecutionContextExecutor =
scala.concurrent.ExecutionContext.getClass
.getDeclaredMethod("opportunistic")
.invoke(scala.concurrent.ExecutionContext)
.asInstanceOf[scala.concurrent.ExecutionContextExecutor]
def scaffeineNoScheduler(using ecx: ExecutionContextExecutor): Scaffeine[Any, Any] =
Scaffeine().executor(ecx)
2 changes: 1 addition & 1 deletion src/test/scala/MathsTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package scalalib

class MathsTest extends munit.FunSuite:

import lila.common.Maths.*
import scalalib.Maths.*

test("standard deviation empty collection"):
assertEquals(standardDeviation(Nil), None)
Expand Down

0 comments on commit 42e01ec

Please sign in to comment.