Skip to content

Commit dddaae1

Browse files
authored
Merge pull request #3781 from armanbilge/topic/timer-stealing-without-synchronization
Timer stealing without a concurrent data structure
2 parents cb68f36 + 0927d34 commit dddaae1

File tree

19 files changed

+736
-1532
lines changed

19 files changed

+736
-1532
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,5 +609,5 @@ jobs:
609609
- name: Submit Dependencies
610610
uses: scalacenter/sbt-dependency-submission@v2
611611
with:
612-
modules-ignore: cats-effect-benchmarks_3 cats-effect-benchmarks_2.12 cats-effect-benchmarks_2.13 cats-effect_3 cats-effect_2.12 cats-effect_2.13 cats-effect-stress-tests_3 cats-effect-stress-tests_2.12 cats-effect-stress-tests_2.13 cats-effect-example_sjs1_3 cats-effect-example_sjs1_2.12 cats-effect-example_sjs1_2.13 rootjs_3 rootjs_2.12 rootjs_2.13 ioapptestsnative_3 ioapptestsnative_2.12 ioapptestsnative_2.13 cats-effect-graalvm-example_3 cats-effect-graalvm-example_2.12 cats-effect-graalvm-example_2.13 cats-effect-tests_sjs1_3 cats-effect-tests_sjs1_2.12 cats-effect-tests_sjs1_2.13 rootjvm_3 rootjvm_2.12 rootjvm_2.13 rootnative_3 rootnative_2.12 rootnative_2.13 cats-effect-example_native0.4_3 cats-effect-example_native0.4_2.12 cats-effect-example_native0.4_2.13 cats-effect-example_3 cats-effect-example_2.12 cats-effect-example_2.13 cats-effect-tests_3 cats-effect-tests_2.12 cats-effect-tests_2.13 ioapptestsjvm_3 ioapptestsjvm_2.12 ioapptestsjvm_2.13 ioapptestsjs_3 ioapptestsjs_2.12 ioapptestsjs_2.13 cats-effect-tests_native0.4_3 cats-effect-tests_native0.4_2.12 cats-effect-tests_native0.4_2.13
612+
modules-ignore: cats-effect-benchmarks_3 cats-effect-benchmarks_2.12 cats-effect-benchmarks_2.13 cats-effect_3 cats-effect_2.12 cats-effect_2.13 cats-effect-example_sjs1_3 cats-effect-example_sjs1_2.12 cats-effect-example_sjs1_2.13 rootjs_3 rootjs_2.12 rootjs_2.13 ioapptestsnative_3 ioapptestsnative_2.12 ioapptestsnative_2.13 cats-effect-graalvm-example_3 cats-effect-graalvm-example_2.12 cats-effect-graalvm-example_2.13 cats-effect-tests_sjs1_3 cats-effect-tests_sjs1_2.12 cats-effect-tests_sjs1_2.13 rootjvm_3 rootjvm_2.12 rootjvm_2.13 rootnative_3 rootnative_2.12 rootnative_2.13 cats-effect-example_native0.4_3 cats-effect-example_native0.4_2.12 cats-effect-example_native0.4_2.13 cats-effect-example_3 cats-effect-example_2.12 cats-effect-example_2.13 cats-effect-tests_3 cats-effect-tests_2.12 cats-effect-tests_2.13 ioapptestsjvm_3 ioapptestsjvm_2.12 ioapptestsjvm_2.13 ioapptestsjs_3 ioapptestsjs_2.12 ioapptestsjs_2.13 cats-effect-tests_native0.4_3 cats-effect-tests_native0.4_2.12 cats-effect-tests_native0.4_2.13
613613
configs-ignore: test scala-tool scala-doc-tool test-internal

NOTICE.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
cats-effect
2+
Copyright 2020-2024 Typelevel
3+
Licensed under Apache License 2.0 (see LICENSE)
4+
5+
This software contains portions of code derived from scala-js
6+
https://github.com/scala-js/scala-js
7+
Copyright EPFL
8+
Licensed under Apache License 2.0 (see LICENSE)

build.sbt

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,6 @@ val nativeProjects: Seq[ProjectReference] =
364364
val undocumentedRefs =
365365
jsProjects ++ nativeProjects ++ Seq[ProjectReference](
366366
benchmarks,
367-
stressTests,
368367
example.jvm,
369368
graalVMExample,
370369
tests.jvm,
@@ -394,8 +393,7 @@ lazy val rootJVM = project
394393
std.jvm,
395394
example.jvm,
396395
graalVMExample,
397-
benchmarks,
398-
stressTests)
396+
benchmarks)
399397
.enablePlugins(NoPublishPlugin)
400398

401399
lazy val rootJS = project.aggregate(jsProjects: _*).enablePlugins(NoPublishPlugin)
@@ -419,7 +417,6 @@ lazy val kernel = crossProject(JSPlatform, JVMPlatform, NativePlatform)
419417
ProblemFilters.exclude[Problem]("cats.effect.kernel.GenConcurrent#Memoize*")
420418
)
421419
)
422-
.disablePlugins(JCStressPlugin)
423420
.jsSettings(
424421
libraryDependencies += "org.scala-js" %%% "scala-js-macrotask-executor" % MacrotaskExecutorVersion % Test
425422
)
@@ -456,7 +453,6 @@ lazy val kernelTestkit = crossProject(JSPlatform, JVMPlatform, NativePlatform)
456453
"cats.effect.kernel.testkit.TestContext#Task.copy")
457454
)
458455
)
459-
.disablePlugins(JCStressPlugin)
460456

461457
/**
462458
* The laws which constrain the abstractions. This is split from kernel to avoid jar file and
@@ -472,7 +468,6 @@ lazy val laws = crossProject(JSPlatform, JVMPlatform, NativePlatform)
472468
"org.typelevel" %%% "cats-laws" % CatsVersion,
473469
"org.typelevel" %%% "discipline-specs2" % DisciplineVersion % Test)
474470
)
475-
.disablePlugins(JCStressPlugin)
476471

477472
/**
478473
* Concrete, production-grade implementations of the abstractions. Or, more simply-put: IO. Also
@@ -668,6 +663,8 @@ lazy val core = crossProject(JSPlatform, JVMPlatform, NativePlatform)
668663
// #3787, internal utility that was no longer needed
669664
ProblemFilters.exclude[MissingClassProblem]("cats.effect.Thunk"),
670665
ProblemFilters.exclude[MissingClassProblem]("cats.effect.Thunk$"),
666+
// #3781, replaced TimerSkipList with TimerHeap
667+
ProblemFilters.exclude[MissingClassProblem]("cats.effect.unsafe.TimerSkipList*"),
671668
// #3943, refactored internal private CallbackStack data structure
672669
ProblemFilters.exclude[IncompatibleResultTypeProblem]("cats.effect.CallbackStack.push"),
673670
ProblemFilters.exclude[DirectMissingMethodProblem](
@@ -882,7 +879,6 @@ lazy val core = crossProject(JSPlatform, JVMPlatform, NativePlatform)
882879
ProblemFilters.exclude[MissingClassProblem]("cats.effect.unsafe.QueueExecutorScheduler$")
883880
)
884881
)
885-
.disablePlugins(JCStressPlugin)
886882

887883
/**
888884
* Test support for the core project, providing various helpful instances like ScalaCheck
@@ -898,7 +894,6 @@ lazy val testkit = crossProject(JSPlatform, JVMPlatform, NativePlatform)
898894
"org.specs2" %%% "specs2-core" % Specs2Version % Test
899895
)
900896
)
901-
.disablePlugins(JCStressPlugin)
902897

903898
/**
904899
* Unit tests for the core project, utilizing the support provided by testkit.
@@ -1050,7 +1045,6 @@ lazy val std = crossProject(JSPlatform, JVMPlatform, NativePlatform)
10501045
ProblemFilters.exclude[MissingClassProblem]("cats.effect.std.JavaSecureRandom$")
10511046
)
10521047
)
1053-
.disablePlugins(JCStressPlugin)
10541048

10551049
/**
10561050
* A trivial pair of trivial example apps primarily used to show that IOApp works as a practical
@@ -1084,20 +1078,12 @@ lazy val benchmarks = project
10841078
.dependsOn(core.jvm, std.jvm)
10851079
.settings(
10861080
name := "cats-effect-benchmarks",
1081+
fork := true,
10871082
javaOptions ++= Seq(
10881083
"-Dcats.effect.tracing.mode=none",
10891084
"-Dcats.effect.tracing.exceptions.enhanced=false"))
10901085
.enablePlugins(NoPublishPlugin, JmhPlugin)
10911086

1092-
lazy val stressTests = project
1093-
.in(file("stress-tests"))
1094-
.dependsOn(core.jvm, std.jvm)
1095-
.settings(
1096-
name := "cats-effect-stress-tests",
1097-
Jcstress / version := "0.16"
1098-
)
1099-
.enablePlugins(NoPublishPlugin, JCStressPlugin)
1100-
11011087
lazy val docs = project
11021088
.in(file("site-docs"))
11031089
.dependsOn(core.jvm)

core/jvm/src/main/java/cats/effect/unsafe/TimerSkipListNodeBase.java

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)