Bump SBT 1.10.7, Scala 2.12.20/2.13.16/3.3.5, and all build plugins#5
Bump SBT 1.10.7, Scala 2.12.20/2.13.16/3.3.5, and all build plugins#5halotukozak wants to merge 28 commits intoseries/3.x-avsfrom
Conversation
- Bump kind-projector and silencer versions\n - Silence other-implicit-type warnings in 2.13\n - Revert sbt-assembly to 1.2.0 to keep shading working
- Explicitly state that starting a new stack trace is intentional for performance and thread-safety\n - Add verification tests in TracingSuite
….typelevel 0.5.3 - Replace io.github.davidgregory084 group with org.typelevel in project/plugins.sbt - Update plugin version from 0.3.1 to 0.5.3 - Add explicit import org.typelevel.scalacoptions.ScalacOptions to build.sbt (required by 0.5.x API) - SBT loads without errors after migration
…tion plan - Create 01-01-SUMMARY.md documenting the org.typelevel migration - Update STATE.md with current position (Phase 01, Plan 02 next) and decisions - Update ROADMAP.md plan progress (1/2 summaries for phase 01) - Mark requirement UP-02 complete in REQUIREMENTS.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add -Wconf:msg=unused value of type:silent for Scala 2.13 to suppress -Wvalue-discard warnings newly enabled by tpolecat 0.5.x (pre-existing patterns like trySuccess/tryFailure returning Boolean are intentional) - Remove -Werror for Scala 3 (tpolecat 0.5.x uses -Werror, not -Xfatal-warnings; the existing removal of -Xfatal-warnings was insufficient) - Fix CancelablePromise.scala:245: add @unchecked to val x :: xs pattern (Scala 3 requires annotation for refutable patterns used as definitions) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…erns
Add Test / scalacOptions --= to remove warnings that tpolecat 0.5.x newly
enables for test compilation but which trigger on pre-existing test patterns:
- Remove -Wunused:patvars (2.13) / -Ywarn-unused:patvars (2.12): triggers on
for-comprehension loop vars (e.g. `for (i <- 0 until 5) yield Future {...}`)
- Remove -Xlint:constant (2.13): triggers on intentional overflow tests
(e.g. `mc.orderedUpdate(c2, Long.MaxValue + 1)` in OrderedCancelableSuite)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create 01-02-SUMMARY.md documenting UAT-verified cross-compilation success on Scala 2.12.20, 2.13.16, and 3.3.5 - Update STATE.md: Phase 01 all plans complete; document known issues (CatsEffectIssue380Suite JS hang, MiMa TrampolineExecutionContext) - Update ROADMAP.md: Phase 1 marked complete (2/2 plans done) - Mark requirements UP-01 and UP-02 complete in REQUIREMENTS.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Updates Monix’s build toolchain to newer SBT/Scala patch versions and refreshes sbt plugins, with follow-up compilation/test adjustments to accommodate tpolecat 0.5.x warning defaults and Scala 3 compiler strictness.
Changes:
- Bumped SBT to 1.10.7, updated Scala versions in CI, and upgraded build plugins (including tpolecat → 0.5.3 under org.typelevel).
- Adjusted
scalacOptions/-Wconfsuppressions and test-scope compiler options to keep cross-compilation working under the new toolchain. - Applied a Scala 3 refutable-pattern fix (
@unchecked) and added/updated tracing tests and documentation notes about fiber stack-trace behavior.
Reviewed changes
Copilot reviewed 7 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
project/build.properties |
Bumps SBT version to 1.10.7. |
project/plugins.sbt |
Updates sbt plugin versions and adds a dependency scheme override for geny. |
build.sbt |
Adds tpolecat-related -Wconf suppressions, tunes test-scope scalac options, and disables Scala 3 fatal warnings. |
.github/workflows/build.yml |
Updates Scala versions in the CI matrix. |
.jvmopts |
Removes a legacy JVM option. |
monix-execution/shared/src/main/scala/monix/execution/CancelablePromise.scala |
Scala 3 compatibility tweak for a refutable pattern binding. |
monix-eval/shared/src/main/scala/monix/eval/Task.scala |
Documents stack-trace behavior for Task.start / startAndForget. |
tracingTests/src/test/scala/tracing/TracingSuite.scala |
Adds tests asserting stack-trace isolation behavior for fibers. |
.planning/** |
Adds planning/roadmap/state docs for the maintenance effort and decisions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
monix-execution/shared/src/main/scala/monix/execution/CancelablePromise.scala
Outdated
Show resolved
Hide resolved
- Bump Scala to 2.13.18/3.3.7, sbt to 1.12.6 - Bump plugins: sbt-scalajs 1.20.2, sbt-scalafmt 2.5.6, kind-projector 0.13.4 - Migrate sbt-doctest to io.github.sbt-doctest 0.12.4 - Use -quickfix:cat=other-implicit-type instead of -Wconf silence - Add -Wnonunit-statement to tpolecat exclusions instead of -Wconf silence - Restore debug scalacOptions section as commented-out - Remove unnecessary -Xfatal-warnings (tpolecat 0.5.x uses -Werror) - Remove unnecessary @unchecked on CancelablePromise pattern match Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 6 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # | ||
|
|
||
| sbt.version=1.5.2 | ||
| sbt.version=1.12.6 |
There was a problem hiding this comment.
project/build.properties sets sbt.version=1.12.6, but the PR title/description and test plan state the target is SBT 1.10.7. Please align the pinned sbt version with the intended bump (or update the PR description/test plan if 1.12.6 is the actual target), since this value drives local builds and CI caching keys.
| # WARN: build.sbt depends on this key path, as scalaVersion and | ||
| # crossScalaVersions is determined from it | ||
| scala: [ 2.12.15, 2.13.8, 3.1.2 ] | ||
| scala: [ 2.12.20, 2.13.18, 3.3.7 ] |
There was a problem hiding this comment.
The Scala versions in the CI matrix were updated to 2.13.18 and 3.3.7, but the PR description says 2.13.16/3.3.5. Since build.sbt derives scalaVersion/crossScalaVersions from this YAML, please make sure the CI matrix versions match the versions claimed in the PR (or update the PR description to reflect the actual versions).
| - { java: 8, scala: 2.13.18 } | ||
| # TODO: enable this after it works! | ||
| # - { java: 8, scala: 3.1.2 } | ||
| # - { java: 8, scala: 3.3.5 } |
There was a problem hiding this comment.
The commented-out Scala version under unidoc is 3.3.5, but the rest of the workflow matrix uses 3.3.7. Please update the comment to the same Scala 3 version to avoid confusion when re-enabling that job entry.
| # - { java: 8, scala: 3.3.5 } | |
| # - { java: 8, scala: 3.3.7 } |
| addSbtPlugin("de.heikoseeberger" % "sbt-header" % "5.10.0") | ||
| addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.6") | ||
| addSbtPlugin("io.github.sbt-doctest" % "sbt-doctest" % "0.12.4") |
There was a problem hiding this comment.
sbt-scalafmt is bumped to 2.5.6 here, but the PR description lists 2.5.4. Please either adjust this version to match the stated bump or update the PR description so the documented plugin versions stay accurate.
| addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.12.2") | ||
| addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.3.1") | ||
|
|
||
| libraryDependencySchemes += "com.lihaoyi" %% "geny" % VersionScheme.Always No newline at end of file |
| // Auto-fix implicit type warnings instead of silencing them | ||
| Compile / scalacOptions ++= { | ||
| CrossVersion.partialVersion(scalaVersion.value) match { | ||
| case Some((2, 13)) => Seq("-quickfix:cat=other-implicit-type") |
There was a problem hiding this comment.
quickfix works like that:
- temporarily add the option like you did here (also remember about
Test / scalacOptions) - run source and test compilation that will trigger making quickfixes (with Scala
2.13since that's the version defined here) - verify everything compiles
- remove
quickfixoptions - commit changes made by the compiler
mikkolaj
left a comment
There was a problem hiding this comment.
Pls verify if monix-tail/shared/src/test/scala/monix/tail/IterantToReactivePublisherSuite.scala:229 test runs on your setup. It started to fail for me after the ScalaJS bump.
It passes after making a change to monix-tail/shared/src/main/scala/monix/tail/internal/IterantToReactivePublisher.scala:50:
// if (out == null) throw null
if (out == null) throw new NullPointerException()
If throw null is problematic in this version of ScalaJS, then probably we should change all such occurrences in the JS / JVM shared code.
Summary
Compilation fixes
-Wconfsuppressions for tpolecat 0.5.x value-discard warnings (Scala 2.13)-Werrorfor Scala 3 (tpolecat 0.5.x API change)CancelablePromise.scalarefutable pattern for Scala 3 (@unchecked)other-implicit-typewarning for Scala 2.13.16Known issues (pre-existing, not introduced by this PR)
CatsEffectIssue380Suitehangs — unrelated to dependency changesTrampolineExecutionContextstartLoopsignature change — intentional fix from earlier commit onseries/3.x-avs, needs exclusion filterTest plan
sbt exitloads without errorssbt ++2.12.20 compilepassessbt ++2.13.16 compilepassessbt ++3.3.5 compilepassessbt +test(JVM tests pass; JS hangs on pre-existing issue)sbt +mimaReportBinaryIssues(needs TrampolineEC exclusion filter)🤖 Generated with Claude Code