Skip to content

Bump SBT 1.10.7, Scala 2.12.20/2.13.16/3.3.5, and all build plugins#5

Open
halotukozak wants to merge 28 commits intoseries/3.x-avsfrom
bump-dependencies
Open

Bump SBT 1.10.7, Scala 2.12.20/2.13.16/3.3.5, and all build plugins#5
halotukozak wants to merge 28 commits intoseries/3.x-avsfrom
bump-dependencies

Conversation

@halotukozak
Copy link
Member

Summary

  • SBT 1.5.2 → 1.10.7
  • Scala 2.12.15/2.13.8/3.1.2 → 2.12.20/2.13.16/3.3.5
  • sbt-tpolecat 0.3.1 (io.github.davidgregory084) → 0.5.3 (org.typelevel)
  • sbt-mima-plugin → 1.1.4, sbt-jmh → 0.4.7, sbt-scalafmt → 2.5.4, sbt-header → 5.10.0, sbt-pgp → 2.3.1, sbt-sonatype → 3.12.2, sbt-git → 2.1.0, sbt-dynver → 5.1.0, sbt-reproducible-builds → 0.32
  • sbt-assembly intentionally kept at 1.2.0 (2.x breaks JCTools shading)

Compilation fixes

  • Added -Wconf suppressions for tpolecat 0.5.x value-discard warnings (Scala 2.13)
  • Removed -Werror for Scala 3 (tpolecat 0.5.x API change)
  • Fixed CancelablePromise.scala refutable pattern for Scala 3 (@unchecked)
  • Suppressed other-implicit-type warning for Scala 2.13.16
  • Tuned test-scope scalacOptions for pre-existing patterns

Known issues (pre-existing, not introduced by this PR)

  • Scala.js test CatsEffectIssue380Suite hangs — unrelated to dependency changes
  • MiMa reports TrampolineExecutionContext startLoop signature change — intentional fix from earlier commit on series/3.x-avs, needs exclusion filter

Test plan

  • sbt exit loads without errors
  • sbt ++2.12.20 compile passes
  • sbt ++2.13.16 compile passes
  • sbt ++3.3.5 compile passes
  • sbt +test (JVM tests pass; JS hangs on pre-existing issue)
  • sbt +mimaReportBinaryIssues (needs TrampolineEC exclusion filter)

🤖 Generated with Claude Code

halotukozak and others added 25 commits February 24, 2026 14:40
 - 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>
Copilot AI review requested due to automatic review settings February 26, 2026 13:53
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 / -Wconf suppressions 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.

@halotukozak halotukozak self-assigned this Feb 26, 2026
@halotukozak halotukozak requested a review from mikkolaj February 26, 2026 14:01
- 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>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 18 to +20
# 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 ]
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
- { java: 8, scala: 2.13.18 }
# TODO: enable this after it works!
# - { java: 8, scala: 3.1.2 }
# - { java: 8, scala: 3.3.5 }
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
# - { java: 8, scala: 3.3.5 }
# - { java: 8, scala: 3.3.7 }

Copilot uses AI. Check for mistakes.
Comment on lines +5 to +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")
Copy link

Copilot AI Mar 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can be removed now.

// 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")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

quickfix works like that:

  1. temporarily add the option like you did here (also remember about Test / scalacOptions)
  2. run source and test compilation that will trigger making quickfixes (with Scala 2.13 since that's the version defined here)
  3. verify everything compiles
  4. remove quickfix options
  5. commit changes made by the compiler

Copy link

@mikkolaj mikkolaj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants