sbt 1.0.3 hotfix

By Eugene Yokota (@eed3si9n) October 27, 2017

Hi everyone. It’s time for a sbt 1.0.x hotfix.

I would also like to announce sbt 1.0.3, which is a hotfix to sbt 1.0.x series. This is a binary compatible release for sbt 1 focusing on bug fixes. sbt 1 is released under Semantic Versioning, and the plugins are expected to work for sbt 1.x series.

Bug fixes

  • Fixes ~ recompiling in loop (when a source generator or sbt-buildinfo is present). #3501/#3634 by @dwijnand
  • Fixes undercompilation on inheritance on same source. zinc#424 by @eed3si9n
  • Fixes the compilation of package-protected objects. zinc#431 by @jvican
  • Workaround for Java returning null for getGenericParameterTypes. zinc#446 by @jvican
  • Fixes test detection regression. sbt 1.0.3 filters out nested objects/classes from the list, restoring compatibility with 0.13. #3669 by @cunei
  • Uses Scala 2.12.4 for the build definition. This includes fix for runtime reflection of empty package members under Java 9. #3587 by @eed3si9n
  • Fixes extra / in Ivy style patterns. lm#170 by @laughedelic
  • Fixes “destination file exist” error message by including the file name. lm171 by @leonardehrenfried
  • Fixes JDK 9 warning “Illegal reflective access” in library management module and Ivy. lm173 by @dwijnand
  • Fixes ScalaInstance not using allJars, which affects IntelliJ. #3561 by @jastice

Improvements

  • Adds sbt.watch.mode system property to allow switching back to old polling behaviour for watch. See below for more details.

Alternative watch mode

sbt 1.0.0 introduced a new mechanism for watching for source changes based on the NIO WatchService in Java 1.7. On some platforms (namely macOS) this has led to long delays before changes are picked up. An alternative WatchService for these platforms is planned for sbt 1.1.0 (#3527), in the meantime an option to select which watch service has been added.

The new sbt.watch.mode JVM flag has been added with the following supported values:

  • polling: (default for macOS) poll the filesystem for changes (mechanism used in sbt 0.13).
  • nio (default for other platforms): use the NIO based WatchService.

If you are experiencing long delays on a non-macOS machine then try adding -Dsbt.watch.mode=polling to your sbt options.

#3597 by @stringbean

Thanks Munich Scala User Group!

A shoutout to Munich Scala User Group for organizing Build Workshop - keep our ecosystem in shape.

Organized by Lars Hupel (@larsr_h), Justin Kaeser (@ebenwert) IntelliJ Scala plugin dev, and Muki Seiler (@muuki88) sbt-native-packager dev, a bunch of people got together at codecentric AG (@codecentric) in München and hacked on builds to upgrade to sbt 1. This is awesome:

Participation

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.0.3 was brought to you by 15 contributors, according to git shortlog -sn --no-merges v1.0.2..v1.0.3 on sbt, zinc, librarymanagement, util, io, and website: Eugene Yokota, Dale Wijnand, Michael Stringer, Jorge Vicente Cantero (jvican), Alexey Alekhin, Antonio Cunei, Andrey Artemov, Jeffrey Olchovy, Kenji Yoshida (xuwei-k), Dominik Winter, Long Jinwei, Arnout Engelen, Justin Kaeser, Leonard Ehrenfried, Sakib Hadžiavdić. Thank you!

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.

If you’re interested in other ideas, come talk to us on sbt-contrib.