feat: drop Scala 2.13, consolidate to Scala 3 only#2051
Merged
farmdawgnation merged 3 commits intolift-5.0from Apr 4, 2026
Merged
feat: drop Scala 2.13, consolidate to Scala 3 only#2051farmdawgnation merged 3 commits intolift-5.0from
farmdawgnation merged 3 commits intolift-5.0from
Conversation
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>
There was a problem hiding this comment.
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.sbtand 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/scalaandsrc/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.
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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