The state of sbt 0.13, sbt server,
and sbt 1.0Eugene Yokota (@eed3si9n) Dale Wijnand (@dwijnand)
February, 2017
• Scala hobbyist since 2010
• “learning Scalaz” / “herding Cats”
• an organizer of ScalaMatsuri
• scalaxb (XML data binding)
• treehugger.scala
• sbt-assembly, sbt-buildinfo, etc
• Lightbend/Typesafe since 2014
• current tech lead of sbt & Tooling team
who are these guysEugene (@eed3si9n)
Dale (@dwijnand)
• sbt core dev since 2015
• :_* no longer needed for settings(Seq(…))
• -= & --= for settings & tasks
• Lightbend Tooling team since 2016
• SIP-27 - Trailing Commas
• single JVM process • implemented as a command, sort of • JSON API to drive sbt from network
what is sbt server?
event logging• A way to log object (semantic logging) • Logs are then relayed as JSON • Decoupled from screens
sbt 0.13.6 (September 2014)• Name hashing is enabled by default • HTTPS by default • Eviction warnings • Unresolved dependency error tree
sbt 0.13.8 (March 2015)• Cross-version support for Scala sources • Sequential tasks • Seq[Setting[_]] can be used directly
in .settings(...) • Maven resolver (experimental)
sbt 0.13.11 (February 2016)• Configurable compiler bridge • Dotty support • Inter-project dependency tracking
sbt 0.13.13 (October 2016)• sbt new command • Synthetic subprojects • Deprecate old sbt 0.12 DSL
(<<=,<+=,<++=)
sbt 0.13 lesson learned• Binary compatibility is great for plugins • Binary compatibility is hard • Everything changes
removed feature• (Non-auto) sbt.Plugin • project/build.scala • 0.12 DSL operators (<<=, <+=, <++=) • Scala 2.9.x support
Zinc API• Unified API to drive Scala compiler • Lightbend, Scala Center, VirtusLab, Twitter
engineers
Contraband• http://www.scala-sbt.org/contraband/ • GraphQL dialect to describe API • Generates pseudo-case class that’s evolvable while
keeping binary compatibility. • Generates sjson-new JSON codecs.
package com.example @target(Scala)
## Character represents the characters in Star Wars. type Character { name: String! appearsIn: [com.example.Episode]! }
impact to build users• Some migration required • Faster incremental compilation • Hopefully improved tooling in the long-term