'Last mile towards sbt 2'
A quick status report on where we are at
www.scala-lang.org/blog/2026/04... #Scala
Posts by sbt
released sbt 2.0.0-RC12!
released sbt 2.0.0-RC11 and 1.12.9!
cross published sbt-nocomma 0.1.3 to sbt 1.x and 2.x, using sbt 2.0.0-R10
sbt-nocomma is a stupid plugin that I made in 2018 that implements comma inference in build.sbt
github.com/sbt/sbt-noco...
eed3si9n.com/removing-com... #Scala
cross published sbt-java-formatter 0.11.0 to sbt 1.x and 2.x
sbt-java-formatter, originally written by Björn Antonsson, lets you format your Java code
github.com/sbt/sbt-java... #Scala
'Fixing a Command Injection Vulnerability in sbt'
We discovered a command injection vulnerability in how sbt resolves source dependencies on Windows. The issue has been assigned CVE-2026-32948, rated Moderate (CVSS 6.7), and is now fixed.
www.scala-lang.org/blog/2026/03... #Scala
cross published sbt-native-image 0.4.0 to sbt 1.x and 2.x
sbt-native-image, originally written by @geirsson.com, lets you build GraalVM native images from your Scala code
github.com/scalameta/sb... #Scala
sbt 2.0.0-RC10 is released
sbt 1.12.7 is released with a CVE fix!
sbt 1.12.6 is released
'Migrating sbt plugins to sbt 2 with sbt2-compat plugin'
introducing sbt2-compat plugin by Anatolii Kmetiuk at Scala Center
github.com/sbt/sbt2-com...
scala-lang.org/blog/2026/03... #Scala
released sbt 1.12.5!
sbt 1.12.4 is out!
- client-side console (forking Scala REPL from native sbtn client)
- `rootProject` macro
- experimental dependency lock
- experimental Ivyless publishing
- and a long list of contributed bug fixes
eed3si9n.com/sbt-2.0.0-RC9 (2/n)
sbt 2.0.0-RC9 is out!
sbt 1.12.3 is out
wrote 'sbt 1.12.1 and unmoored scala-reflect / scala-compiler issue'
contributors.scala-lang.org/t/sbt-1-12-1... #scala
sbt 1.12.2 is released!
'sbt 2 production-ready roadmap'
contributors.scala-lang.org/t/sbt-2-prod...
happy to announce that along with Scala library, compiler, sbt 2.0 project has been awarded Sovereign Tech Fund (German gov grant), recognized as a critical digital infrastructure, or an xkcd open source picture
scala-lang.org/blog/2026/01... #Scala
sbt 1.12.1 is released!
wrote a blog post - 'sbt and the miners of the wild west'
eed3si9n.com/sbt-and-the-... #Scala
'RFC: sbt 2.0 on JDK 17'
On behalf of the sbt project, I would like to solicit your feedback on the minimum JDK version required for sbt 2.0
users.scala-lang.org/t/rfc-sbt-2-... #Scala
Scala Days talk on sbt 2.0
screenshot of VS Code running Metals extension, demonstrating code completion of Address case class.
screenshot of IntelliJ with Scala plugin, demonstrating code completion of Address case class.
FYI - using either the latest IntelliJ 2025.3 or the latest Metals 1.6.4, sbt 2.x build can be imported to the respective IDE
www.scala-sbt.org/2.x/docs/en/...
www.scala-sbt.org/2.x/docs/en/...
www.scala-sbt.org/2.x/docs/en/... #Scala
sbt 2.0.0-RC8 is released!
sbt 1.12.0 is released!
sbt 1.12.0-RC1 is out
a flamegraph of no-op compilation run using sbt 2.0.0-RC-6. it shows a big column in the middle, indicating that most of the time is spent doing one thing, which in this case is running sha256Hash function.
🦃 during sbt 2.0.0-RC7 development, I attempted some perf improvement to fix the no-op compilation perf regression that was reported. since RC7 is out, I can finally post 'sudori part 8: no-op compilation performance' (didn't write this on Thanksgiving)
eed3si9n.com/sudori-part8... #Scala
a screen capture from the 'sbt 2.0: go big' talk. Vision sbt 2.0 An idea of the ultimate build tool 1. Simplify build.sbt DSL 2. Use Scala 3 constructs 3. Caching 4. sbtn by default 5. Continuity
a screen capture from the 'sbt 2.0: go big' talk. sbt 2.x: test results will be cached on CI
caching is IO-effect-hard At least as hard as the IO problem someTask := { val conv = fileConverter.value val out: java.nio.file.Path = createFile(...) conv.toVirtualFile(out): xsbti.HashedVirtualFileRef } This will just memorize the file path and hash but won't materialize the file on disk someTask := { val conv = fileConverter.value val out: java.nio.file.Path = createFile(...) val vf: xsbti.VirtualFile = conv.toVirtualFile(out) Def.declareOutput(vf) vf } Def.declareOutput(vf) will materialize the file on cache hit
a screen capture from 'sbt 2.0: go big' talk the section slide for sbtn + sbt server It shows a seemingly large, but abstract concrete structure with forest area in the background. it's the base part of The Open Hand Monument in Chandigarh by Le Corbusier.
from #Scala Days 2025 edition, 'sbt 2.0: go big'
www.youtube.com/watch?v=GM2y... (video)
www.slideshare.net/slideshow/sb...