Hi everyone. sbt 1.1.4 hotfix is released!
console
twice messing up JLine. #3482/#4054 by @eed3si9nupdateSbtClassifiers
. #4070/#3432 by @steinybotsbt -debug
changes log level to debug. lp#226 by @eed3si9nsbt.io.JavaMilli
. io#139 by @dwijnand-Dsbt.launcher.cp.prepend
JVM flag that is used for monkey patching sbt. launcher#50 by @fommilsbt 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!
Credit also goes to Greg Methvin and Takari’s directory-watcher. #3860/#4071/io#138 by @eatkins
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
This will count down for 20s before doing anything else. launcher#51 by @eed3si9n
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 Eval#evalCommon
method.
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%.
This means that your build loads slightly faster on sbt 1.1.4 (about 0.54s faster on akka/akka, for example). #4067 by @eed3si9n
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.
If you’re interested in other ideas, come talk to us on sbt-contrib or on the brand new Lightbend Discuss.