Skip to content

Commit f2df7e2

Browse files
Merge pull request #389 from davenverse/updateBuild
Update Build, Add Native, 11 for caffeine
2 parents 2692200 + eb41c2f commit f2df7e2

File tree

6 files changed

+117
-77
lines changed

6 files changed

+117
-77
lines changed

.github/workflows/ci.yml

Lines changed: 86 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -28,34 +28,34 @@ jobs:
2828
strategy:
2929
matrix:
3030
os: [ubuntu-latest]
31-
scala: [2.12.15, 2.13.8, 3.1.2]
32-
java: [temurin@8]
33-
project: [rootJS, rootJVM]
31+
scala: [2.12.15, 2.13.8, 3.2.2]
32+
java: [temurin@11]
33+
project: [rootJS, rootJVM, rootNative]
3434
runs-on: ${{ matrix.os }}
3535
steps:
3636
- name: Checkout current branch (full)
37-
uses: actions/checkout@v2
37+
uses: actions/checkout@v3
3838
with:
3939
fetch-depth: 0
4040

41-
- name: Download Java (temurin@8)
42-
id: download-java-temurin-8
43-
if: matrix.java == 'temurin@8'
44-
uses: typelevel/download-java@v1
41+
- name: Download Java (temurin@11)
42+
id: download-java-temurin-11
43+
if: matrix.java == 'temurin@11'
44+
uses: typelevel/download-java@v2
4545
with:
4646
distribution: temurin
47-
java-version: 8
47+
java-version: 11
4848

49-
- name: Setup Java (temurin@8)
50-
if: matrix.java == 'temurin@8'
51-
uses: actions/setup-java@v2
49+
- name: Setup Java (temurin@11)
50+
if: matrix.java == 'temurin@11'
51+
uses: actions/setup-java@v3
5252
with:
5353
distribution: jdkfile
54-
java-version: 8
55-
jdkFile: ${{ steps.download-java-temurin-8.outputs.jdkFile }}
54+
java-version: 11
55+
jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }}
5656

5757
- name: Cache sbt
58-
uses: actions/cache@v2
58+
uses: actions/cache@v3
5959
with:
6060
path: |
6161
~/.sbt
@@ -67,34 +67,38 @@ jobs:
6767
key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }}
6868

6969
- name: Check that workflows are up to date
70-
run: sbt 'project ${{ matrix.project }}' '++${{ matrix.scala }}' 'project /' githubWorkflowCheck
70+
run: sbt githubWorkflowCheck
7171

7272
- name: scalaJSLink
7373
if: matrix.project == 'rootJS'
74-
run: sbt 'project ${{ matrix.project }}' '++${{ matrix.scala }}' Test/scalaJSLinkerResult
74+
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' Test/scalaJSLinkerResult
75+
76+
- name: nativeLink
77+
if: matrix.project == 'rootNative'
78+
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' Test/nativeLink
7579

7680
- name: Test
77-
run: sbt 'project ${{ matrix.project }}' '++${{ matrix.scala }}' test
81+
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' test
7882

7983
- name: Check binary compatibility
80-
if: matrix.java == 'temurin@8'
81-
run: sbt 'project ${{ matrix.project }}' '++${{ matrix.scala }}' mimaReportBinaryIssues
84+
if: matrix.java == 'temurin@11' && matrix.os == 'ubuntu-latest'
85+
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' mimaReportBinaryIssues
8286

8387
- name: Generate API documentation
84-
if: matrix.java == 'temurin@8'
85-
run: sbt 'project ${{ matrix.project }}' '++${{ matrix.scala }}' doc
88+
if: matrix.java == 'temurin@11' && matrix.os == 'ubuntu-latest'
89+
run: sbt 'project ${{ matrix.project }}' '++ ${{ matrix.scala }}' doc
8690

8791
- name: Make target directories
8892
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
89-
run: mkdir -p modules/noop/.jvm/target target .js/target modules/caffeine/target modules/core/.js/target modules/noop/.js/target modules/core/.jvm/target .jvm/target .native/target modules/reload/.js/target modules/reload/.jvm/target modules/bench/target project/target
93+
run: mkdir -p modules/noop/.jvm/target target .js/target modules/core/.native/target modules/caffeine/target modules/noop/.native/target modules/core/.js/target modules/noop/.js/target modules/core/.jvm/target .jvm/target .native/target modules/reload/.js/target modules/reload/.jvm/target modules/bench/target project/target
9094

9195
- name: Compress target directories
9296
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
93-
run: tar cf targets.tar modules/noop/.jvm/target target .js/target modules/caffeine/target modules/core/.js/target modules/noop/.js/target modules/core/.jvm/target .jvm/target .native/target modules/reload/.js/target modules/reload/.jvm/target modules/bench/target project/target
97+
run: tar cf targets.tar modules/noop/.jvm/target target .js/target modules/core/.native/target modules/caffeine/target modules/noop/.native/target modules/core/.js/target modules/noop/.js/target modules/core/.jvm/target .jvm/target .native/target modules/reload/.js/target modules/reload/.jvm/target modules/bench/target project/target
9498

9599
- name: Upload target directories
96100
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main')
97-
uses: actions/upload-artifact@v2
101+
uses: actions/upload-artifact@v3
98102
with:
99103
name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.project }}
100104
path: targets.tar
@@ -106,33 +110,33 @@ jobs:
106110
strategy:
107111
matrix:
108112
os: [ubuntu-latest]
109-
scala: [3.1.2]
110-
java: [temurin@8]
113+
scala: [3.2.2]
114+
java: [temurin@11]
111115
runs-on: ${{ matrix.os }}
112116
steps:
113117
- name: Checkout current branch (full)
114-
uses: actions/checkout@v2
118+
uses: actions/checkout@v3
115119
with:
116120
fetch-depth: 0
117121

118-
- name: Download Java (temurin@8)
119-
id: download-java-temurin-8
120-
if: matrix.java == 'temurin@8'
121-
uses: typelevel/download-java@v1
122+
- name: Download Java (temurin@11)
123+
id: download-java-temurin-11
124+
if: matrix.java == 'temurin@11'
125+
uses: typelevel/download-java@v2
122126
with:
123127
distribution: temurin
124-
java-version: 8
128+
java-version: 11
125129

126-
- name: Setup Java (temurin@8)
127-
if: matrix.java == 'temurin@8'
128-
uses: actions/setup-java@v2
130+
- name: Setup Java (temurin@11)
131+
if: matrix.java == 'temurin@11'
132+
uses: actions/setup-java@v3
129133
with:
130134
distribution: jdkfile
131-
java-version: 8
132-
jdkFile: ${{ steps.download-java-temurin-8.outputs.jdkFile }}
135+
java-version: 11
136+
jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }}
133137

134138
- name: Cache sbt
135-
uses: actions/cache@v2
139+
uses: actions/cache@v3
136140
with:
137141
path: |
138142
~/.sbt
@@ -144,7 +148,7 @@ jobs:
144148
key: ${{ runner.os }}-sbt-cache-v2-${{ hashFiles('**/*.sbt') }}-${{ hashFiles('project/build.properties') }}
145149

146150
- name: Download target directories (2.12.15, rootJS)
147-
uses: actions/download-artifact@v2
151+
uses: actions/download-artifact@v3
148152
with:
149153
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.15-rootJS
150154

@@ -154,7 +158,7 @@ jobs:
154158
rm targets.tar
155159
156160
- name: Download target directories (2.12.15, rootJVM)
157-
uses: actions/download-artifact@v2
161+
uses: actions/download-artifact@v3
158162
with:
159163
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.15-rootJVM
160164

@@ -163,8 +167,18 @@ jobs:
163167
tar xf targets.tar
164168
rm targets.tar
165169
170+
- name: Download target directories (2.12.15, rootNative)
171+
uses: actions/download-artifact@v3
172+
with:
173+
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.15-rootNative
174+
175+
- name: Inflate target directories (2.12.15, rootNative)
176+
run: |
177+
tar xf targets.tar
178+
rm targets.tar
179+
166180
- name: Download target directories (2.13.8, rootJS)
167-
uses: actions/download-artifact@v2
181+
uses: actions/download-artifact@v3
168182
with:
169183
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.8-rootJS
170184

@@ -174,7 +188,7 @@ jobs:
174188
rm targets.tar
175189
176190
- name: Download target directories (2.13.8, rootJVM)
177-
uses: actions/download-artifact@v2
191+
uses: actions/download-artifact@v3
178192
with:
179193
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.8-rootJVM
180194

@@ -183,22 +197,42 @@ jobs:
183197
tar xf targets.tar
184198
rm targets.tar
185199
186-
- name: Download target directories (3.1.2, rootJS)
187-
uses: actions/download-artifact@v2
200+
- name: Download target directories (2.13.8, rootNative)
201+
uses: actions/download-artifact@v3
202+
with:
203+
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.8-rootNative
204+
205+
- name: Inflate target directories (2.13.8, rootNative)
206+
run: |
207+
tar xf targets.tar
208+
rm targets.tar
209+
210+
- name: Download target directories (3.2.2, rootJS)
211+
uses: actions/download-artifact@v3
212+
with:
213+
name: target-${{ matrix.os }}-${{ matrix.java }}-3.2.2-rootJS
214+
215+
- name: Inflate target directories (3.2.2, rootJS)
216+
run: |
217+
tar xf targets.tar
218+
rm targets.tar
219+
220+
- name: Download target directories (3.2.2, rootJVM)
221+
uses: actions/download-artifact@v3
188222
with:
189-
name: target-${{ matrix.os }}-${{ matrix.java }}-3.1.2-rootJS
223+
name: target-${{ matrix.os }}-${{ matrix.java }}-3.2.2-rootJVM
190224

191-
- name: Inflate target directories (3.1.2, rootJS)
225+
- name: Inflate target directories (3.2.2, rootJVM)
192226
run: |
193227
tar xf targets.tar
194228
rm targets.tar
195229
196-
- name: Download target directories (3.1.2, rootJVM)
197-
uses: actions/download-artifact@v2
230+
- name: Download target directories (3.2.2, rootNative)
231+
uses: actions/download-artifact@v3
198232
with:
199-
name: target-${{ matrix.os }}-${{ matrix.java }}-3.1.2-rootJVM
233+
name: target-${{ matrix.os }}-${{ matrix.java }}-3.2.2-rootNative
200234

201-
- name: Inflate target directories (3.1.2, rootJVM)
235+
- name: Inflate target directories (3.2.2, rootNative)
202236
run: |
203237
tar xf targets.tar
204238
rm targets.tar
@@ -215,4 +249,4 @@ jobs:
215249
(echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1)
216250
217251
- name: Publish
218-
run: sbt '++${{ matrix.scala }}' tlRelease
252+
run: sbt '++ ${{ matrix.scala }}' tlCiRelease

build.sbt

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
ThisBuild / tlBaseVersion := "0.6"
1+
ThisBuild / tlBaseVersion := "0.7"
22
ThisBuild / organization := "io.chrisdavenport"
33
ThisBuild / organizationName := "Christopher Davenport"
44
ThisBuild / licenses := Seq(License.MIT)
@@ -8,19 +8,22 @@ ThisBuild / developers := List(
88
ThisBuild / tlCiReleaseBranches := Seq("main")
99
ThisBuild / tlSonatypeUseLegacyHost := true
1010

11-
ThisBuild / crossScalaVersions := Seq("2.12.15", "2.13.8", "3.1.2")
11+
ThisBuild / crossScalaVersions := Seq("2.12.15", "2.13.8", "3.2.2")
12+
ThisBuild / scalaVersion := "3.2.2"
1213

1314
ThisBuild / testFrameworks += new TestFramework("munit.Framework")
1415

1516
ThisBuild / versionScheme := Some("early-semver")
1617

18+
ThisBuild / githubWorkflowJavaVersions := Seq(JavaSpec.temurin("11"))
1719

18-
val catsV = "2.8.0"
19-
val catsEffectV = "3.3.13"
20-
val catsCollectionV = "0.9.3"
2120

22-
val munitV = "0.7.25"
23-
val munitCEV = "1.0.7"
21+
val catsV = "2.9.0"
22+
val catsEffectV = "3.4.8"
23+
val catsCollectionV = "0.9.6"
24+
25+
val munitV = "1.0.0-M7"
26+
val munitCEV = "2.0.0-M3"
2427

2528
lazy val mules = tlCrossRootProject
2629
.aggregate(core, caffeine, reload, noop, bench)
@@ -31,16 +34,16 @@ lazy val bench = project.in(file("modules/bench"))
3134
.enablePlugins(NoPublishPlugin)
3235
.dependsOn(core.jvm, caffeine)
3336

34-
lazy val core = crossProject(JSPlatform, JVMPlatform)
37+
lazy val core = crossProject(JSPlatform, JVMPlatform, NativePlatform)
3538
.crossType(CrossType.Pure)
3639
.in(file("modules/core"))
3740
.settings(
3841
name := "mules",
3942
libraryDependencies ++= Seq(
4043
"org.typelevel" %%% "cats-core" % catsV,
4144
"org.typelevel" %%% "cats-effect" % catsEffectV,
42-
"io.chrisdavenport" %%% "mapref" % "0.2.1",
4345
),
46+
tlJdkRelease := Some(8)
4447
).settings(testDeps)
4548
.jsSettings(
4649
scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule)},
@@ -51,16 +54,17 @@ lazy val caffeine = project.in(file("modules/caffeine"))
5154
.settings(
5255
name := "mules-caffeine",
5356
libraryDependencies ++= Seq(
54-
"com.github.ben-manes.caffeine" % "caffeine" % "2.9.3"
57+
"com.github.ben-manes.caffeine" % "caffeine" % "3.1.6"
5558
),
5659
).settings(testDeps)
5760

58-
lazy val noop = crossProject(JSPlatform, JVMPlatform)
61+
lazy val noop = crossProject(JSPlatform, JVMPlatform, NativePlatform)
5962
.crossType(CrossType.Pure)
6063
.in(file("modules/noop"))
6164
.dependsOn(core)
6265
.settings(
63-
name := "mules-noop"
66+
name := "mules-noop",
67+
tlJdkRelease := Some(8)
6468
).settings(testDeps)
6569
.jsSettings(
6670
scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule)},
@@ -75,6 +79,7 @@ lazy val reload = crossProject(JSPlatform, JVMPlatform)
7579
libraryDependencies ++= Seq(
7680
"org.typelevel" %%% "cats-collections-core" % catsCollectionV
7781
),
82+
tlJdkRelease := Some(8),
7883
).settings(testDeps)
7984
.jsSettings(
8085
scalaJSLinkerConfig ~= { _.withModuleKind(ModuleKind.CommonJSModule)},
@@ -85,6 +90,6 @@ lazy val testDeps = Seq(
8590
"org.typelevel" %%% "cats-effect-laws" % catsEffectV % Test,
8691
"org.scalameta" %%% "munit" % munitV % Test,
8792
"org.scalameta" %%% "munit-scalacheck" % munitV % Test,
88-
"org.typelevel" %%% "munit-cats-effect-3" % munitCEV % Test,
93+
"org.typelevel" %%% "munit-cats-effect" % munitCEV % Test,
8994
)
9095
)

modules/core/src/main/scala/io/chrisdavenport/mules/DispatchOneCache.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import cats.effect.implicits._
55
import cats.implicits._
66

77
import scala.collection.immutable.Map
8-
import io.chrisdavenport.mapref.MapRef
9-
import io.chrisdavenport.mapref.MapRef.fromSeqRefs
8+
import cats.effect.std.MapRef
9+
import cats.effect.std.MapRef.fromSeqRefs
1010

1111
import java.util.concurrent.ConcurrentHashMap
1212
import scala.collection.mutable
@@ -361,7 +361,7 @@ private[mules] object PurgeableMapRef {
361361
}
362362
}
363363

364-
def ofConcurrentHashMap[F[_]: Concurrent, K, V](
364+
def ofConcurrentHashMap[F[_]: Async, K, V](
365365
initialCapacity: Int = 16,
366366
loadFactor: Float = 0.75f,
367367
concurrencyLevel: Int = 16,

modules/core/src/main/scala/io/chrisdavenport/mules/MemoryCache.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import cats.effect.syntax.all._
66
import cats.syntax.all._
77
import scala.collection.immutable.Map
88

9-
import io.chrisdavenport.mapref.MapRef
10-
import io.chrisdavenport.mapref.implicits._
9+
import cats.effect.std.MapRef
10+
import cats.effect.std.syntax.all._
1111

1212
final class MemoryCache[F[_], K, V] private[MemoryCache] (
1313
private val mapRef: MapRef[F, K, Option[MemoryCache.MemoryCacheItem[V]]],
@@ -338,7 +338,7 @@ object MemoryCache {
338338
)
339339
}
340340

341-
def ofConcurrentHashMap[F[_]: Temporal, K, V](
341+
def ofConcurrentHashMap[F[_]: Async, K, V](
342342
defaultExpiration: Option[TimeSpec],
343343
initialCapacity: Int = 16,
344344
loadFactor: Float = 0.75f,

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=1.6.2
1+
sbt.version=1.8.2

project/plugins.sbt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
addSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.3")
2-
addSbtPlugin("org.typelevel" % "sbt-typelevel-ci-release" % "0.4.12")
3-
addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % "0.4.12")
4-
addSbtPlugin("org.typelevel" % "sbt-typelevel-settings" % "0.4.12")
5-
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.10.0")
2+
addSbtPlugin("org.typelevel" % "sbt-typelevel-ci-release" % "0.4.19")
3+
addSbtPlugin("org.typelevel" % "sbt-typelevel-site" % "0.4.19")
4+
addSbtPlugin("org.typelevel" % "sbt-typelevel-settings" % "0.4.19")
5+
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.13.0")
66
addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")
7-
7+
addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.12")
8+
addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.0")

0 commit comments

Comments
 (0)