Releases: sbt/sbt
1.0.3
This is a hotfix release for sbt 1.0.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
nullforgetGenericParameterTypes. 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
ScalaInstancenot usingallJars, which affects IntelliJ. #3561 by @jastice
Improvements
- Adds
sbt.watch.modesystem 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 basedWatchService.
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
Contributors
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.
This release 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!
1.1.0-M1
1.0.2
This is a hotfix release for sbt 1.0.x series.
Bug fixes
- Fixes terminal echo issue. #3507 by @kczulko
- Fixes
delivertask, and addsmakeIvyXmlas a more sensibly named task. #3487 by @cunei - Replaces the deprecated use of
OkUrlFactory, and fixes connection leaks. lm#164 by @dpratt - Refixes false positive in DSL checker for setting keys. #3513 by @dwijnand
- Fixes
runandbgRunnot picking up changes to directories in the classpath. #3517 by @dwijnand - Fixes
++so it won't change the value ofcrossScalaVersion. #3495/#3526 by @dwijnand - Fixes sbt server missing some messages. #3523 by @guillaumebort
- Refixes
consoleProject. zinc#386 by @dwijnand - Adds JVM flag
sbt.gigahorseto enable/disable the internal use of Gigahorse to workaround NPE inJavaNetAuthenticatorwhen used in conjunction withrepositoriesoverride. lm#167 by @cunei - Adds JVM flag
sbt.server.autostartto enable/disable the automatic starting of sbt server with the sbt shell. This also adds newstartServercommand to manually start the server. by @eed3si9n
Internal
- Fixes unused import warnings. #3533 by @razvan-panda
Contributors
A huge thank you to everyone who's helped improve sbt and Zinc 1 by using them, reporting bugs, improving our documentation, porting plugins, and submitting and reviewing pull requests.
This release was brought to you by 19 contributors, according to git shortlog -sn --no-merges v1.0.1..v1.0.2 on sbt, zinc, librarymanagement, and website: Dale Wijnand, Eugene Yokota, Kenji Yoshida (xuwei-k), Antonio Cunei, David Pratt, Karol Cz (kczulko), Amanj Sherwany, Emanuele Blanco, Eric Peters, Guillaume Bort, James Roper, Joost de Vries, Marko Elezovic, Martynas Mickevičius, Michael Stringer, Răzvan Flavius Panda, Peter Vlugter, Philippus Baalman, and Wiesław Popielarski. Thank you!
1.0.1
This is a hotfix release for sbt 1.0.x series.
Improvements
- Various improves around watch source feature. See below.
Bug fixes
- Fixes command support for cross building
+command. The+added to sbt 1.0 traveres over the subprojects, respectingcrossScalaVersions; however, it no longer accepted commands as arguments. This brings back the support for it. #3446 by @jroper - Fixes
addSbtPluginto use the correct version of sbt during cross building. #3442 by @dwijnand - Fixes
run in Compiletask not includingRuntimeconfiguration, by reimplementingrunin terms ofbgRun. #3477 by @eed3si9n - Shows
actualas a potential option ofinspect#3335 by @Duhemm - Includes base directory to watched sources. #3439 by @Duhemm
- Adds an attempt to workaround intermittent
NullPointerExceptionarround logging. util#121 by @eed3si9n - Reverts a bad forward porting. #3481 by @eed3si9n
WatchSource
The watch source feature went through a major change from sbt 0.13 to sbt 1.0 using NIO; however, it did not have clear migration path, so we are rectifying that in sbt 1.0.1.
First, sbt.WatchSource is a new alias for sbt.internal.io.Source. Hopefully this is easy enough to remember because the key is named watchSources. Next, def apply(base: File) and def apply(base: File, includeFilter: FileFilter, excludeFilter: FileFilter) constructors were added to the companion object of sbt.WatchSource.
For backward compatiblity, sbt 1.0.1 adds += support (Append instance) from File to Seq[WatchSource].
So, if you have a directory you want to watch:
watchSources += WatchSource(sourceDirectory.value)If you have a list of files:
watchSources ++= (sourceDirectory.value ** "*.scala").get1.0.0
Features, fixes, changes with compatibility implications
See [Migrating from sbt 0.13.x][Migrating-from-sbt-013x] also.
- sbt 1.0 uses Scala 2.12 for build definitions and plugins. This also requires JDK 8.
- Many of the case classes are replaced with pseudo case classes generated using Contraband. Migrate
.copy(foo = xxx)towithFoo(xxx).
For example,UpdateConfiguration,RetrieveConfiguration,PublishConfigurationare refactored to use builder pattern. - Zinc 1 drops support for Scala 2.9 and earlier. Scala 2.10 must use 2.10.2 and above. Scala 2.11 must use 2.11.2 and above. (latest patch releases are recommended)
config("xyz")must be directly assigned to a capitalizedval, likeval Xyz = config("xyz"). This captures the lhs identifier into the configuration so we can use it from the shell later.- Changes
publishToandotherResolversfrom SettingKeys to TaskKeys. [#2059][2059]/[#2662][2662] by [@dwijnand][@dwijnand] Path.relativizeFile(baseFile, file)is renamed toIO.relativizeFile(baseFile, file).PathFinder's.***method is renamed to.allPathsmethod.PathFinder.x_!(mapper)is moved todef paironPathFinder.- A number of the methods on
sbt.Path(such asrelativeToandrebaseandflat) are now no longer in the
default namespace by virtue of being mixed into the sbt package object. Usesbt.io.Pathto access them
again. - sbt 1.0 renames
Globalas scope component toZeroto disambiguate fromGlobalScope. [@eed3si9n][@eed3si9n] - sbt 1.0 uses
ConfigRefin places whereStringwas used to reference configuration, such asupdate.value.configuration(...). Pass inConfiguration, which implicitly converts toConfigRef. - Changes
sourceArtifactTypesanddocArtifactTypesfromSet[String]toSeq[String]settings. - Renames early command feature from
--<command>toearly(<command>). - Drops sbt 0.12 style hyphen-separated key names (use
publishLocalinstead ofpublish-local). - Log options
-error,-warn,-info,-debugare added as shorthand for"early(error)"etc. sbt.Processandsbt.ProcessExtraare dropped. Usescala.sys.processinstead.incOptions.value.withNameHashing(...)option is removed because name hashing is always on.TestResult.Valueis now calledTestResult.- The scripted plugin is cross-versioned now, so you must use
%%when depending on it.
Dropped dreprecations:
- sbt 0.12 style
Buildtrait that was deprecated in sbt 0.13.12, is removed. Please migrate to build.sbt. Auto plugins andBuildtrait do not work well together, and its feature is now largely subsumed by multi-project build.sbt. - sbt 0.12 style
Project(...)constructor is restricted down to two parameters. This is becausesettingsparameter does not work well with Auto Plugins. Useprojectinstead. - sbt 0.12 style key dependency operators
<<=,<+=,<++=are removed. Please migrate to :=, +=, and ++=. These operators have been sources of confusion for many users, and have long been removed from 0.13 docs, and have been formally deprecated since sbt 0.13.13. - Non-auto
sbt.Plugintrait is dropped. Please migrate to AutoPlugin. Auto plugins are easier to configure, and work better with each other. - Removes the
settingsSetsmethod fromProject(along withadd/setSbtFiles). - Drops deprecated
InputTaskapplymethod andinputTaskDSL method. UseDef.inputTaskandDef.spaceDelimited().parsed. - Drops deprecated
ProjectReferenceimplicit lifts. UseRootProject(<uri>),RootProject(<file>)orLocalProject(<string>). - Drops deprecated
seq(..)DSL method. UseSeqor pass in the settings without wrapping. - Drops deprecated
File/Seq[File]setting enrichments. Use.valueandDef.setting. - Drops deprecated
SubProcessapplyoverload. UseSubProcess(ForkOptions(runJVMOptions = ..)). - Drops
toError(opt: Option[String]): Unit(equivalent toopt foreach sys.error); if used to wrap
ScalaRun#runthen the replacement isscalaRun.run(...).failed foreach (sys error _.getMessage)
Features
- New incremental compiler called Zinc 1. Details below.
- The interactive shell adds network API. Details below.
- Library management API and parallel artifact download. See below.
- sbt 1.0's logging supports event logging. See below.
- Scala Center contributed static validation of
build.sbt. See below - Ports sbt-cross-building's
^and^^commands for plugin cross building. See below.
Fixes
- Fixes test content log not showing up. [#3198][3198]/[util#80][util80] by [@eed3si9n][@eed3si9n]
- Fixes confusing log about "Unable to parse". [lm#98][lm98] by [@jvican][@jvican]
- Fixes
consoletask. [zinc#295][zinc295] by [@dwijnand][@dwijnand] - Fixes spurious recompilations when unrelated constructor changes. [zinc#288][zinc288] by [@smarter][@smarter]
- Fixes restligeist macro for old operators. [#3218][3218] by [@eed3si9n][@eed3si9n]
- Fixes task caching of
updatetask. [#3233][3233] by [@eed3si9n][@eed3si9n] - Fixes ncurses-JLine issue by updating to JLine 2.14.4. [util#81][util81] by [@Rogach][@Rogach]
Improvements
- Scala Center contributed a Java-friendly Zinc API. This was a overhaul of the Zinc internal API for a good Scala integration with other build tools. [zinc#304][zinc304] by [@jvican][@jvican]
- Scala Center contributed a binary format for Zinc's internal storage. See below
- The startup log level is dropped to
-errorin script mode usingscalas. [#840][840] by [@eed3si9n][@eed3si9n] - Replace cross building support with sbt-doge. This allows builds with projects that have multiple different combinations of cross scala versions to be cross built correctly. The behaviour of ++ is changed so that it only updates the Scala version of projects that support that Scala version, but the Scala version can be post fixed with ! to force it to change for all projects. A -v argument has been added that prints verbose information about which projects are having their settings changed along with their cross scala versions. [#2613][2613] by [@jroper][@jroper]
ivyLoggingLevelis dropped toUpdateLogging.Quietwhen CI environment is detected. [@eed3si9n][@eed3si9n]- Add logging of the name of the different
build.sbt(matching*.sbt) files used. [#1911][1911] by [@valydia][@valydia] - Add the ability to call
aggregatefor the current project inside a build sbt file. By [@xuwei-k][@xuwei-k] - Add new global setting
asciiGraphWidththat controls the maximum width of the ASCII graphs printed by commands likeinspect tree. Default value corresponds to the previously hardcoded value of 40 characters. By [@RomanIakovlev][@RomanIakovlev]. - Revamped documentation for Scopes, and added Scope Delegation. [@eed3si9n][@eed3si9n]
- Adds support for cross-versioned exclusions. [#1518][1518]/[lm#88][lm88] by [@jvican][@jvican]
- Adds new offline mode to the Ivy-based library management. [lm#92][lm92] by [@jvican][@jvican]
- A number of features related to dependency locking. See below.
- Improved eviction warning presentation. See below.
- A better main class detection. [zinc#287][zinc287] by [@smarter][@smarter]
- For faster startup, sbt will use Java refection to discover
autoImport. [#3115][3115] by [@jvican][@jvican] - For faster startup, reuse the same global instance for parsing. [#3115][3115] by [@jvican][@jvican]
- Adds
InteractionServicefrom sbt-core-next to keep compatibility with sbt 0.13. [#3182][3182] by [@eed3si9n][@eed3si9n] - Adds new
WatchServicethat abstractsPollingWatchServiceand Java NIO. [io#47][io47] by [@Duhemm][@Duhemm] on behalf of The Scala Center. - Adds variants of
IO.copyFileandIO.copyDirectorythat acceptsbt.io.CopyOptions(). See below for details. Path.directoryandPath.contentOfare donated from sbt-native-packager [io#38][io38] by [@muuki88][@muuki88]- ApiDiff feature used to debug Zinc uses Scala implementation borrowed from Dotty. [zinc#346][zinc346] by [@Krever][@Krever]
- In Zinc internal, make ExtractAPI use perRunCaches. [zinc#347][zinc347] by [@gheine][@gheine]
Internals
- Adopted Scalafmt for formatting the source code using neo-scalafmt.
- Scala Center contributed a redesign of the scripted test framework that has batch mode execution. Scripted now reuses the same sbt instance to run sbt tests, which reduces the CI build times by 50% [#3151][3151] by [@jvican][@jvican]
- sbt 1.0.0-M6 is built using sbt 1.0.0-M5. [#3184][3184] by [@dwijnand][@dwijnand]
Details of major changes
Zinc 1: Class-based name hashing
A major improvement brought into Zinc 1.0 by Grzegorz Kossakowski (commissioned by Lightbend) is class-based name hashing, which will speed up the incremental compilation of Scala in large projects.
Zinc 1.0's name hashing tracks your code dependendencies at the class level, instead of at the source file level. The GitHub issue sbt/sbt#1104 lists some comparisons of adding a method to an existing class in some projects:
ScalaTest AndHaveWord class: Before 49s, After 4s (12x)
Specs2 OptionResultMatcher class: Before 48s, After 1s (48x)
scala/scala Platform class: Before 59s, After 15s (3.9x)
scala/scala MatchCodeGen class: Before 48s, After 17s (2.8x)
This depends on some factors such as how your classes are organized, but you can see 3x ~ 40x improvements. The reason for the speedup is because it compiles fewer source files than before by untangling the classes from source files. In the example adding a method to scala/scala's ...
1.0.0-RC3
See [sbt 1.0 roadmap and beta-1][sbt-1-0-roadmap] for scheduled timeline.
sbt 1.0.0-RC3
This is the RC-3 release of sbt 1.0.
Features, fixes, changes with compatibility implications
- Many of the case classes are replaced with pseudo case classes generated using Contraband. Migrate
.copy(foo = xxx)towithFoo(xxx). - sbt 1.0 uses Scala 2.12 for build definitions and plugins. This also requires JDK 8.
- Non-auto
sbt.Plugintrait is dropped. Please migrate to AutoPlugin. Auto plugins are easier to configure, and work better with each other. - sbt 0.12 style
Buildtrait that was deprecated in sbt 0.13.12, is removed. Please migrate to build.sbt. Auto plugins andBuildtrait do not work well together, and its feature is now largely subsumed by multi-project build.sbt. - sbt 0.12 style
Project(...)constructor is restricted down to two parameters. This is becausesettingsparameter does not work well with Auto Plugins. Useprojectinstead. - sbt 0.12 style key dependency operators
<<=,<+=,<++=are removed. Please migrate to :=, +=, and ++=. These operators have been sources of confusion for many users, and have long been removed from 0.13 docs, and have been formally deprecated since sbt 0.13.13. - sbt 0.12 style tuple enrichement DSL, which was deprecated in sbt 0.13.13, is opt-in under
sbt.TupleSyntax. [#2762][2762]/[#3291][3291] by [@dwijnand][@dwijnand] - Zinc 1 drops support for Scala 2.9 and earlier. Scala 2.10 must use 2.10.2 and above. Scala 2.11 must use 2.11.2 and above. (latest patch releases are recommended)
config("tooling")must be directly assigned to a capitalizedval, likeval Tooling = config("tooling"). This captures the lhs identifier into the configuration so we can use it from the shell later.- Changes
publishToandotherResolversfrom SettingKeys to TaskKeys. [#2059][2059]/[#2662][2662] by [@dwijnand][@dwijnand] Path.relativizeFile(baseFile, file)is renamed toIO.relativizeFile(baseFile, file).PathFinder's.***method is renamed to.allPathsmethod.PathFinder.x_!(mapper)is moved todef paironPathFinder.- Drops sbt 0.12 style hyphen-separated key names (use
publishLocalinstead ofpublish-local). - Renames early command feature from
--<command>toearly(<command>). - Log options
-error,-warn,-info,-debugare added as shorthand for"early(error)"etc. sbt.Processandsbt.ProcessExtraare dropped. Usescala.sys.processinstead.incOptions.value.withNameHashing(...)option is removed because name hashing is always on.TestResult.Valueis now calledTestResult.- The scripted plugin is cross-versioned now, so you must use
%%when depending on it - Removes the
settingsSetsmethod fromProject(along withadd/setSbtFiles). - Drops deprecated
InputTaskapplymethod andinputTaskDSL method. UseDef.inputTaskandDef.spaceDelimited().parsed. - Drops deprecated
ProjectReferenceimplicit lifts. UseRootProject(<uri>),RootProject(<file>)orLocalProject(<string>). - Drops deprecated
seq(..)DSL method. UseSeqor pass in the settings without wrapping. - Drops deprecated
File/Seq[File]setting enrichments. Use.valueandDef.setting. - Drops deprecated
SubProcessapplyoverload. UseSubProcess(ForkOptions(runJVMOptions = ..)). - Drops
toError(opt: Option[String]): Unit(equivalent toopt foreach sys.error); if used to wrap
ScalaRun#runthen the replacement isscalaRun.run(...).failed foreach (sys error _.getMessage) - A number of the methods on
sbt.Path(such asrelativeToandrebaseandflat) are now no longer in the
default namespace by virtue of being mixed into the sbt package object. Usesbt.io.Pathto access them
again. - sbt 1.0 renames
Globalas scope component toZeroto disambiguate fromGlobalScope. [@eed3si9n][@eed3si9n] - sbt 1.0 uses
ConfigRefin places whereStringwas used to reference configuration, such asupdate.value.configuration(...). Pass inConfiguration, which implicitly converts toConfigRef. - Changes
sourceArtifactTypesanddocArtifactTypesfromSet[String]toSeq[String]settings. Command.process(..)is removed. Use"cmd" :: state.
The Scala Center is working with Lightbend to provide [an automatic migration tool][sbt-migration-rewrites].
Features
- New incremental compiler called Zinc 1. Details below.
- The interactive shell is adds network API. Details below.
- Library management API and parallel artifact download. See below.
- sbt 1.0's logging supports event logging. See below.
- Scala Center contributed static validation of
build.sbt. See below - Ports sbt-cross-building's
^and^^commands for plugin cross building. See below.
Fixes
- Fixes test content log not showing up. [#3198][3198]/[util#80][util80] by [@eed3si9n][@eed3si9n]
- Fixes confusing log about "Unable to parse". [lm#98][lm98] by [@jvican][@jvican]
- Fixes
consoletask. [zinc#295][zinc295] by [@dwijnand][@dwijnand] - Fixes spurious recompilations when unrelated constructor changes. [zinc#288][zinc288] by [@smarter][@smarter]
- Fixes restligeist macro for old operators. [#3218][3218] by [@eed3si9n][@eed3si9n]
- Fixes task caching of
updatetask. [#3233][3233] by [@eed3si9n][@eed3si9n] - Fixes ncurses-JLine issue by updating to JLine 2.14.4. [util#81][util81] by [@Rogach][@Rogach]
Improvements
- Scala Center contributed a Java-friendly Zinc API. This was a overhaul of the Zinc internal API for a good Scala integration with other build tools. [zinc#304][zinc304] by [@jvican][@jvican]
- Scala Center contributed a binary format for Zinc's internal storage. See below
- The startup log level is dropped to
-errorin script mode usingscalas. [#840][840] by [@eed3si9n][@eed3si9n] - Replace cross building support with sbt-doge. This allows builds with projects that have multiple different combinations of cross scala versions to be cross built correctly. The behaviour of ++ is changed so that it only updates the Scala version of projects that support that Scala version, but the Scala version can be post fixed with ! to force it to change for all projects. A -v argument has been added that prints verbose information about which projects are having their settings changed along with their cross scala versions. [#2613][2613] by [@jroper][@jroper]
ivyLoggingLevelis dropped toUpdateLogging.Quietwhen CI environment is detected. [@eed3si9n][@eed3si9n]- Add logging of the name of the different
build.sbt(matching*.sbt) files used. [#1911][1911] by [@valydia][@valydia] - Add the ability to call
aggregatefor the current project inside a build sbt file. By [@xuwei-k][@xuwei-k] - Add new global setting
asciiGraphWidththat controls the maximum width of the ASCII graphs printed by commands likeinspect tree. Default value corresponds to the previously hardcoded value of 40 characters. By [@RomanIakovlev][@RomanIakovlev]. - Revamped documentation for Scopes, and added Scope Delegation. [@eed3si9n][@eed3si9n]
- Adds support for cross-versioned exclusions. [#1518][1518]/[lm#88][lm88] by [@jvican][@jvican]
- Adds new offline mode to the Ivy-based library management. [lm#92][lm92] by [@jvican][@jvican]
- A number of features related to dependency locking. See below.
- Improved eviction warning presentation. See below.
- A better main class detection. [zinc#287][zinc287] by [@smarter][@smarter]
- For faster startup, sbt will use Java refection to discover
autoImport. [#3115][3115] by [@jvican][@jvican] - For faster startup, reuse the same global instance for parsing. [#3115][3115] by [@jvican][@jvican]
- Adds
InteractionServicefrom sbt-core-next to keep compatibility with sbt 0.13. [#3182][3182] by [@eed3si9n][@eed3si9n] - Adds new
WatchServicethat abstractsPollingWatchServiceand Java NIO. [io#47][io47] by [@Duhemm][@Duhemm] on behalf of The Scala Center. - Adds variants of
IO.copyFileandIO.copyDirectorythat acceptsbt.io.CopyOptions(). See below for details. Path.directoryandPath.contentOfare donated from sbt-native-packager [io#38][io38] by [@muuki88][@muuki88]- ApiDiff feature used to debug Zinc uses Scala implementation borrowed from Dotty. [zinc#346][zinc346] by [@Krever][@Krever]
- In Zinc internal, make ExtractAPI use perRunCaches. [zinc#347][zinc347] by [@gheine][@gheine]
Internals
- Adopted Scalafmt for formatting the source code using neo-scalafmt.
- Scala Center contributed a redesign of the scripted test framework that has batch mode execution. Scripted now reuses the same sbt instance to run sbt tests, which reduces the CI build times by 50% [#3151][3151] by [@jvican][@jvican]
- sbt 1.0.0-M6 is built using sbt 1.0.0-M5. [#3184][3184] by [@dwijnand][@dwijnand]
Details of major changes
Zinc 1: Class-based name hashing
A major improvement brought into Zinc 1.0 by Grzegorz Kossakowski (commissioned by Lightbend) is class-based name hashing, which will speed up the incremental compilation of Scala in large projects.
Zinc 1.0's name hashing tracks your code dependendencies at the class level, instead of at the source file level. The GitHub issue sbt/sbt#1104 lists some comparisons of adding a method to an existing class in some projects:
ScalaTest AndHaveWord class: Before 49s, After 4s (12x)
Specs2 OptionResultMatcher class: Before 48s, After 1s (48x)
scala/scala Platform class: Before 59s, After 15s (3.9x)
scala/scala MatchCodeGe...
0.13.16
Fixes with compatibility implications
- Removes the "hit [ENTER] to switch to interactive mode" feature. Run
sbt xxx shellto stay in shell afterxxx. #3091/#3153 by @dwijnand
Improvements
- Improves the new startup messages. See below.
- Ports sbt-cross-building's
^and^^commands for plugin cross building. See below. - Adds
Zeroscope component for sbt 1.0 compatibility. #3179 by @eed3si9n - Backports
withXXXmethods forModuleIDandArtifactfor sbt 1.0 compatibility. #3215 by @eed3si9n
Bug fixes
- Fixes the new startup messages. See below.
- Fixes forward compatibility of Scripted plugin with sbt 1.0.0-RC2. #3329 by @dwijnand
- Fixes ScalaTest nested suite test names being reported as "(It is not a test)". #3154 by @jameskoch
- Fixes default
scalaBinaryVersionfor Dotty. #3152 by @smarter - Updates JLine dependency to 2.14.4 to work around ncurses change causing
NumberFormatException. #3265 by @Rogach
sbt-cross-building
@jrudolph's sbt-cross-building is a plugin author's plugin.
It adds cross command ^ and sbtVersion switch command ^^, similar to + and ++,
but for switching between multiple sbt versions across major versions.
sbt 0.13.16 merges these commands into sbt because the feature it provides is useful as we migrate plugins to sbt 1.0.
To switch the sbtVersion in pluginCrossBuild from the shell use:
^^ 1.0.0-RC2
Your plugin will now build with sbt 1.0.0-RC2 (and its Scala version 2.12.2).
If you need to make changes specific to a sbt version, you can now include them into src/main/scala-sbt-0.13,
and src/main/scala-sbt-1.0, where the binary sbt version number is used as postfix.
To run a command across multiple sbt versions, set:
crossSbtVersions := Vector("0.13.15", "1.0.0-RC2")Then, run:
^ compile
Eviction warning presentation
sbt 0.13.16 improves the eviction warning presentation.
Before:
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] * com.google.code.findbugs:jsr305:2.0.1 -> 3.0.0
[warn] Run 'evicted' to see detailed eviction warnings
After:
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn]
[warn] * com.typesafe.akka:akka-actor_2.12:2.5.0 is selected over 2.4.17
[warn] +- de.heikoseeberger:akka-log4j_2.12:1.4.0 (depends on 2.5.0)
[warn] +- com.typesafe.akka:akka-parsing_2.12:10.0.6 (depends on 2.4.17)
[warn] +- com.typesafe.akka:akka-stream_2.12:2.4.17 () (depends on 2.4.17)
[warn]
[warn] Run 'evicted' to see detailed eviction warnings
Improvements and bug fixes to the startup messages
sbt writes out the sbt.version in project/build.properties if it is missing.
sbt 0.13.16 fixes the logging when it happens by using the logger.
We encourage the use of the sbt shell by running sbt, instead of running sbt compile from the terminal repeatedly.
The sbt shell keeps the JVM warm, and there is a significant performance improvement gained for your compilation.
The startup message that we added in sbt 0.13.15 was a bit too aggressive, so we are toning it down in 0.13.16.
It will only be triggered for sbt compile, and it can also be suppressed with suppressSbtShellNotification := true.
0.13.16-RC1
Fixes with compatibility implications
- Removes the "hit [ENTER] to switch to interactive mode" feature. Run
sbt xxx shellto stay in shell afterxxx. #3091/#3153 by @dwijnand
Improvements
- Improves the new startup messages. See below.
- Ports sbt-cross-building's
^and^^commands for plugin cross building. See below. - Adds
Zeroscope component for sbt 1.0 compatibility. #3179 by @eed3si9n - Backports
withXXXmethods forModuleIDandArtifactfor sbt 1.0 compatibility. #3215 by @eed3si9n
Bug fixes
- Fixes the new startup messages. See below.
- Fixes forward compatibility of Scripted plugin with sbt 1.0.0-RC2. #3329 by @dwijnand
- Fixes ScalaTest nested suite test names being reported as "(It is not a test)". #3154 by @jameskoch
- Fixes default
scalaBinaryVersionfor Dotty. #3152 by @smarter - Updates JLine dependency to 2.14.4 to work around ncurses change causing
NumberFormatException. #3265 by @Rogach
sbt-cross-building
@jrudolph's sbt-cross-building is a plugin author's plugin.
It adds cross command ^ and sbtVersion switch command ^^, similar to + and ++,
but for switching between multiple sbt versions across major versions.
sbt 0.13.16 merges these commands into sbt because the feature it provides is useful as we migrate plugins to sbt 1.0.
To switch the sbtVersion in pluginCrossBuild from the shell use:
^^ 1.0.0-RC2
Your plugin will now build with sbt 1.0.0-RC2 (and its Scala version 2.12.2).
If you need to make changes specific to a sbt version, you can now include them into src/main/scala-sbt-0.13,
and src/main/scala-sbt-1.0, where the binary sbt version number is used as postfix.
To run a command across multiple sbt versions, set:
crossSbtVersions := Vector("0.13.15", "1.0.0-RC2")Then, run:
^ compile
Eviction warning presentation
sbt 0.13.16 improves the eviction warning presentation.
Before:
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] * com.google.code.findbugs:jsr305:2.0.1 -> 3.0.0
[warn] Run 'evicted' to see detailed eviction warnings
After:
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn]
[warn] * com.typesafe.akka:akka-actor_2.12:2.5.0 is selected over 2.4.17
[warn] +- de.heikoseeberger:akka-log4j_2.12:1.4.0 (depends on 2.5.0)
[warn] +- com.typesafe.akka:akka-parsing_2.12:10.0.6 (depends on 2.4.17)
[warn] +- com.typesafe.akka:akka-stream_2.12:2.4.17 () (depends on 2.4.17)
[warn]
[warn] Run 'evicted' to see detailed eviction warnings
Improvements and bug fixes to the startup messages
sbt writes out the sbt.version in project/build.properties if it is missing.
sbt 0.13.16 fixes the logging when it happens by using the logger.
We encourage the use of the sbt shell by running sbt, instead of running sbt compile from the terminal repeatedly.
The sbt shell keeps the JVM warm, and there is a significant performance improvement gained for your compilation.
The startup message that we added in sbt 0.13.15 was a bit too aggressive, so we are toning it down in 0.13.16.
It will only be triggered for sbt compile, and it can also be suppressed with suppressSbtShellNotification := true.
1.0.0-RC2
See [sbt 1.0 roadmap and beta-1][sbt-1-0-roadmap] for scheduled timeline.
sbt 1.0.0-RC2
This is the RC-2 release of sbt 1.0.
Features, fixes, changes with compatibility implications
- Many of the case classes are replaced with pseudo case classes generated using Contraband. Migrate
.copy(foo = xxx)towithFoo(xxx). - sbt 1.0 uses Scala 2.12 for build definitions and plugins. This also requires JDK 8.
- Non-auto
sbt.Plugintrait is dropped. Please migrate to AutoPlugin. Auto plugins are easier to configure, and work better with each other. - sbt 0.12 style
Buildtrait that was deprecated in sbt 0.13.12, is removed. Please migrate to build.sbt. Auto plugins andBuildtrait do not work well together, and its feature is now largely subsumed by multi-project build.sbt. - sbt 0.12 style
Project(...)constructor is restricted down to two parameters. This is becausesettingsparameter does not work well with Auto Plugins. Useprojectinstead. - sbt 0.12 style key dependency operators
<<=,<+=,<++=are removed. Please migrate to :=, +=, and ++=. These operators have been sources of confusion for many users, and have long been removed from 0.13 docs, and have been formally deprecated since sbt 0.13.13. - Zinc 1 drops support for Scala 2.9 and earlier. Scala 2.10 must use 2.10.2 and above. Scala 2.11 must use 2.11.2 and above. (latest patch releases are recommended)
config("tooling")must be directly assigned to a capitalizedval, likeval Tooling = config("tooling"). This captures the lhs identifier into the configuration so we can use it from the shell later.- Changes
publishToandotherResolversfrom SettingKeys to TaskKeys. [#2059][2059]/[#2662][2662] by [@dwijnand][@dwijnand] Path.relativizeFile(baseFile, file)is renamed toIO.relativizeFile(baseFile, file).PathFinder's.***method is renamed to.allPathsmethod.PathFinder.x_!(mapper)is moved todef paironPathFinder.- Drops sbt 0.12 style hyphen-separated key names (use
publishLocalinstead ofpublish-local). - Renames early command feature from
--<command>toearly(<command>). - Log options
-error,-warn,-info,-debugare added as shorthand for"early(error)"etc. sbt.Processandsbt.ProcessExtraare dropped. Usescala.sys.processinstead.incOptions.value.withNameHashing(...)option is removed because name hashing is always on.TestResult.Valueis now calledTestResult.- The scripted plugin is cross-versioned now, so you must use
%%when depending on it - Removes the
settingsSetsmethod fromProject(along withadd/setSbtFiles). - Drops deprecated
InputTaskapplymethod andinputTaskDSL method. UseDef.inputTaskandDef.spaceDelimited().parsed. - Drops deprecated
ProjectReferenceimplicit lifts. UseRootProject(<uri>),RootProject(<file>)orLocalProject(<string>). - Drops deprecated
seq(..)DSL method. UseSeqor pass in the settings without wrapping. - Drops deprecated
File/Seq[File]setting enrichments. Use.valueandDef.setting. - Drops deprecated
SubProcessapplyoverload. UseSubProcess(ForkOptions(runJVMOptions = ..)). - Drops
toError(opt: Option[String]): Unit(equivalent toopt foreach sys.error); if used to wrap
ScalaRun#runthen the replacement isscalaRun.run(...).failed foreach (sys error _.getMessage) - A number of the methods on
sbt.Path(such asrelativeToandrebaseandflat) are now no longer in the
default namespace by virtue of being mixed into the sbt package object. Usesbt.io.Pathto access them
again. - sbt 1.0 renames
Globalas scope component toZeroto disambiguate fromGlobalScope. [@eed3si9n][@eed3si9n] - sbt 1.0 uses
ConfigRefin places whereStringwas used to reference configuration, such asupdate.value.configuration(...). Pass inConfiguration, which implicitly converts toConfigRef. - Changes
sourceArtifactTypesanddocArtifactTypesfromSet[String]toSeq[String]settings.
The Scala Center is working with Lightbend to provide [an automatic migration tool][sbt-migration-rewrites].
Features
- New incremental compiler called Zinc 1. Details below.
- The interactive shell is adds network API. Details below.
Fixes
- Fixes test content log not showing up. [#3198][3198]/[util#80][util80] by [@eed3si9n][@eed3si9n]
- Fixes confusing log about "Unable to parse". [lm#98][lm98] by [@jvican][@jvican]
- Fixes
consoletask. [zinc#295][zinc295] by [@dwijnand][@dwijnand] - Fixes spurious recompilations when unrelated constructor changes. [zinc#288][zinc288] by [@smarter][@smarter]
- Fixes restligeist macro for old operators. [#3218][3218] by [@eed3si9n][@eed3si9n]
- Fixes task caching of
updatetask. [#3233][3233] by [@eed3si9n][@eed3si9n] - Fixes ncurses-JLine issue by updating to JLine 2.14.4. [util#81][util81] by [@Rogach][@Rogach]
Improvements
- Scala Center contributed a Java-friendly Zinc API. This was a overhaul of the Zinc internal API for a good Scala integration with other build tools. [zinc#304][zinc304] by [@jvican][@jvican]
- Scala Center contributed a binary format for Zinc's internal storage. See below
- Scala Center contributed static validation of
build.sbt. See below - Library management API and parallel artifact download. See below.
- The startup log level is dropped to
-errorin script mode usingscalas. [#840][840] by [@eed3si9n][@eed3si9n] - Replace cross building support with sbt-doge. This allows builds with projects that have multiple different combinations of cross scala versions to be cross built correctly. The behaviour of ++ is changed so that it only updates the Scala version of projects that support that Scala version, but the Scala version can be post fixed with ! to force it to change for all projects. A -v argument has been added that prints verbose information about which projects are having their settings changed along with their cross scala versions. [#2613][2613] by [@jroper][@jroper]
ivyLoggingLevelis dropped toUpdateLogging.Quietwhen CI environment is detected. [@eed3si9n][@eed3si9n]- Add logging of the name of the different
build.sbt(matching*.sbt) files used. [#1911][1911] by [@valydia][@valydia] - Add the ability to call
aggregatefor the current project inside a build sbt file. By [@xuwei-k][@xuwei-k] - Add new global setting
asciiGraphWidththat controls the maximum width of the ASCII graphs printed by commands likeinspect tree. Default value corresponds to the previously hardcoded value of 40 characters. By [@RomanIakovlev][@RomanIakovlev]. - Revamped documentation for Scopes, and added Scope Delegation. [@eed3si9n][@eed3si9n]
- Ports sbt-cross-building's
^and^^commands for plugin cross building. See below. - Adds support for cross-versioned exclusions. [#1518][1518]/[lm#88][lm88] by [@jvican][@jvican]
- Adds new offline mode to the Ivy-based library management. [lm#92][lm92] by [@jvican][@jvican]
- A number of features related to dependency locking. See below.
- Improved eviction warning presentation. See below.
- A better main class detection. [zinc#287][zinc287] by [@smarter][@smarter]
- For faster startup, sbt will use Java refection to discover
autoImport. [#3115][3115] by [@jvican][@jvican] - For faster startup, reuse the same global instance for parsing. [#3115][3115] by [@jvican][@jvican]
- Adds
InteractionServicefrom sbt-core-next to keep compatibility with sbt 0.13. [#3182][3182] by [@eed3si9n][@eed3si9n] - Adds new
WatchServicethat abstractsPollingWatchServiceand Java NIO. [io#47][io47] by [@Duhemm][@Duhemm] on behalf of The Scala Center. - Adds variants of
IO.copyFileandIO.copyDirectorythat acceptsbt.io.CopyOptions(). See below for details. Path.directoryandPath.contentOfare donated from sbt-native-packager [io#38][io38] by [@muuki88][@muuki88]- ApiDiff feature used to debug Zinc uses Scala implementation borrowed from Dotty. [zinc#346][zinc346] by [@Krever][@Krever]
- In Zinc internal, make ExtractAPI use perRunCaches. [zinc#347][zinc347] by [@gheine][@gheine]
Internals
- Adopted Scalafmt for formatting the source code using neo-scalafmt.
- Scala Center contributed a redesign of the scripted test framework that has batch mode execution. Scripted now reuses the same sbt instance to run sbt tests, which reduces the CI build times by 50% [#3151][3151] by [@jvican][@jvican]
- sbt 1.0.0-M6 is built using sbt 1.0.0-M5. [#3184][3184] by [@dwijnand][@dwijnand]
Details of major changes
Zinc 1: Class-based name hashing
A major improvement brought into Zinc 1.0 by Grzegorz Kossakowski (commissioned by Lightbend) is class-based name hashing, which will speed up the incremental compilation of Scala in large projects.
Zinc 1.0's name hashing tracks your code dependendencies at the class level, instead of at the source file level. The GitHub issue sbt/sbt#1104 lists some comparisons of adding a method to an existing class in some projects:
ScalaTest AndHaveWord class: Before 49s, After 4s (12x)
Specs2 OptionResultMatcher class: Before 48s, After 1s (48x)
scala/scala Platform class: Before 59s, After 15s (3.9x)
scala/scala MatchCodeGen class: Before 48s, After 17s (2.8x)
This depends on some factors such as how your classes are organized, but you can see 3x ~ 40x improvements. The reason for the speedup is because it compiles fewer source files than before by untangling the classes from source f...
1.0.0-M6
See [sbt 1.0 roadmap and beta-1][sbt-1-0-roadmap] for scheduled timeline.
sbt 1.0.0-M6
This is the beta-2 release of sbt 1.0.
Changes since sbt 1.0.0-M5
Features, fixes, changes with compatibility implications
The Scala Center is working with Lightbend to provide an automatic migration tool.
- sbt 1.0 renames
Globalas scope component toZeroto disambiguate fromGlobalScope. [@eed3si9n][@eed3si9n]
Fixes
- Fixes test content log not showing up. [#3198][3198]/[util#80][util80] by [@eed3si9n][@eed3si9n]
- Fixes confusing log about "Unable to parse". [lm#98][lm98] by [@jvican][@jvican]
- Fixes
consoletask. [zinc#295][zinc295] by [@dwijnand][@dwijnand] - Fixes spurious recompilations when unrelated constructor changes. [zinc#288][zinc288] by [@smarter][@smarter]
- Fixes restligeist macro for old operators. [#3218][3218] by [@eed3si9n][@eed3si9n]
- Fixes task caching of
updatetask. [#3233][3233] by [@eed3si9n][@eed3si9n]
Improvements
- Scala Center contributed a Java-friendly Zinc API. This was a overhaul of the Zinc internal API for a good Scala integration with other build tools. [zinc#304][zinc304] by [@jvican][@jvican]
- Ivy engine with parallel artifact download. See below.
- Scala Center contributed static validation of
build.sbt. See below - Revamped documentation for Scopes, and added Scope Delegation. [@eed3si9n][@eed3si9n]
- Ports sbt-cross-building's
^and^^commands for plugin cross building. See below. - Adds support for cross-versioned exclusions. [#1518][1518]/[lm#88][lm88] by [@jvican][@jvican]
- Adds new offline mode to the Ivy-based library management. [lm#92][lm92] by [@jvican][@jvican]
- A number of features related to dependency locking. See below.
- Improved eviction warning presentation. See below.
- A better main class detection. [zinc#287][zinc287] by [@smarter][@smarter]
- For faster startup, sbt will use Java refection to discover
autoImport. [#3115][3115] by [@jvican][@jvican] - For faster startup, reuse the same global instance for parsing. [#3115][3115] by [@jvican][@jvican]
- Adds
InteractionServicefrom sbt-core-next to keep compatibility with sbt 0.13. [#3182][3182] by [@eed3si9n][@eed3si9n]
Static validation of build.sbt
sbt 1.0 prohibits .value calls inside the bodies of if expressions and anonymous functions in a task, @sbtUnchecked annotation can be used to override the check.
The static validation also catches if you forget to call .value in a body of a task.
[#3216][3216] and [#3225][3225] by [@jvican][@jvican]
Internals
- Adopted Scalafmt for formatting the source code using neo-scalafmt.
- Scala Center contributed a redesign of the scripted test framework that has batch mode execution. Scripted now reuses the same sbt instance to run sbt tests, which reduces the CI build times by 50% [#3151][3151] by [@jvican][@jvican]
- sbt 1.0.0-M6 is built using sbt 1.0.0-M5. [#3184][3184] by [@dwijnand][@dwijnand]
Ivy engine with parallel artifact download
sbt 1.0 adds parallel artifact download while still using Ivy for resolution, contributed by Scala Center.
It also introduces Gigahorse OkHttp as the Network API, and it uses Square OkHttp for artifact download as well.
[lm#90][lm90] by [@jvican][@jvican]/[@jsuereth][@jsuereth]
and [lm#104][lm104] by [@eed3si9n][@eed3si9n].
Dependency locking
Dependency locking feature is still in progress, but Jorge ([@jvican][@jvican]) from Scala Center has added a number of related features
that would should work together to allow dependency locking.
- Frozen mode to the Ivy-based library management, which makes sure that the resolution is always intransitive. [lm#100][lm100]
- Adds support to specify a resolver for dependencies. [lm#97][lm97]
- Adds "managed checksums", which tells Ivy to skip the checksum process. [lm#111][lm111]
Eviction warning presentation
sbt 1.0 improves the eviction warning presetation.
Before:
[warn] There may be incompatibilities among your library dependencies.
[warn] Here are some of the libraries that were evicted:
[warn] * com.google.code.findbugs:jsr305:2.0.1 -> 3.0.0
[warn] Run 'evicted' to see detailed eviction warnings
After:
[warn] Found version conflict(s) in library dependencies; some are suspected to be binary incompatible:
[warn]
[warn] * com.typesafe.akka:akka-actor_2.12:2.5.0 is selected over 2.4.17
[warn] +- de.heikoseeberger:akka-log4j_2.12:1.4.0 (depends on 2.5.0)
[warn] +- com.typesafe.akka:akka-parsing_2.12:10.0.6 (depends on 2.4.17)
[warn] +- com.typesafe.akka:akka-stream_2.12:2.4.17 () (depends on 2.4.17)
[warn]
[warn] Run 'evicted' to see detailed eviction warnings
[#3202][3202] by [@eed3si9n][@eed3si9n]
sbt-cross-building
[@jrudolph][@jrudolph]'s sbt-cross-building is a plugin author's plugin.
It adds cross command ^ and sbtVersion switch command ^^, similar to + and ++,
but for switching between multiple sbt versions across major versions.
sbt 0.13.16 merges these commands into sbt because the feature it provides is useful as we migrate plugins to sbt 1.0.
To switch the sbtVersion in pluginCrossBuild from the shell use:
^^ 1.0.0-M5
Your plugin will now build with sbt 1.0.0-M5 (and its Scala version 2.12.2).
If you need to make changes specific to a sbt version, you can now include them into src/main/scala-sbt-0.13,
and src/main/scala-sbt-1.0.0-M5, where the binary sbt version number is used as postfix.
To run a command across multiple sbt versions, set:
crossSbtVersions := Vector("0.13.15", "1.0.0-M5")Then, run:
^ compile
[#3133][3133] by [@eed3si9n][@eed3si9n] (forward ported from 0.13.16-M1)
notes
- v1.0.0-M5...v1.0.0-M6
- sbt/zinc@v1.0.0-X14...v1.0.0-X16
- sbt/librarymanagement@v1.0.0-X10...v1.0.0-X15
- sbt/util@v1.0.0-M23...v1.0.0-M24
sbt 1.0.0-M5
This is the beta-1 release of sbt 1.0.
There's no binary compatibility with sbt 0.13 or other future 1.0.0-Mx versions.
Features, fixes, changes with compatibility implications
We are working with Scala Center to provide [an automatic migration tool][sbt-migration-rewrites].
- sbt 1.0 uses Scala 2.12 for build definitions and plugins. This also requires JDK 8.
- Non-auto
sbt.Plugintrait is dropped. Please migrate to AutoPlugin. Auto plugins are easier to configure, and work better with each other. - sbt 0.12 style
Buildtrait that was deprecated in sbt 0.13.12, is removed. Please migrate to build.sbt. Auto plugins andBuildtrait do not work well together, and its feature is now largely subsumed by multi-project build.sbt. - sbt 0.12 style
Project(...)constructor is restricted down to two parameters. This is becausesettingsparameter does not work well with Auto Plugins. Useprojectinstead. - sbt 0.12 style key dependency operators
<<=,<+=,<++=are removed. Please migrate to :=, +=, and ++=. These operators have been sources of confusion for many users, and have long been removed from 0.13 docs, and have been formally deprecated since sbt 0.13.13. - Zinc 1 drops support for Scala 2.9 and earlier. Scala 2.10 must use 2.10.2 and above. Scala 2.11 must use 2.11.2 and above. (latest patch releases are recommended)
- Many of the case classes are replaced with pseudo case classes generated using Contraband. Migrate
.copy(foo = xxx)towithFoo(xxx). - Changes
publishToandotherResolversfrom SettingKeys to TaskKeys. [#2059][2059]/[#2662][2662] by [@dwijnand][@dwijnand] PathFinder's.***method is renamed to.allPathsmethod.- Drops sbt 0.12 style hyphen-separated key names (use
publishLocalinstead ofpublish-local). - Renames early command feature from
--<command>toearly(<command>). - Log options
-error,-warn,-info,-debugare added as shorthand for"early(error)"etc. sbt.Processandsbt.ProcessExtraare dropped. Usescala.sys.processinstead.incOptions.value.withNameHashing(...)option is removed because name hashing is always on.TestResult.Valueis now calledTestResult.- The scripted plugin is cross-versioned now, so you must use
%%when depending on it - Removes the
settingsSetsmethod fromProject(along withadd/setSbtFiles). - Drops deprecated
InputTaskapplymethod andinputTaskDSL method. UseDef.inputTaskandDef.spaceDelimited().parsed. - Drops deprecated
ProjectReferenceimplicit lifts. UseRootProject(<uri>),RootProject(<file>)orLocalProject(<string>). - Drops deprecated
seq(..)DSL method. UseSeqor pass in the settings without wrapping. - Drops deprecated
File/Seq[File]setting enrichments. Use.valueandDef.setting. - Drops deprecated
SubProcessapplyoverload. UseSubProcess(ForkOptions(runJVMOptions = ..)). - Drops
toError(opt: Option[String]): Unit(equivalent toopt foreach sys.error); if used to wrap
ScalaRun#runthen the replacement isscalaRun.run(...).failed foreach (sys error _.getMessage) - A number of the methods on
sbt.Path(such asrelativeToandrebaseandflat) are now no longer in the
default namespace by virtue of being mixed into the sbt package object. Usesbt.io.Pathto access them
again.
Features
- New incremental compiler called Zinc...