diff --git a/notes/0.13.10.markdown b/notes/0.13.10.markdown index b42df40fa..7513714db 100644 --- a/notes/0.13.10.markdown +++ b/notes/0.13.10.markdown @@ -13,6 +13,7 @@ [@DavidPerezIngeniero]: https://github.com/DavidPerezIngeniero [@romanowski]: https://github.com/romanowski [@timcharper]: https://github.com/timcharper + [@smarter]: https://github.com/smarter [2302]: https://github.com/sbt/sbt/issues/2302 [2303]: https://github.com/sbt/sbt/pull/2303 [1967]: https://github.com/sbt/sbt/issues/1967 @@ -74,6 +75,12 @@ [2343]: https://github.com/sbt/sbt/pull/2343 [2120]: https://github.com/sbt/sbt/issues/2120 [2399]: https://github.com/sbt/sbt/pull/2399 + [1171]: https://github.com/sbt/sbt/issues/1171 + [2261]: https://github.com/sbt/sbt/pull/2261 + [2344]: https://github.com/sbt/sbt/pull/2344 + [2322]: https://github.com/sbt/sbt/pull/2322 + [2266]: https://github.com/sbt/sbt/issues/2266 + [2354]: https://github.com/sbt/sbt/pull/2354 ### Fixes with compatibility implications @@ -85,10 +92,12 @@ ### Improvements +- Adds configurable compiler bridge. See below. +- sbt is now aware of [Dotty][Dotty]. See below +- Inter-project dependency tracking. See below. - Scala version used by the build is updated to 2.10.6. [#2311][2311] by [@eed3si9n][@eed3si9n] - If `publishMavenStyle` is `true`, `update` task warns when it sees intransitive dependencies, which do not translate to Maven. [#2127][2127] by [@jsuereth][@jsuereth] - Adds `Def.settings`, which facilitates mixing settings with seq of settings. See below. -- Adds configurable compiler bridge. See below. - sbt Serialization is updated to 0.1.2. [2117][#2117] by [@dwijnand][@dwijnand] - Hides the stack trace on compilation error in build definition. [#2071][2071]/[#2091][2091] by [@Duhemm][@Duhemm] - Makes the dummy `Logger.Null` public. [#2094][2094] by [@pdalpra][@pdalpra] @@ -96,16 +105,20 @@ - Logs javaOptions used when forking. [#2087][2087]/[#2103][2103] by [@pdalpra][@pdalpra] - Warns when javaOptions are defined but fork is set to false. [#2041][2041]/[#2103][2103] by [@pdalpra][@pdalpra] - Adds an `Append.Sequence` instance for `List` to allow `+=`/`++=` on `developers` setting. [#2107][2107]/[#2114][2114] by [@pdalpra][@pdalpra] -- Fixes warnings, and other clean ups. [#2112][2112]/[#2137][2137]/[#2139][2139]/[#2142][2142] by [@pdalpra][@pdalpra] +- Drops `sealed` from the typeclasses in `Append`. [#2322][2322] by [@dwijnand][@dwijnand] +- Fixes compilation warnings in sbt's codebase, and other clean ups. [#2112][2112]/[#2137][2137]/[#2139][2139]/[#2142][2142] by [@pdalpra][@pdalpra] - Adds `localIfFile` to `MavenRepository`, to force artifacts to be copied to the cache. [#2172][2172] by [@dwijnand][@dwijnand] - Adds `Resolver.bintrayIvyRepo(owner, repo)`. [#2285][2285] by [@dwijnand][@dwijnand] - Non-static annotation changes are no longer tracked by the incremental compiler. [#2343][2343] by [@romanowski][@romanowski] - Reduces the memory usage of API info extraction in the incremental compiler. [#2343][2343] by [@adriaanm][@adriaanm] +- Register signatures of method before and after erasure if they involve value classes [#2261][2261] by [@Duhemm][@Duhemm] ### Bug fixes - Fixes the false positive of inconsistent duplicate warnings. [#1933][1933]/[#2258][2258] by [@Duhemm][@Duhemm] +- Fixes task scheduling performance on large builds by skipping checks in `sbt.Execute`. [#2302][2302]/[#2303][2303] by [@jrudolph][@jrudolph] +- Incremental compiler misses change to value class, and results to NoSuchMethodError at runtime [#1171][1171] - Updated Ivy to merge IVY-1526 fix. [sbt/ivy#14][14]/[#2118][2118] by [@jsuereth][@jsuereth] - Fixes `updateClassifiers` downloading updated snapshot sources and docs. [#1750][1750]/[sbt/ivy#17][17]/[#2163][2163]/[sbt/ivy#18][18]/[#2186][2186] by [@dwijnand][@dwijnand] @@ -127,12 +140,50 @@ - Adds more robustness to `tasks` and `settings` command. [#2192][2192] by [@DavidPerezIngeniero][@DavidPerezIngeniero] - Fixes Java compilation inconsistencies between sbt and `javac` by always failing if the local Java compiler reported errors. [#2228][2228]/[#2271][2271] by [@Duhemm][@Duhemm] - Fixes `JavaErrorParser` to parse non-compile-errors [#2256][2256]/[#2272][2272] by [@Duhemm][@Duhemm] -- Fixes task scheduling performance on large builds by skipping checks in `sbt.Execute`. [#2302][2302]/[#2303][2303] by [@jrudolph][@jrudolph] - Fixes launcher configuration to add `sbt-ivy-snapshots` repository to resolve nightly builds. [@eed3si9n][@eed3si9n] - Fixes performance issues during tree traversal in the incremental compiler. [#2343][2343] by [@adriaanm][@adriaanm] - Fixes the tracking of self types and F-bounded existential types in the incremental compiler. [#2343][2343] by [@adriaanm][@adriaanm] - Fixes autoImports for AutoPlugins for global configuration files. [#2120][2120]/[#2399][2399] by [@timcharper][@timcharper] +### Configurable Scala compiler bridge + +sbt 0.13.10 adds `scalaCompilerBridgeSource` setting to specify the compiler brigde source. This allows different implementation of the bridge for Scala versions, and also allows future versions of Scala compiler implementation to diverge. The source module will be retrieved using library management configured by `bootIvyConfiguration` task. + +[#2106][2106]/[#2197][2197]/[#2336][2336] by [@Duhemm][@Duhemm] + +### Dotty awareness + +sbt 0.13.10 will assume that Dotty is used when `scalaVersion` starts with `0.`. +The built-in compiler bridge in sbt does not support Dotty, +but a separate compiler bridge is being developed at [smarter/dotty-bridge](https://github.com/smarter/dotty-bridge) and +an example project that uses it is available at [smarter/dotty-example-project](https://github.com/smarter/dotty-example-project). + +[#2344][2344] by [@smarter][@smarter] + +### Inter-project dependency tracking + +sbt 0.13.10 adds `trackInternalDependencies` and `exportToInternal` settings. These can be used to control whether to trigger compilation of a dependent subprojects when you call `compile`. Both keys will take one of three values: `TrackLevel.NoTracking`, `TrackLevel.TrackIfMissing`, and `TrackLevel.TrackAlways`. By default they are both set to `TrackLevel.TrackAlways`. + +When `trackInternalDependencies` is set to `TrackLevel.TrackIfMissing`, sbt will no longer try to compile internal (inter-project) dependencies automatically, unless there are no `*.class` files (or JAR file when `exportJars` is `true`) in the output directory. When the setting is set to `TrackLevel.NoTracking`, the compilation of internal dependencies will be skipped. Note that the classpath will still be appended, and dependency graph will still show them as dependencies. The motivation is to save the I/O overhead of checking for the changes on a build with many subprojects during development. Here's how to set all subprojects to `TrackIfMissing`. + + lazy val root = (project in file(".")). + aggregate(....). + settings( + inThisBuild(Seq( + trackInternalDependencies := TrackLevel.TrackIfMissing, + exportJars := true + )) + ) + +The `exportToInternal` setting allows the dependee subprojects to opt out of the internal tracking, which might be useful if you want to track most subprojects except for a few. The intersection of the `trackInternalDependencies` and `exportToInternal` settings will be used to determine the actual track level. Here's an example to opt-out one project: + + lazy val dontTrackMe = (project in file("dontTrackMe")). + settings( + exportToInternal := TrackLevel.NoTracking + ) + +[#2266][2266]/[#2354][2354] by [@eed3si9n][@eed3si9n] + ### Def.settings Using `Def.settings` it is now possible to nicely define settings as such: @@ -143,9 +194,3 @@ Using `Def.settings` it is now possible to nicely define settings as such: ) [#2151][2151] by [@dwijnand][@dwijnand] - -### Configurable Scala compiler bridge - -sbt 0.13.10 adds `scalaCompilerBridgeSource` setting to specify the compiler brigde source. This allows different implementation of the bridge for Scala versions, and also allows future versions of Scala compiler implementation to diverge. The source module will be retrieved using library management configured by `bootIvyConfiguration` task. - -[#2106][2106]/[#2197][2197]/[#2336][2336] by [@Duhemm][@Duhemm] diff --git a/notes/0.13.10/consider-signatures-after-erasure.md b/notes/0.13.10/consider-signatures-after-erasure.md deleted file mode 100644 index f511a5aba..000000000 --- a/notes/0.13.10/consider-signatures-after-erasure.md +++ /dev/null @@ -1,12 +0,0 @@ - - [@Duhemm]: http://github.com/Duhemm - [1171]: https://github.com/sbt/sbt/issues/1171 - [2261]: https://github.com/sbt/sbt/pull/2261 - -### Fixes with compatibility implications - -### Improvements -- Register signatures of method before and after erasure if they involve value classes [#2261][2261] by [@Duhemm][@Duhemm] - -### Bug fixes -- Incremental compiler misses change to value class, and results to NoSuchMethodError at runtime [#1171][1171] \ No newline at end of file diff --git a/notes/0.13.10/dotty-awareness.md b/notes/0.13.10/dotty-awareness.md deleted file mode 100644 index 5660f9bcd..000000000 --- a/notes/0.13.10/dotty-awareness.md +++ /dev/null @@ -1,16 +0,0 @@ - - [Dotty]: https://github.com/lampepfl/dotty - [@smarter]: https://github.com/smarter - -### Fixes with compatibility implications - -### Improvements - -- sbt is now aware of [Dotty][Dotty], it will assume - that Dotty is used when `scalaVersion` starts with `0.`, the sbt - compiler-bridge does not support Dotty but a separate compiler-bridge is being - developed at https://github.com/smarter/dotty-bridge and an example project - that uses it is available at https://github.com/smarter/dotty-example-project - by [@smarter][@smarter]. - -### Bug fixes diff --git a/notes/0.13.10/drop-sealed-from-Append-typeclasses.markdown b/notes/0.13.10/drop-sealed-from-Append-typeclasses.markdown deleted file mode 100644 index 6ad216120..000000000 --- a/notes/0.13.10/drop-sealed-from-Append-typeclasses.markdown +++ /dev/null @@ -1,10 +0,0 @@ - - [1171]: https://github.com/sbt/sbt/issues/1171 - [2322]: https://github.com/sbt/sbt/pull/2322 - -### Fixes with compatibility implications - -### Improvements -- Drops `sealed` from the typeclasses in Append. [#2322][] by [@dwijnand][] - -### Bug fixes diff --git a/notes/0.13.10/internal-tracking.md b/notes/0.13.10/internal-tracking.md deleted file mode 100644 index eacdd2dec..000000000 --- a/notes/0.13.10/internal-tracking.md +++ /dev/null @@ -1,32 +0,0 @@ - - [@eed3si9n]: https://github.com/eed3si9n - [2266]: https://github.com/sbt/sbt/issues/2266 - [2354]: https://github.com/sbt/sbt/pull/2354 - -### Improvements - -- Adds `trackInternalDependencies` and `exportToInternal` keys. See below. - -### Inter-project dependency tracking - -sbt 0.13.10 adds `trackInternalDependencies` and `exportToInternal` settings. These can be used to control whether to trigger compilation of a dependent subprojects when you call `compile`. Both keys will take one of three values: `TrackLevel.NoTracking`, `TrackLevel.TrackIfMissing`, and `TrackLevel.TrackAlways`. By default they are both set to `TrackLevel.TrackAlways`. - -When `trackInternalDependencies` is set to `TrackLevel.TrackIfMissing`, sbt will no longer try to compile internal (inter-project) dependencies automatically, unless there are no `*.class` files (or JAR file when `exportJars` is `true`) in the output directory. When the setting is set to `TrackLevel.NoTracking`, the compilation of internal dependencies will be skipped. Note that the classpath will still be appended, and dependency graph will still show them as dependencies. The motivation is to save the I/O overhead of checking for the changes on a build with many subprojects during development. Here's how to set all subprojects to `TrackIfMissing`. - - lazy val root = (project in file(".")). - aggregate(....). - settings( - inThisBuild(Seq( - trackInternalDependencies := TrackLevel.TrackIfMissing, - exportJars := true - )) - ) - -The `exportToInternal` setting allows the dependee subprojects to opt out of the internal tracking, which might be useful if you want to track most subprojects except for a few. The intersection of the `trackInternalDependencies` and `exportToInternal` settings will be used to determine the actual track level. Here's an example to opt-out one project: - - lazy val dontTrackMe = (project in file("dontTrackMe")). - settings( - exportToInternal := TrackLevel.NoTracking - ) - -[#2266][2266]/[#2354][2354] by [@eed3si9n][@eed3si9n]