Skip to content

Upgrade to JDK 17. Drop Scala 2.12 - #1247

Draft
micossow wants to merge 17 commits into
masterfrom
cursor/java17-drop-scala-2.12
Draft

micossow wants to merge 17 commits into
masterfrom
cursor/java17-drop-scala-2.12

Conversation

@micossow

@micossow micossow commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Prepares the 2.0.0 release: requires Java 17, drops Scala 2.12, and makes Scala 3 the default.

Breaking changes (for release notes)

  • Java 17 is the minimum for the server jar and for library users (bytecode targets Java 17).
  • Scala 2.12 artifacts are no longer published. Published versions: Scala 3 (_3) and Scala 2.13.
  • Scala 3 artifacts are built with Scala 3.9 LTS (was 3.3 LTS), so library users on Scala 3 need Scala 3.9+.
  • JVM Docker image (softwaremill/elasticmq) is now based on eclipse-temurin:17-jre-noble (was 11-jre-noble).
  • Native Docker image (softwaremill/elasticmq-native) is now built with GraalVM CE for JDK 17 (OL8 builder). It is still a static binary on Alpine, so images extending it keep working.

Other changes

  • The default sbt Scala version is now 3 (was 2.13), so the assembly jar and the Docker images run on Scala 3.
  • Logback upgraded 1.3.x → 1.6.3 (the 1.3 pin was only needed for Java 8).
  • GraalVM native-image metadata regenerated for Java 17 / Scala 3 / Logback 1.6. Verified by ci-native-image-agent-config-verification.
  • GraalVM base images pinned to 17.0.9.
  • ci-docker now smoke-tests the JVM and native images (create queue, send message, receive message), not just builds them.
  • Docs updated (README, CLAUDE.md); the stale sbt-native-packager Docker instructions are replaced with the Dockerfile-based flow.

Merge

Please squash-merge: the branch contains an experimental "Try SBT 2" commit and its revert, plus a merge from master.

🤖 Generated with Claude Code

micossow and others added 14 commits August 30, 2026 22:21
Publish 2.13/3 artifacts targeting JVM 17, run CI on Temurin 17, and move Docker/GraalVM images onto Java 17 so native builds still work.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep 2.13 as a cross-compile target and point assembly, Docker, and docs at scala-3 artifacts.

Co-authored-by: Cursor <cursoragent@cursor.com>
Remove the 1.3 Steward pin so the Java 11+ line can track current releases.

Co-authored-by: Cursor <cursoragent@cursor.com>
sbt writes Scala 3 artifacts under scala-3.3.7, not scala-3, so the previous globs missed the JARs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This reverts commit b3e27b0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All Scala 3 versions publish under the same _3 suffix, and artifacts
built with 3.9 can't be consumed by 3.3-3.8 users. Building with 3.3
LTS keeps the published artifacts usable by any Scala 3 project.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…est.

- Revert the AWS SDK v1 test workaround; all tests pass on Java 17 without it.
- Restore CLAUDE.md (importing AGENTS.md) so Claude Code still loads it.
- Smoke test the JVM and native Docker images in ci-docker.
- Pin GraalVM base images to 17.0.9 (what the floating :17 tag resolves to).
- Replace the stale sbt-native-packager Docker docs with the Dockerfile flow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Restores the pre-Java-17 runtime setup (static binary, alpine:3.22, tini)
so images extending elasticmq-native keep working. The builder must be
the OL8 variant: GraalVM's static JDK libs need glibc 2.28 symbols
(__xmknod) that OL9's glibc 2.34 no longer provides.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@micossow micossow changed the title Prepare 2.0.0 upgrade Upgrade to JDK 17. Drop Scala 2.12 Oct 4, 2026
micossow and others added 2 commits November 2, 2026 14:48
Take master's Scala 3.9.0 migration instead of 3.3 LTS. Keep Java 17
targets for both Scala versions and -Xsource:3 for 2.13. Keep both the
regenerated H2 reflect metadata and master's Page$PageReference entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Generated by the native-image agent in ci-native-image-agent-config-verification.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant