Scala sbt 1.1.4 patch notes
Hi everyone. sbt 1.1.4 hotfix is released!
- Fixes triggered execution on macOS. See below for details.
- Fixes running
consoletwice messing up JLine. #3482/#4054 by @eed3si9n
updateSbtClassifiers. #4070/#3432 by @steinybot
- Fixes Java error message handling. zinc#524/zinc#525 by @retronym and @dwijnand
- Fixes the error message linking to the migration guide. #4063 by @dwijnand
- Fixes batch script so sbt runs on JDK 10 on Windows. lp#225 by @eed3si9n
- Fixes bash script so
sbt -debugchanges log level to debug. lp#226 by @eed3si9n
sbt.io.JavaMilli. io#139 by @dwijnand
-Dsbt.launcher.cp.prependJVM flag that is used for monkey patching sbt. launcher#50 by @fommil
Triggered execution on macOS
sbt has long had issues with triggered execution on macOS. Ethan Atkins has contributed a fix for this problem by merging MacOSXWatchService from his CloseWatch. Thanks, Ethan!
Running sbt with standby
One of the tricky things you come across while profiling is figuring out the process ID, while wanting to profile the beginning of the application.
For this purpose, we’ve added
sbt.launcher.standby JVM flag. Starting sbt 1.1.4, you can run:
$ sbt -J-Dsbt.launcher.standby=20s exit
Loading performance improvement
Using Flame graph (if you haven’t yet, check out Profiling JVM applications post), Jason Zaugg identified hashing code of the build file to be one of the hot paths during sbt startup. Flame graph supports
Ctrl+F to filter on method names; and when I ran it, it showed 4.5% of the time was spent in
Instead of creating an intermediate
Array[Byte] and passing it to
MessageDigest at the end, Jason suggested that we pass the arrays to
MessageDigest#update in a more procedural style. After confirming that it worked, we’ve next identified file timestamp code to be the next bottle neck using Flame graph, so that was switched to using NIO. After both changes,
Eval#evalCommon’s footprint reduced to 2.3%.
A huge thank you to everyone who’s helped improve sbt and Zinc 1 by using them, reporting bugs, improving our documentation, porting builds, porting plugins, and submitting and reviewing pull requests.
sbt 1.1.4 was brought to you by 11 contributors, according to
git shortlog -sn --no-merges v1.1.2...v1.1.4 on sbt, zinc, librarymanagement, util, io, launcher-package, and website: Eugene Yokota, Dale Wijnand, 杨博 (Yang Bo), Ethan Atkins, Sam Halliday, Aaron S. Hawley, Gabriele Petronella, Jason Steenstra-Pickens, Jason Zaugg, Julien Jean Paul Sirocchi, and aumann.
For anyone interested in helping sbt, there are many avenues you could help, depending on your interest.
- Migrate library builds to sbt 1, or update plugins.
- Report bugs when you see them.
- Send in fixes to bugs.
- Update documentation.