Skip to content

Commit 2d394d9

Browse files
committed
Upgrade Scala and sbt-ossuminc
Upgrade sbt-ossuminc to 1.4.0 so we can use scala 3.8.3. Fix a few new syntax issues found by the 3.8.3 compiler. Unify the MiMa check version to V.previous Update the NOTEBOOK
1 parent f2f576d commit 2d394d9

8 files changed

Lines changed: 78 additions & 21 deletions

File tree

NOTEBOOK.md

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,64 @@ to the task file and note completion in this notebook.
1515

1616
## Current Status
1717

18-
**Last Updated**: March 14, 2026
18+
**Last Updated**: April 7, 2026
19+
20+
### Release 1.20.0 Published (Apr 6, 2026)
21+
22+
Major validation and language extension release.
23+
24+
**New language features:**
25+
- `reply result SomeResult` statement for query handlers
26+
- `require invariant InvariantName` form (extends `require`)
27+
- `option auto-id` for entities (ULID at instantiation)
28+
29+
**CompletenessWarning system (1.19.0):**
30+
- New message kind at severity 4, "hard" (actionable)
31+
- 20+ completeness checks for simulation/codegen readiness
32+
- Entity: Id type scope, on-init, event-sourced events,
33+
query handlers, outlet streamlets
34+
- Context: Sink for entities, streamlet dispatch
35+
- Projector: repository refs, tell persistence
36+
- Saga: tell command in do-steps
37+
- Streamlet: output on flow/split/router, source generation
38+
- Types: empty commands, orphan events, query/result pairing
39+
- Handler: empty on-other, prompt-only, empty handlers
40+
41+
**Other changes in 1.18.0-1.20.0:**
42+
- EntityLifecyclePass: state-level handlers, entity-level
43+
expansion, initial state detection
44+
- AnalysisPass/AnalysisResult copied from riddl-gen
45+
- `require` statement added to language
46+
- BAST FORMAT_REVISION bumped to 6
47+
- Repository usage tracking in UsageResolution
48+
- release.yml: peter-evans replaced with gh api
49+
- notify-blog: fetches release body via API
50+
51+
### Releases Since Last Notebook Update
52+
53+
- **1.20.0** (Apr 6): Validation + language extensions
54+
- **1.19.0** (Apr 4): CompletenessWarning system
55+
- **1.18.0** (Mar 31): EntityLifecyclePass + AnalysisPass +
56+
require statement
57+
- **1.17.1** (Mar 30): Validation fixes
58+
- **1.17.0**, **1.16.5**, **1.16.4**, **1.16.3** (Mar)
59+
60+
### Pending Tasks in `task/`
61+
62+
- `auto-id-entity-option.md` — DONE (1.20.0)
63+
- `entitylifecyclepass-no-transitions.md` — DONE (1.18.0)
64+
- `move-analysis-pass-from-riddl-gen.md` — DONE (1.18.0)
65+
- `replace-peter-evans-dispatch.md` — DONE (1.18.0)
66+
- `error-location-end-of-line.md` — open
67+
- `sbt-riddl-validate-on-compile-fix.md` — open
68+
- `scope-based-parsing-api.md` — open
69+
- `optimize-treepass-performance.md` — open
70+
- `optimize-resolutionpass-performance.md` — open
71+
- `messageflowpass-empty-results.md` — DONE (1.15.3)
72+
- `add-blog-release-dispatch.md` — DONE
73+
- `upgrade-sbt-riddl-1.15.4.md` — open
74+
75+
---
1976

2077
### Release 1.15.3 Published (Mar 14, 2026)
2178

build.sbt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Global / onChangedBuildSource := ReloadOnSourceChanges
1414

1515
enablePlugins(OssumIncPlugin)
1616

17-
// NOTE: All modules override scalaVersion to 3.7.4 (from sbt-ossuminc's 3.3.7 LTS default).
17+
// NOTE: All modules override scalaVersion to 3.8.3 (from sbt-ossuminc's 3.3.7 LTS default).
1818
// Scala 3.3.x has an infinite loop bug in the compiler's type system (hasClassSymbol
1919
// recursion when computing union/intersection types). Fixed in later versions.
2020
// TASTy format is forward-compatible: 3.7.4 output can be consumed by 3.3.7 code (e.g., Akka servers).
@@ -55,13 +55,13 @@ lazy val Utils = config("utils")
5555
lazy val utils_cp: CrossProject = CrossModule("utils", "riddl-utils")(JVM, JS, Native)
5656
.configure(With.typical, With.GithubPublishing)
5757
.settings(
58-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
58+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
5959
scalacOptions += "-explain-cyclic",
6060
description := "Various utilities used throughout riddl libraries"
6161
)
6262
.jvmConfigure(With.coverage(70))
6363
.jvmConfigure(With.BuildInfo)
64-
.jvmConfigure(With.MiMa("0.57.0", Seq("com.ossuminc.riddl.utils.RiddlBuildInfo")))
64+
.jvmConfigure(With.MiMa(V.previous, Seq("com.ossuminc.riddl.utils.RiddlBuildInfo")))
6565
.jvmSettings(
6666
buildInfoPackage := "com.ossuminc.riddl.utils",
6767
buildInfoObject := "RiddlBuildInfo",
@@ -144,13 +144,13 @@ lazy val language_cp: CrossProject = CrossModule("language", "riddl-language")(J
144144
.dependsOn(cpDep(utils_cp))
145145
.configure(With.typical, With.GithubPublishing)
146146
.settings(
147-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
147+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
148148
description := "Abstract Syntax Tree and basic RIDDL language parser",
149149
scalacOptions ++= Seq("-explain", "--explain-types", "--explain-cyclic", "--no-warnings"),
150150
Test / parallelExecution := false
151151
)
152152
.jvmConfigure(With.coverage(65))
153-
.jvmConfigure(With.MiMa("0.57.0"))
153+
.jvmConfigure(With.MiMa(V.previous))
154154
.jvmSettings(
155155
tastyMiMaConfig ~= { prevConfig =>
156156
import java.util.Arrays.asList
@@ -211,13 +211,13 @@ lazy val passes_cp = CrossModule("passes", "riddl-passes")(JVM, JS, Native)
211211
.dependsOn(cpDep(utils_cp), cpDep(language_cp))
212212
.configure(With.typical, With.GithubPublishing)
213213
.settings(
214-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
214+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
215215
Test / parallelExecution := false,
216216
scalacOptions ++= Seq("-explain", "--explain-types", "--explain-cyclic"),
217217
description := "AST Pass infrastructure and essential passes"
218218
)
219219
.jvmConfigure(With.coverage(30))
220-
.jvmConfigure(With.MiMa("0.57.0"))
220+
.jvmConfigure(With.MiMa(V.previous))
221221
.jvmSettings(
222222
coverageExcludedPackages := "<empty>;$anon",
223223
mimaBinaryIssueFilters ++= Seq(
@@ -250,7 +250,7 @@ lazy val testkit_cp = CrossModule("testkit", "riddl-testkit")(JVM, JS, Native)
250250
.dependsOn(tkDep(utils_cp), tkDep(language_cp), tkDep(passes_cp))
251251
.configure(With.typical, With.GithubPublishing)
252252
.settings(
253-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
253+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
254254
description := "Testing kit for RIDDL language and passes"
255255
)
256256
.jvmSettings(
@@ -259,7 +259,7 @@ lazy val testkit_cp = CrossModule("testkit", "riddl-testkit")(JVM, JS, Native)
259259
Dep.scalactic_nojvm.value
260260
)
261261
)
262-
.jvmConfigure(With.MiMa("0.57.0"))
262+
.jvmConfigure(With.MiMa(V.previous))
263263
.jsConfigure(With.ScalaJS("RIDDL: language", withCommonJSModule = true))
264264
.jsConfigure(With.noMiMa)
265265
.jsSettings(
@@ -290,11 +290,11 @@ lazy val riddlLib_cp: CrossProject = CrossModule("riddlLib", "riddl-lib")(JS, JV
290290
)
291291
.configure(With.typical, With.GithubPublishing)
292292
.settings(
293-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
293+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
294294
description := "Bundling of essential RIDDL libraries"
295295
)
296296
.jvmConfigure(With.coverage(50))
297-
.jvmConfigure(With.MiMa("0.57.0"))
297+
.jvmConfigure(With.MiMa(V.previous))
298298
.jvmConfigure(
299299
With.Packaging.universal(
300300
maintainerEmail = "reid@ossuminc.com",
@@ -334,12 +334,12 @@ lazy val commands_cp: CrossProject = CrossModule("commands", "riddl-commands")(J
334334
.dependsOn(cpDep(utils_cp), cpDep(language_cp), cpDep(passes_cp))
335335
.configure(With.typical, With.GithubPublishing)
336336
.settings(
337-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
337+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
338338
scalacOptions ++= Seq("-explain", "--explain-types", "--explain-cyclic", "--no-warnings"),
339339
description := "RIDDL Command Infrastructure and command definitions"
340340
)
341341
.jvmConfigure(With.coverage(50))
342-
.jvmConfigure(With.MiMa("0.57.0"))
342+
.jvmConfigure(With.MiMa(V.previous))
343343
.jvmSettings(
344344
libraryDependencies ++= Seq(Dep.scopt, Dep.sconfig, Dep.scalajs_stubs),
345345
coverageExcludedFiles := """<empty>;$anon"""
@@ -365,7 +365,7 @@ lazy val riddlc_cp: CrossProject = CrossModule("riddlc", "riddlc")(JVM, Native)
365365
.configure(With.noMiMa)
366366
.dependsOn(cpDep(utils_cp), cpDep(language_cp), cpDep(passes_cp), cpDep(commands_cp))
367367
.settings(
368-
scalaVersion := "3.7.4", // Override 3.3.7 LTS - see top of file for reason
368+
scalaVersion := V.scala, // Override 3.3.7 LTS - see top of file for reason
369369
description := "The `riddlc` compiler and tests, the only executable in RIDDL",
370370
maintainer := "reid@ossuminc.com",
371371
mainClass := Option("com.ossuminc.riddl.RIDDLC")

passes/jvm-native/src/test/scala/com/ossuminc/riddl/passes/validate/CheckMessagesTest.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import org.scalatest.{Assertion, TestData}
1717
import java.nio.file.{Files, Path}
1818
import scala.collection.mutable
1919
import scala.jdk.StreamConverters.StreamHasToScala
20-
import scala.runtime.stdLibPatches.Predef.assert
2120
import scala.concurrent.duration.DurationInt
2221

2322
/** CheckMessage This test suite runs through the files in input/check directory and validates them each as their own

passes/jvm-native/src/test/scala/com/ossuminc/riddl/passes/validate/ValidateExamplesTest.scala

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import com.ossuminc.riddl.utils.CommonOptions
1010
import com.ossuminc.riddl.utils.pc
1111
import org.scalatest.TestData
1212

13-
import scala.runtime.stdLibPatches.Predef.assert
14-
1513
/** Validate files */
1614
class ValidateExamplesTest extends JVMAbstractValidatingTest {
1715

project/Dependencies.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ object V {
1515
val fastparse = "3.1.1"
1616
val jgit = "6.5.0"
1717
val lang3 = "3.17.0"
18+
val previous = "1.0.0"
19+
val scala = "3.8.3"
20+
val scala_native = "0.5.11"
1821
val scala_java_time = "2.6.0"
1922
val scalacheck = "1.18.1"
2023
val scalatest = "3.2.19"

project/plugins.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// GitHub Packages resolver for sbt-ossuminc
22
resolvers += "GitHub Packages" at "https://maven.pkg.github.com/ossuminc/sbt-ossuminc"
33

4-
addSbtPlugin("com.ossuminc" % "sbt-ossuminc" % "1.3.5")
4+
addSbtPlugin("com.ossuminc" % "sbt-ossuminc" % "1.4.0")
55

66
// This enables sbt-bloop to create bloop config files for Metals editors
77
// Uncomment locally if you use metals, otherwise don't slow down other

utils/jvm/src/main/scala/com/ossuminc/riddl/utils/JVMPlatformContext.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class JVMPlatformContext extends PlatformContext {
6060
override def read(file: URL): String =
6161
val source = Source.fromFile(file.toString)
6262
try {
63-
source.getLines.mkString("\n")
63+
source.getLines().mkString("\n")
6464
} finally {
6565
source.close()
6666
}

utils/native/src/main/scala/com/ossuminc/riddl/utils/NativePlatformContext.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class NativePlatformContext extends PlatformContext:
7272
override def read(file: URL): String =
7373
val source = Source.fromFile(file.toString)
7474
try {
75-
source.getLines.mkString("\n")
75+
source.getLines().mkString("\n")
7676
} finally {
7777
source.close()
7878
}

0 commit comments

Comments
 (0)