sudori part 8: no-op compilation performance
This is a blog post on sbt 2.x development, continuing from sbt 2.x remote cache, sudori part 4, part 5 etc. I work on sbt 2.x in my own time with collaboration with the Scala Center and other volunteers, like Billy at EngFlow. In this post, I want to highlight the perf improvement work I attempted in sbt 2.0.0-RC7, which was released yesterday.
no-op performance regression
Besides jump starting the plugin ecosystem, one of the motivations for the having release candidates of sbt 2.x is to start testing them with actual builds. As they say, everybody has an operational plan until they get punched in the mouth.
sbt 2.0.0-RC7
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 2.0.0-RC7, a beta version of sbt 2.x. sbt 2.0 is a new version of sbt, based on Scala 3 constructs and Bazel-compatible cache system.
Please try it out, and report any issues you might come across. Note: sbt 2.0.0-RC7 will keep binary compatibility with 2.0.0 and 2.x.
Key changes since 2.0.0-RC6
See https://github.com/sbt/sbt/releases/tag/v2.0.0-RC7 for the full details.
sbt 1.12.0-M2
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.12.0-M2. This is the twelfth feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.
The headline features of sbt 1.12.0 are:
- Scala 3.8 REPL support
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.12.0-M2
Expecty 0.17.1
Expecty 0.17.1 is released. Expecty brings power assert (or power assertion) to Scala. It was originally implemented by Peter Niederwieser who implemented the original power assertion Spock in Groovy. It had gone dormant for a while, and I forked it in 2018, and started publishing it against modern build matrix like Scala 2.12, 2.13, 3.x, JVM, JS, and Native.
sbt 1.12.0-M1
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.12.0-M1. This is the twelfth feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.
The headline features of sbt 1.12.0 are:
- Scala 3.8 REPL support
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.12.0-M1
incremental compilation of Scala 3
In this post, I want to look into the incremental compilation of Scala 3, or the apparent problem associated with it. The incremental compilation on Scala 2.12 or 2.13 has been fairly stable, but for some reason it’s more fragile on Scala 3.x in my experience. We will investigate the cause and attempt to fix it as scala/scala3#24171.
sbt 1.11.7
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.7 patch release is available.
The headline features of sbt 1.11.7 are:
- Launcher 1.5.1 to fix sbt 0.13 support, including on setup-sbt action v1
- JDK 25 warning workaround by adding JDK flags in
sbtrunner - Backport of JDK 25 JEP-512/JEP-445 Main run
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.7. See 1.11.0 release note for the details on 1.11.x features.
sbt 2.0.0-RC6
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 2.0.0-RC6, a beta version of sbt 2.x. sbt 2.0 is a new version of sbt, based on Scala 3 constructs and Bazel-compatible cache system.
Please try it out, and report any issues you might come across. Note: sbt 2.0.0-RC6 will keep binary compatibility with 2.0.0 and 2.x.
Key changes since 2.0.0-RC5
See https://github.com/sbt/sbt/releases/tag/v2.0.0-RC6 for the full details.
sbt 1.11.6
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.6 patch release is available.
The headline features of sbt 1.11.6 are:
- Launcher 1.5.0
- Internal dependency classpath fix
- sbtn client-side run fix
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.6. See 1.11.0 release note for the details on 1.11.x features.
sbt 1.11.5
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.5 patch release is available.
The headline features of sbt 1.11.5 are:
- Scala 3.8.0 (currently nightly) support
- Scala Nightly repository support
- Central Repository publishing improvements
sbt --jvm-client- sbtn improvements
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.5. See 1.11.0 release note for the details on 1.11.x features.
Scala Days 2025 talk: sbt 2.0: go big
I went to Scala Days 2025 at EPFL this week to give a talk on sbt 2.0.
sbt 1.11.4
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.4 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.4
See 1.11.0 release note for the details on 1.11.x features.
sbt 1.11.3
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.3 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.3
See 1.11.0 release note for the details on 1.11.x features.
tree-sitter-scala 0.24.0
Hi everyone. On behalf of the tree-sitter-scala project, I am happy to announce tree-sitter-scala 0.24.0. The first two segments of the version number comes from the tree-sitter-cli that was used to generate the parser, and the last segment is our actual version number. tree-sitter-scala 0.24.0 uses tree-sitter 0.24.x.
About tree-sitter-scala
tree-sitter-scala is a Scala parser in C language, generated using Tree-sitter CLI, and conforming to the Tree-sitter API. Tree-sitter parsers are generally fast, incremental, and robust (ok with partial errors). We publish Rust binding to crates.io.
sbt 1.11.2
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.2 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.2
See 1.11.0 release note for the details on 1.11.x features.
new balance (2025.06 mixtape)
sbt 1.11.1
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.11.1 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.1
See 1.11.0 release note for the details on 1.11.x features.
sbt 1.11.0
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.11.0. This is the eleventh feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.
The headline features of sbt 1.11.0 are:
- Support for the Central Repository publishing
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.0
sbt 1.11.0-RC2
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.11.0-RC2. This is the eleventh feature release of sbt 1.x, a binary compatible release focusing on new features. sbt 1.x is released under Semantic Versioning, and the plugins are expected to work throughout the 1.x series. Please try it out, and report any issues you might come across.
The headline features of sbt 1.11.0 are:
- Support for the Central Repository publishing
Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.11.0-RC2
Eval 0.3.1
Eval 0.3.1 is released. Eval evaluates Scala 3 code. See https://eed3si9n.com/eval/ for details.
Eval 0.3.1 introduces a workaround for the Scala 3.x VirtualFile issue on Windows #19.
ifdef 0.4.1
@ifdef is a Scala compiler plugin that implements conditional compilation in Scala. ifdef 0.4.1 supports Scala JVM, JS and Native.
| Scala Version | JVM | JS (1.x) | Native (0.5.x) | sbt plugin |
|---|---|---|---|---|
| 3.x | ✅ | ✅ | ✅ | ✅ |
| 2.13.x | ✅ | ✅ | ✅ | n/a |
| 2.12.x | ✅ | ✅ | ✅ | ✅ |
Gigahorse 0.9.0
Gigahorse 0.9.0 is released. Gigahorse is an HTTP client for Scala that I started in 2016, with multiple backend support: Apache HttpClient 5.x, AsyncHttpClient 2.12.x, OkHttp 3.x, and Pekko HTTP 1.x.
Gigahorse 0.8.0
Gigahorse 0.8.0 is released. Gigahorse is an HTTP client for Scala that I started in 2016, with multiple backend support. See documentation for more details on Gigahorse itself.
sbt 1.10.11
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.10.11 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.10.11.
See 1.10.0 release note for the details on 1.10.x features.
Highlights
- Fixes compiler crashes causing the compilation to retry 10 times
sbt --client shutdownshort-circuit- Coursier retry on Windows file system limitation
sbt 2.0.0-M4
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 2.0.0-M4, a beta version of sbt 2.x. Please try it out, and report any issues you might come across. Note that sbt 2.x is released under Semantic Versioning, and the plugins will need to be published for the specific milestone version.
I work on sbt in my own time with collaboration with Adrien Piquerez and other volunteers, like Kenji Yoshida, Jerry Tan, Matthias Kurz (Play maintainer), and recently Billy at EngFlow to name a few.
leakage of time (2025.03 mixtape)
sbt 1.10.10
Hi everyone. On behalf of the sbt project, I’m happy to announce that sbt 1.10.10 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.10.10. See also sbt 1.10.9.
See 1.10.0 release note for the details on 1.10.x features.
Highlights
- Fixes compilation error causing the compilation to retry 10 times