Skip to content

feat: drop Scala 2.13, consolidate to Scala 3 only#2051

Merged
farmdawgnation merged 3 commits intolift-5.0from
msf/drop-scala-2.13
Apr 4, 2026
Merged

feat: drop Scala 2.13, consolidate to Scala 3 only#2051
farmdawgnation merged 3 commits intolift-5.0from
msf/drop-scala-2.13

Conversation

@farmdawgnation
Copy link
Copy Markdown
Member

@farmdawgnation farmdawgnation commented Apr 4, 2026

Mailing List thread:
N/A

Drop Scala 2.13 support and consolidate all version-specific source directories to standard scala/ paths. The build now cross-compiles against Scala 3.3.7 (LTS) and 3.8.3 only. Version-conditional logic in Dependencies.scala is removed, and duplicate Scala 2.x test/source files are deleted in favor of the Scala 3 variants. CI matrix updated accordingly.

closes #2004

Remove all Scala 2.x version-specific source directories and consolidate
Scala 3 sources into standard scala/ paths. Update cross-build to target
Scala 3.3.7 (LTS) and 3.8.3. Simplify Dependencies.scala by removing
version-conditional logic. Remove Scala 2.x-only source variants for
FutureWithSession, NamedCometDispatcher, and version-specific test files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown

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

This PR completes the repo’s transition to Scala 3-only by removing Scala 2.13 cross-build support and collapsing version-specific source/test directories into the standard src/*/scala layout. It updates build configuration, dependency definitions, and CI to cross-compile only on Scala 3 (LTS + latest).

Changes:

  • Drop Scala 2.13 from build.sbt and the CI matrix; cross-build only Scala 3.3.7 and 3.8.3.
  • Remove Scala-version-conditional dependency logic and consolidate to Scala 3-compatible test dependencies (specs2 5.x; Mockito via scalatestplus).
  • Delete Scala 2.x/2.13/2.12/2.11 version-specific source/test trees in favor of unified Scala 3 sources/tests under src/main/scala and src/test/scala.

Reviewed changes

Copilot reviewed 61 out of 113 changed files in this pull request and generated no comments.

Show a summary per file
File Description
web/webkit/src/test/scala/net/liftweb/webapptest/MemoizeSpec.scala Rehomes Memoize tests into unified Scala 3 test path.
web/webkit/src/test/scala/net/liftweb/sitemap/LocSpec.scala Rehomes Loc tests into unified Scala 3 test path.
web/webkit/src/test/scala/net/liftweb/mockweb/WebSpecSpec.scala Rehomes WebSpec tests into unified Scala 3 test path.
web/webkit/src/test/scala/net/liftweb/http/SpecContextHelpers.scala Moves SpecContextHelpers into unified Scala 3 test path.
web/webkit/src/test/scala/net/liftweb/http/rest/XMLApiSpec.scala Rehomes XMLApi tests into unified Scala 3 test path.
web/webkit/src/test/scala/net/liftweb/http/provider/servlet/OfflineRequestSnapshotSpec.scala Rehomes test and switches mocking style away from specs2-mock.
web/webkit/src/test/scala/net/liftweb/http/LiftSessionSpec.scala Rehomes LiftSession tests into unified Scala 3 test path (specs2 5.x semantics).
web/webkit/src/test/scala-3/net/liftweb/http/SpecContextHelpers.scala Removes Scala 3-specific duplicate now that unified test path is used.
web/webkit/src/test/scala-2.13/net/liftweb/webapptest/MemoizeSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/test/scala-2.13/net/liftweb/sitemap/LocSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/test/scala-2.13/net/liftweb/mockweb/WebSpecSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/test/scala-2.13/net/liftweb/mockweb/MockWebSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/test/scala-2.13/net/liftweb/http/rest/XMLApiSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/test/scala-2.13/net/liftweb/http/provider/servlet/OfflineRequestSnapshotSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/test/scala-2.13/net/liftweb/http/LiftSessionSpec.scala Removes Scala 2.13-specific duplicate test file.
web/webkit/src/main/scala/net/liftweb/http/NamedCometDispatcher.scala Consolidates dispatcher implementation into unified main scala path.
web/webkit/src/main/scala_2.13/net/liftweb/http/NamedCometDispatcher.scala Removes Scala 2.13-specific source variant.
web/webkit/src/main/scala_2.13/net/liftweb/http/FutureWithSession.scala Removes Scala 2.13-specific source variant.
web/webkit/src/main/scala_2.12/net/liftweb/http/NamedCometDispatcher.scala Removes Scala 2.12-specific source variant.
web/webkit/src/main/scala_2.12/net/liftweb/http/FutureWithSession.scala Removes Scala 2.12-specific source variant.
web/webkit/src/main/scala_2.11/net/liftweb/http/NamedCometDispatcher.scala Removes Scala 2.11-specific source variant.
web/webkit/src/main/scala_2.11/net/liftweb/http/FutureWithSession.scala Removes Scala 2.11-specific source variant.
web/testkit/src/test/scala/net/liftweb/http/testing/MockHttpRequestSpec.scala Rehomes MockHttpRequest tests into unified Scala 3 test path.
web/testkit/src/test/scala-2.13/net/liftweb/http/testing/MockHttpRequestSpec.scala Removes Scala 2.13-specific duplicate test file.
README.md Updates Maven usage note to reflect Scala 3-only artifacts.
project/Dependencies.scala Removes Scala 2/3 conditional dependency logic; standardizes on Scala 3 tooling + specs2 5.x.
core/util/src/test/scala/net/liftweb/util/XmlParserSpec.scala Rehomes util XmlParser tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/SoftReferenceCacheSpec.scala Rehomes util SoftReferenceCache tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/SecurityHelpersSpec.scala Rehomes util SecurityHelpers tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/ScheduleSpec.scala Rehomes util Schedule tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/PropsSpec.scala Rehomes util Props tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/PCDataXmlParserSpec.scala Rehomes util PCDataXmlParser tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/MarkdownParserSpec.scala Rehomes util MarkdownParser tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/JsonCommandSpec.scala Rehomes util JsonCommand tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/IoHelpersSpec.scala Rehomes util IoHelpers tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/HttpHelpersSpec.scala Rehomes util HttpHelpers tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/HtmlRoundTripSpec.scala Rehomes util HTML round-trip tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/CurrencyZoneSpec.scala Rehomes util CurrencyZone tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/CssHelpersSpec.scala Rehomes util CssHelpers tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/ControlHelpersSpec.scala Rehomes util ControlHelpers tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/ConnectionIdentifierSpec.scala Rehomes util ConnectionIdentifier tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/CanResolveAsyncSpec.scala Rehomes util CanResolveAsync tests into unified Scala 3 test path.
core/util/src/test/scala/net/liftweb/util/BundleBuilderSpec.scala Rehomes util BundleBuilder tests into unified Scala 3 test path.
core/util/src/test/scala-2.13/net/liftweb/util/XmlParserSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/VCardParserSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/ToHeadSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/SoftReferenceCacheSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/SecurityHelpersSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/ScheduleSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/PropsSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/PCDataXmlParserSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/MarkdownParserSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/JsonCommandSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/IoHelpersSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/HttpHelpersSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/HtmlRoundTripSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/CurrencyZoneSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/CssHelpersSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/ControlHelpersSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/ConnectionIdentifierSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/CanResolveAsyncSpec.scala Removes Scala 2.13-specific duplicate test file.
core/util/src/test/scala-2.13/net/liftweb/util/BundleBuilderSpec.scala Removes Scala 2.13-specific duplicate test file.
core/common/src/test/scala/net/liftweb/common/LruMapSpec.scala Rehomes common LRUMap tests into unified Scala 3 test path.
core/common/src/test/scala/net/liftweb/common/LoggingSpec.scala Rehomes common Logging tests into unified Scala 3 test path.
core/common/src/test/scala/net/liftweb/common/HListSpec.scala Rehomes common HList tests into unified Scala 3 test path.
core/common/src/test/scala/net/liftweb/common/ConversionsSpec.scala Rehomes common Conversions tests into unified Scala 3 test path.
core/common/src/test/scala-2.13/net/liftweb/common/LruMapSpec.scala Removes Scala 2.13-specific duplicate test file.
core/common/src/test/scala-2.13/net/liftweb/common/LoggingSpec.scala Removes Scala 2.13-specific duplicate test file.
core/common/src/test/scala-2.13/net/liftweb/common/HListSpec.scala Removes Scala 2.13-specific duplicate test file.
core/common/src/test/scala-2.13/net/liftweb/common/ConversionsSpec.scala Removes Scala 2.13-specific duplicate test file.
core/actor/src/test/scala/net/liftweb/actor/MockLiftActorSpec.scala Rehomes actor mock tests into unified Scala 3 test path.
core/actor/src/test/scala/net/liftweb/actor/LAFutureSpec.scala Rehomes LAFuture tests into unified Scala 3 test path.
core/actor/src/test/scala/net/liftweb/actor/ActorSpec.scala Rehomes LiftActor tests into unified Scala 3 test path.
core/actor/src/test/scala-2.13/net/liftweb/actor/MockLiftActorSpec.scala Removes Scala 2.13-specific duplicate test file.
core/actor/src/test/scala-2.13/net/liftweb/actor/LAFutureSpec.scala Removes Scala 2.13-specific duplicate test file.
core/actor/src/test/scala-2.13/net/liftweb/actor/ActorSpec.scala Removes Scala 2.13-specific duplicate test file.
build.sbt Drops Scala 2.13, removes version-specific source dir wiring, and updates dependencies accordingly.
.github/workflows/ci.yaml Updates CI matrix to Scala 3 only (LTS + latest).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

farmdawgnation and others added 2 commits April 3, 2026 22:22
Scala 3.8 no longer resolves flatMap/foreach on JValue through
implicit conversions. Extract JString fields via explicit match
instead of relying on for-comprehension desugaring over JValue.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Scala 3.8.3 requires Java 17+.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@farmdawgnation farmdawgnation merged commit fa56024 into lift-5.0 Apr 4, 2026
5 checks passed
@farmdawgnation farmdawgnation deleted the msf/drop-scala-2.13 branch April 4, 2026 17:16
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.

2 participants