cross build anything with Bazel
Bazel generally prefers monoversioning, in which all targets in the monorepo uses the same version given any library (JUnit or Pandas). Monoversioning greatly reduces the version conflict concerns within the monorepo, and in return enables better code reuse. In practice, monoversioning has a drawback of tying everyone at the hip. If service A, B, C, D, etc are all using Big Framework 1.1, it becomes costly to migrate all to Big Framework 1.2 if there might be a regression. Years would go by, and Big Framework 2.0 might come out, and again, it would be too risky.
Jar Jar Abrams 1.8.2 and sbt-assembly 2.1.1
Jar jar Abrams 1.8.2 and sbt-assembly 2.1.1 are released.
Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.
scalaxb 1.9.1
Released scalaxb 1.9.1 with Scala 3 support contributed by @fthomas.
sbt 1.8.2
Hi everyone. On behalf of the sbt project, I’m happy to announce sbt 1.8.2 patch release fixing a few regressions found in sbt 1.8.1. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.8.2
See 1.8.0 release note for the details on 1.8.x features.
Highlights
sbt 1.8.1
Happy new year! On behalf of the sbt project, I’m happy to announce sbt 1.8.1 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.8.1
See 1.8.0 release note for the details on 1.8.x features.
Highlights
🎄 support Scala Center 🎄
The economic cycle seems to come and go like a slow tide, and sometimes the tech companies also get caught in the middle. Fortunately, Scala seems to be used by some of the leading companies, and although I’ve started using Scala and have been contributing the community mostly for the pure joy of it, time and time again when I was in a bind the Scala community has helped me back by giving me encouragements and career opportunities. I resigned Twitter about a month ago, but I will be more than ok :)
fast Scala 3 parsing with tree-sitter
requiem for effective engineering (2022.12 mixtape)
- Spotify: https://open.spotify.com/playlist/1Rrhziva29xypzeZM80SKc?si=14d809146ae448d0
- YouTube: https://www.youtube.com/playlist?list=PLSUh6oJ5ZotXfSaWywi-bZqNKAsfApbX1
4h9m
2 years at Twitter
I was a Staff Engineer at Twitter’s Build/Bazel Migration team. After two incredible years, November 17 was my last day (I took the voluntary separation offer and resigned, not that it matters). Twitter has been a special place to work for, for its culture of excellence, diversity, and outpouring of care for all the people that made Flock the Flock. I am grateful that I got the opportunity to experience that firsthand, and be part of it.

Here’s a quick retrospective on my last two years. Info available here are based on publicly available talks and data. Just from our team 10+ members left Twitter after the buyout, so I’ve sprinkled this post with links to their LinkedIn profiles both current and former.
sbt 1.8.0
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.8.0. This is the eighth 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.
Highlights
- Updates Coursier to 2.1.0-RC1 to address CVE-2022-37866
- Updates Ivy fork to 2.3.0-sbt-a8f9eb5bf09d0539ea3658a2c2d4e09755b5133e to address CVE-2022-37866
- Updates scala-xml to 2.x
sbt 1.8.0-RC1
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.8.0-RC1. This is the eighth 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.
Highlights
sbt 1.8.0 is a small release focused on upgrading scala-xml to 2.x. In theory this breaks the binary compatibility in the plugin ecosystem, but in practice there’s already a mixture of both 1.x and 2.x.
If you encounter a conflict in plugins, try putting the following in project/plugins.sbt:
ThisBuild / libraryDependencySchemes += "org.scala-lang.modules" %% "scala-xml" % VersionScheme.Always
sbt 1.7.3
I’m happy to announce sbt 1.7.3 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.7.3
See 1.7.0 release note for the details on 1.7.x features.
Highlights
- Updates underlying Coursier from 2.1.0-M2 to 2.1.0-M7-18-g67daad6a9 (lm-coursier-shaded 2.0.12) by @eed3si9n
sbt 1.7.2
I’m happy to announce sbt 1.7.2 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.7.2
See 1.7.0 release note for the details on 1.7.x features.
Highlights
- Fixes invalidation of incremental
testQuicktask #6903 by @gontard - Updates
sbt newby default to use Giter8 0.15.0 - Updates launcher to support Scala 3 apps #7035 by @eed3si9n
- Adds
diagnosticCodeanddiagnosticRelatedInforamation(sic) toInterfaceUtil.problem(...)#7006 by @ckipp01 - Forwards
diagnosticCodeto BSP #6998 by @ckipp01
2022.09 mixtape
- Spotify: https://open.spotify.com/playlist/0C5LhI2qb9bh1eApj4Jxq4?si=02ab0478b8c642eb
- YouTube: https://www.youtube.com/playlist?list=PLSUh6oJ5ZotWeHtZ6AJT-ZqJtbmR877vl
4h2m
sbt 1.7.1
I’m happy to announce sbt 1.7.1 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.7.1
See 1.7.0 release note for the details on 1.7.x features.
Highlights
- Fixes Java incremental compilation, specifically parsing of annotations in class files of @SethTisue in zinc#1111
sbt 1.7.0
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.7.0. This is the seventh 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.
How to upgrade
Download the official sbt runner from cs setup, SDKMAN, or download from https://github.com/sbt/sbt/releases/tag/v1.7.0.
The sbt version used for your build is upgraded by putting the following in project/build.properties:
sbt.version=1.7.0
This mechanism allows that sbt 1.7.0 is used only for the builds that you want.
scopt 4.1.0
scopt 4.1.0 is released. To try new scopt 4.1.0:
libraryDependencies += "com.github.scopt" %% "scopt" % "4.1.0"
scopt 4.1.0 is cross published to the following build matrix:
| Scala Version | JVM | JS (1.x) | JS (0.6.x) | Native (0.4.x) |
|---|---|---|---|---|
| 3.x | ✅ | ✅ | n/a | ✅ |
| 2.13.x | ✅ | ✅ | ✅ | ✅ |
| 2.12.x | ✅ | ✅ | ✅ | ✅ |
| 2.11.x | ✅ | ✅ | ✅ | ✅ |
scopt is a little command line options parsing library. See https://eed3si9n.com/scopt4 or readme for the details on how to use scopt.
2022.06 mixtape
- Spotify: https://open.spotify.com/playlist/1k4KYcV3dQO2BbGFPc4JNP?si=b94ba11e72b2420e
- YouTube: https://www.youtube.com/playlist?list=PLSUh6oJ5ZotWwWDuFf_ZvzjnD0XGEloER
3h53m
Eval 0.1.0
I released Eval 0.1.0. Eval evaluates Scala 3 code. It’s a Scala 3 port of Eval class used in sbt.
package example
import com.eed3si9n.eval.Eval
import com.eed3si9n.eval.EvalReporter
import java.nio.file.Paths
@main def main(): Unit =
val eval = Eval(
backingDir = Paths.get("/tmp/classes"),
mkReporter = () => EvalReporter.store
)
val result = eval.evalInfer("2")
println(result.tpe)
println(result.getValue(this.getClass.getClassLoader))
The above prints:
Int
2
house problems (2022.03 mixtape)
Jar Jar Abrams 1.8.1 and sbt-assembly 1.2.0
Jar Jar Abrams 1.8.1 and sbt-assembly 1.2.0 are released.
Jar Jar Abrams is an experimental extension to Jar Jar Links, intended to shade Scala libraries.
simplifying sbt with common settings
sbt is simple, in a sense that it has a few concepts like settings and tasks, and it achieves a wide variety of things. An idea popped into my head today that could simplify sbt further. I don’t have an implementation on this yet.
sbt 1.6.2
I’m happy to announce sbt 1.6.2 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.6.2
See 1.6.0 release note for the details on 1.6.x features.
Highlights
granularity of testing
In the context of sbt, Bazel, and likely many other build tools, the term test could encompass various levels, and it’s useful to disamgibuate this, especially when we want to configure pre- and post-hooks and parallel execution. In other words, what do we mean when we say “test”?
There are four levels to test:
- test command
- test modules
- test class
- test method/expression
test as commandline interface
The top-most level is the test command that the build tools provide to the users.
sbt 1.6.1
I’m happy to announce sbt 1.6.1 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.6.1
See 1.6.0 release note for the details on 1.6.x features.
Highlights
sbt 1.6.0
Hi everyone. On behalf of the sbt project, I am happy to announce sbt 1.6.0. This is the sixth 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.6.0 are:
- Improved JDK 17 support
- BSP improvements
- Zinc improvements
- Remote caching improvements
- Tab completion of global keys
sbt 1.5.8
I’m happy to announce sbt 1.5.8 patch release is available. Full release note is here - https://github.com/sbt/sbt/releases/tag/v1.5.8