Skip to content

Scala 3.10.0 and sbt 2.0.10 - #281

Merged
prabhu merged 2 commits into
mainfrom
feat/scala-3.10
Oct 13, 2026
Merged

prabhu merged 2 commits into
mainfrom
feat/scala-3.10

Conversation

@prabhu

@prabhu prabhu commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Moves atom to Scala 3.10.0 and sbt 2.0.10, alongside AppThreat/chen#204.

sbt-github-packages has no sbt 2 build, so a small auto-plugin keeps the publish target, the appthreat registry resolver and the POM metadata. scalafmt, native-packager and wartremover move to their sbt 2 builds. sbt 2 puts outputs under target/out/jvm/scala-3.10.0/atom, so the staged app and the native image are pinned back to target/universal/stage and target/graalvm-native-image, where atom.sh, CI and the release jobs look for them. Tests keep sbt 1's behaviour: one suite at a time in the forked JVM, with resources as plain files.

Every multi-command sbt call in CI, the docs and the wrapper scripts is now one "a; b" argument, because sbt 2's client joins separate arguments and fails. CI also runs sbt --server: on Windows the thin client exits 0 even when a command fails, and with --server chen-from-main's -Dsbt.ivy.home reaches the build. Tests run with testFull, since sbt 2's test only reruns what changed.

atom on 3.10 still reads chen artifacts built with 3.9, so this can merge before chen. Tested on macOS against both today's chen 4.0.0 and a local publish of the chen branch (176 tests, edga ones included), on Windows 11 ARM64, and with a smoke run of the staged CLI on Python and C.

- scalaVersion 3.9.0 -> 3.10.0; sbt 1.13.0 -> 2.0.10, so the build
  definition now compiles with Scala 3 (scalafmt dialect follows)
- plugins: sbt-scalafmt 2.6.2, sbt-native-packager 1.13.0,
  sbt-wartremover 3.6.3; sbt-github-packages has no sbt 2 build, so
  project/GithubPackages.scala keeps publishTo, the appthreat registry
  resolver and the POM metadata it used to set
- createDistribution materializes sbt 2's virtual-file package
- keep sbt 1's test behaviour: suites run one at a time in the forked JVM
  and test resources stay plain files
- keep the staged app in target/universal/stage and the native image in
  target/graalvm-native-image, where atom.sh, CI and release expect them
- CI, docs and wrapper scripts pass sbt command sequences as one
  ;-separated argument (sbt 2's client joins separate arguments) and run
  testFull, since sbt 2's test only reruns what changed
On Windows the sbt 2 thin client exits 0 even when a command fails, and
PowerShell passes an argument without spaces unquoted, so sbt.bat split
"a;b" into separate words. --server runs sbt in-process as sbt 1 did
(which also lets chen-from-main's -Dsbt.ivy.home reach the build), and
'; ' keeps the sequence one argument on every shell.
@prabhu prabhu added enhancement New feature or request scala ai-auto labels Oct 13, 2026
@prabhu
prabhu added this pull request to the merge queue Oct 13, 2026
Merged via the queue into main with commit 94a702e Oct 13, 2026
@prabhu
prabhu deleted the feat/scala-3.10 branch October 13, 2026 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-auto enhancement New feature or request scala

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant