sbt 1.0.0 is now available

By Eugene Yokota (@eed3si9n) August 11, 2017

The Lightbend Tooling Team is happy to announce the release of sbt 1.0.0!

sbt 1 is a major milestone years in the making, if we count from 2008 when Mark Harrah released sbt. Even the previous major series, sbt 0.13.x lasted for four years since its initial release of August of 2013.

Lightbend Tooling team has been maintaining and evolving 0.13 towards sbt 1. During this time, features such as sbt new, AutoPlugin, and cached resolution were added. Hundreds of plugins were written by the community, extending the capability of sbt beyond a simple build tool.

Headline features

  • sbt 1 is based on Scala 2.12, so we can all use modern Scala in our builds! This will also help plugin and library authors, since they no longer have to support 2.10.
  • sbt 1 reintroduces Zinc 1, a faster incremental compiler that uses class-based name hashing. Since we thought the Scala incremental compiler is too important to keep it just for us, we moved Zinc 1 into a separate repository sbt/zinc, which is maintained by Lightbend and the Scala Center together.
  • sbt 1 by default uses Gigahorse HTTP client (backed by Square OkHttp) to download artifacts in parallel. We’ve also added a Library Management API, so we can potentially migrate off of Ivy in some future 1.x release.

See sbt 1.0.0 release notes for the complete list of breaking changes, features, and fixes.

Compatibility

sbt 1 adopts Semantic Versioning. We will keep binary compatibility during the 1.x series.

Since we have been evolving 0.13, conceptually sbt 1 is not too far from sbt 0.13. However, sbt 1 is neither source- nor binary-compatible with 0.13, and it might require some migration effort. Please see the migration guide for more details.

This release is identical to sbt 1.0.0-RC3.

Contributors

We would like to first thank the original author of sbt, Mark Harrah. Mark wrote sbt in 2008, and most of the fundamental aspects of sbt, such as the Scala incremental compiler, integration with Maven and Ivy dependencies, and parallel task processing, were conceived and initially implemented by Mark.

Hat tip also to our previous partners in crime Josh Suereth and Grzegorz Kossakowski as they shaped the direction of 0.13 and 1.x in fundamental ways.

In the recent months leading up to sbt 1.0.0, the Scala Center at EPFL has contributed many important fixes and features to sbt, Zinc 1, and the underlying modules. Some of the notable contributions include parallel artifact download by Jorge Vicente Cantero, improved Zinc 1 internal storage by Jorge, and new Watch Service by Martin Duhem.

A huge thank you to everyone who’s helped improve sbt and Zinc 1 by using them, reporting bugs, improving our documentation, kindly helping others on Stack Overflow, Gitter, or in person, and 318 contributors who submitted pull requests! See Credits for the whole story.

What’s next?

The work of rebooting the ecosystem on top of sbt 1 is already well underway, with many plugins available for sbt 1.x, such as Scala.js and sbt-assembly. However, the list is still incomplete, and this is an area where community participation will be crucial.

Please try sbt 1, and report any bugs on GitHub. Mention us @scala_sbt and tell us what you think about sbt 1.