Files
sbt/notes/0.13.11.markdown
Josh Soref 613eb86447 Spelling (#8028)
* spelling: 1.x

Signed-off-by: Josh Soref <[email protected]>

* spelling: a

Signed-off-by: Josh Soref <[email protected]>

* spelling: aether

Signed-off-by: Josh Soref <[email protected]>

* spelling: anymore

Signed-off-by: Josh Soref <[email protected]>

* spelling: artifact

Signed-off-by: Josh Soref <[email protected]>

* spelling: available

Signed-off-by: Josh Soref <[email protected]>

* spelling: be

Signed-off-by: Josh Soref <[email protected]>

* spelling: bridge

Signed-off-by: Josh Soref <[email protected]>

* spelling: cannot

Signed-off-by: Josh Soref <[email protected]>

* spelling: case-insensitive

Signed-off-by: Josh Soref <[email protected]>

* spelling: checksum

Signed-off-by: Josh Soref <[email protected]>

* spelling: class loads

Signed-off-by: Josh Soref <[email protected]>

* spelling: contra

Signed-off-by: Josh Soref <[email protected]>

* spelling: dependencies

Signed-off-by: Josh Soref <[email protected]>

* spelling: dependency

Signed-off-by: Josh Soref <[email protected]>

* spelling: dependent

Signed-off-by: Josh Soref <[email protected]>

* spelling: deriveds

Signed-off-by: Josh Soref <[email protected]>

* spelling: describes

Signed-off-by: Josh Soref <[email protected]>

* spelling: early

Signed-off-by: Josh Soref <[email protected]>

* spelling: enclosed

Signed-off-by: Josh Soref <[email protected]>

* spelling: evaluation

Signed-off-by: Josh Soref <[email protected]>

* spelling: excluding

Signed-off-by: Josh Soref <[email protected]>

* spelling: execution

Signed-off-by: Josh Soref <[email protected]>

* spelling: for

Signed-off-by: Josh Soref <[email protected]>

* spelling: frequently

Signed-off-by: Josh Soref <[email protected]>

* spelling: github

Signed-off-by: Josh Soref <[email protected]>

* spelling: green

Signed-off-by: Josh Soref <[email protected]>

* spelling: https://www

Signed-off-by: Josh Soref <[email protected]>

* spelling: https

Signed-off-by: Josh Soref <[email protected]>

* spelling: in-sourcing

Signed-off-by: Josh Soref <[email protected]>

* spelling: include

Signed-off-by: Josh Soref <[email protected]>

* spelling: incompatible

Signed-off-by: Josh Soref <[email protected]>

* spelling: indefinitely

Signed-off-by: Josh Soref <[email protected]>

* spelling: information

Signed-off-by: Josh Soref <[email protected]>

* spelling: inputted

Signed-off-by: Josh Soref <[email protected]>

* spelling: just

Signed-off-by: Josh Soref <[email protected]>

* spelling: lastmodifiedtimes

Signed-off-by: Josh Soref <[email protected]>

* spelling: latest

Signed-off-by: Josh Soref <[email protected]>

* spelling: manifest

Signed-off-by: Josh Soref <[email protected]>

* spelling: miscellaneous

Signed-off-by: Josh Soref <[email protected]>

* spelling: more

Signed-off-by: Josh Soref <[email protected]>

* spelling: neither

Signed-off-by: Josh Soref <[email protected]>

* spelling: never

Signed-off-by: Josh Soref <[email protected]>

* spelling: nonexistent

Signed-off-by: Josh Soref <[email protected]>

* spelling: opted

Signed-off-by: Josh Soref <[email protected]>

* spelling: outputting

Signed-off-by: Josh Soref <[email protected]>

* spelling: params

Signed-off-by: Josh Soref <[email protected]>

* spelling: performance

Signed-off-by: Josh Soref <[email protected]>

* spelling: preceding

Signed-off-by: Josh Soref <[email protected]>

* spelling: presentation

Signed-off-by: Josh Soref <[email protected]>

* spelling: project

Signed-off-by: Josh Soref <[email protected]>

* spelling: projects

Signed-off-by: Josh Soref <[email protected]>

* spelling: protocol

Signed-off-by: Josh Soref <[email protected]>

* spelling: related

Signed-off-by: Josh Soref <[email protected]>

* spelling: representation

Signed-off-by: Josh Soref <[email protected]>

* spelling: res

Signed-off-by: Josh Soref <[email protected]>

* spelling: resolverlist

Signed-off-by: Josh Soref <[email protected]>

* spelling: resolverset

Signed-off-by: Josh Soref <[email protected]>

* spelling: response

Signed-off-by: Josh Soref <[email protected]>

* spelling: returned

Signed-off-by: Josh Soref <[email protected]>

* spelling: sbt_version

Signed-off-by: Josh Soref <[email protected]>

* spelling: scalacheck

Signed-off-by: Josh Soref <[email protected]>

* spelling: sentinels

Signed-off-by: Josh Soref <[email protected]>

* spelling: separates

Signed-off-by: Josh Soref <[email protected]>

* spelling: serves

Signed-off-by: Josh Soref <[email protected]>

* spelling: should

Signed-off-by: Josh Soref <[email protected]>

* spelling: significant

Signed-off-by: Josh Soref <[email protected]>

* spelling: specifically

Signed-off-by: Josh Soref <[email protected]>

* spelling: substitute

Signed-off-by: Josh Soref <[email protected]>

* spelling: suppress

Signed-off-by: Josh Soref <[email protected]>

* spelling: terminal

Signed-off-by: Josh Soref <[email protected]>

* spelling: the

Signed-off-by: Josh Soref <[email protected]>

* spelling: title

Signed-off-by: Josh Soref <[email protected]>

* spelling: transitive

Signed-off-by: Josh Soref <[email protected]>

* spelling: version

Signed-off-by: Josh Soref <[email protected]>

* spelling: versions

Signed-off-by: Josh Soref <[email protected]>

* spelling: want

Signed-off-by: Josh Soref <[email protected]>

* spelling: wanting

Signed-off-by: Josh Soref <[email protected]>

* spelling: whether

Signed-off-by: Josh Soref <[email protected]>

* link: sbt Cached Resolution

Signed-off-by: Josh Soref <[email protected]>

* link: Testing sbt plugins

Signed-off-by: Josh Soref <[email protected]>

---------

Signed-off-by: Josh Soref <[email protected]>
2025-02-04 01:11:28 -05:00

13 KiB

Fixes with compatibility implications

  • JCenter is now opt-in. A new setting useJCenter can be set to true to re-include it, as the first external resolver to find library dependencies. #2217/#2467 by @eed3si9n
  • Adds withInterProjectFirst to the update option, which is enabled by default. When set to true, inter-project resolver will be prioritized above all resolvers and Ivy cache. #1827 by @eed3si9n
  • Fixes update option's withLatestSnapshots so it handles modules without an artifact. This flag will be enabled by default. #1514/#1616/#2313 by @eed3si9n
  • No longer passes -J<flag> options to the local Java compiler. #1968/#2272 by @Duhemm
  • Fixes auto imports for auto plugins in global configuration files. Because this is not source compatible with 0.13.x, the fix is enabled only when sbt.global.autoimport flag is true. #2120/#2399 by @timcharper

Improvements

  • Adds configurable compiler bridge. See below.
  • Adds initial support for Dotty. See below
  • Adds settings for granular inter-project dependency tracking. See below.
  • Scala version used by the build is updated to 2.10.6. #2311 by @eed3si9n
  • If publishMavenStyle is true, update task warns when it sees intransitive dependencies, which do not translate to Maven. #2127 by @jsuereth
  • Adds Def.settings, which facilitates mixing settings with seq of settings. See below.
  • sbt Serialization is updated to 0.1.2. #2117 by @dwijnand
  • Hides the stack trace on compilation error in build definition. #2071/#2091 by @Duhemm
  • Makes the dummy Logger.Null public. #2094 by @pdalpra
  • Uses diagnostic classes to get lines contents in local Java compiler. #2108/#2201 by @fkorotkov
  • Adds logging of javaOptions. #2087/#2103 by @pdalpra
  • Warns when javaOptions are defined but fork is set to false. #2041/#2103 by @pdalpra
  • Adds an Append.Sequence instance for List to allow +=/++= on developers setting. #2107/#2114 by @pdalpra
  • Drops sealed from the typeclasses in Append. #2322 by @dwijnand
  • Fixes compilation warnings in sbt's codebase, and other clean ups. #2112/#2137/#2139/#2142 by @pdalpra
  • Adds localIfFile to MavenRepository, to force artifacts to be copied to the cache. #2172 by @dwijnand
  • Adds Resolver.bintrayIvyRepo(owner, repo). #2285 by @dwijnand
  • Non-static annotation changes are no longer tracked by the incremental compiler. #2343 by @romanowski
  • Reduces the memory usage of API info extraction in the incremental compiler. #2343 by @adriaanm
  • Memory-related options can now be overridden individually via the -J options. sbt/sbt-launcher-package#105

Bug fixes

  • Fixes the false positive of inconsistent duplicate warnings. #1933/#2258 by @Duhemm
  • Fixes task scheduling performance on large builds by skipping checks in sbt.Execute. #2302/#2303 by @jrudolph
  • Fixes changes in value classes by registering signatures of method before and after erasure. #1171/#2261 by @Duhemm
  • Updated Ivy to merge IVY-1526 fix. sbt/ivy#14/#2118 by @jsuereth
  • Fixes updateClassifiers downloading updated snapshot sources and docs. #1750/sbt/ivy#17/#2163/sbt/ivy#18/#2186 by @dwijnand
  • Fixes updateClassifiers on Ivy modules without default configuration. #2264 by @eed3si9n/@Duhemm
  • Updated JLine to version 2.13. #1681/#2173
  • Changing the value of a constant (final-static-primitive) field will now correctly trigger incremental compilation for downstream classes. This is to account for the fact that Java compilers may inline constant fields in downstream classes. #1967/#2085 by @stuhood
  • Fixes classfile location detection. #2214 by @stuhood
  • Fixes a few typos in keys descriptions. #2092 by @pdalpra
  • Avoids the use of ListBuffer#readOnly. #2095 by @adriaanm
  • Expands transitive dependency exclusions when using sbt-maven-resolver-plugin #2109 by @jsuereth
  • Fixes incremental compilation of traits by including private members into the API hash. #2155/#2160 by @Duhemm
  • Fixes name hashing by removing class private members from the hash. #2324/#2325 by @gkossakowski
  • Fixes name hashing error messages. #2158 by @stuhood
  • Adds more robustness to tasks and settings command. #2192 by @DavidPerezIngeniero
  • Fixes Java compilation inconsistencies between sbt and javac by always failing if the local Java compiler reported errors. #2228/#2271 by @Duhemm
  • Fixes JavaErrorParser to parse non-compile-errors #2256/#2272 by @Duhemm
  • Fixes launcher configuration to add sbt-ivy-snapshots repository to resolve nightly builds. @eed3si9n
  • Fixes performance issues during tree traversal in the incremental compiler. #2343 by @adriaanm
  • Fixes the tracking of self types and F-bounded existential types in the incremental compiler. #2343 by @adriaanm
  • Avoid CCE when scalac internally uses compileLate. #2453 by @retronym
  • Fixes the memory-related options overriding SBT_OPTS. sbt/sbt-launcher-package#101 by @eed3si9n

Configurable Scala compiler bridge

sbt 0.13.11 adds scalaCompilerBridgeSource setting to specify the compiler bridge 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/#2197/#2336 by @Duhemm

Dotty awareness

sbt 0.13.11 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 and an example project that uses it is available at smarter/dotty-example-project.

#2344 by @smarter

Inter-project dependency tracking

sbt 0.13.11 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 dependent 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/#2354 by @eed3si9n

Def.settings

Using Def.settings it is now possible to nicely define settings as such:

val modelSettings = Def.settings(
  sharedSettings,
  libraryDependencies += foo
)

#2151 by @dwijnand