sbt, the interactive build tool
Go to file
Mark Harrah 658c3d06c4 Use public inherited dependencies in incremental compilation invalidation.
1. All parents of public/exported classes/modules/packages are tracked as
   'publicInherited' dependencies.  These are dealiased and normalized so
    that the dependency is on the actual underlying template and not the
    source enclosing the alias.
2. All CompilationUnit.depends dependencies are direct dependencies.  These
   include inherited dependencies.
3. When invalidating changed internal sources,
	a. Invalidate all inherited dependencies, transitively and include the
      originally modified sources,
	b. Invalidate all direct dependencies of these sources,
	c. Exclude any sources that were compiled in the previous step unless they
      depend on a newly invalidated source.
4. Invalidate changed external sources in the same way as #3 but remove the
   external sources from the final set.

Only public inheritance dependencies need to be considered because a template
that is not accessible outside its source file and that inherits from another
file can be handled as a normal, direct dependency.  Because the template
isn't public, changes to its API will not propagate outside of the source
file.

Several existing tests cover the correctness, especially:

1. transitive-a covers direct, transitive dependencies with inferred return
   types
2. transitive-b covers inherited, transitive dependencies with inferred return
   types

There are two new tests, one that tests that public inherited dependencies are
tracked and one that verifies the basic invalidation progression.
More tests are needed to verify the improvements that this algorithm brings:

1. Inheritance-related dependencies are processed in one step to avoid the
   otherwise unavoidable several steps.
2. Only immediate direct dependencies are ever processed, which should in many
   typical cases avoid large invalidation sets.
2013-04-26 22:36:06 -04:00
cache deprecations 2013-02-25 09:24:04 -05:00
compile Use public inherited dependencies in incremental compilation invalidation. 2013-04-26 22:36:06 -04:00
interface Record and persist public inheritance dependencies. 2013-04-26 22:35:27 -04:00
ivy Better auto-generated IDs for default projects. Fixes #554. 2013-04-10 20:15:28 -04:00
launch work around URI problems with encoding and resolving. Fixes #725 2013-04-12 12:47:44 -04:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
main Scope packagedArtifacts for publish*Configuration to publish* to make it easier to filter artifacts for different publish targets. 2013-04-26 18:51:58 -04:00
project back to a snapshot version 2013-03-18 11:47:45 -04:00
run Fork run directly with 'java' to avoid additional class loader from 'scala' command. Fixes #702. 2013-04-05 09:02:24 -04:00
sbt Use public inherited dependencies in incremental compilation invalidation. 2013-04-26 22:36:06 -04:00
scripted drop canonicalization of files on classpath and other cleanup. Fixes #723. 2013-04-09 20:13:06 -04:00
src Update Using-Sonatype.rst 2013-04-25 08:46:40 -04:00
tasks ManagedStreams cannot be sealed if Streams is to be externally implemented 2013-02-25 09:24:05 -05:00
testing hashCode for TestDefinition 2013-02-25 09:24:05 -05:00
util Record and persist public inheritance dependencies. 2013-04-26 22:35:27 -04:00
.gitignore support defining Projects in .sbt files 2012-12-09 20:40:41 -05:00
CONTRIBUTING.md 0.13.0-M1 2013-03-18 10:28:02 -04:00
LICENSE * move Environment classes to util/env module 2010-07-14 19:24:50 -04:00
NOTICE * move Environment classes to util/env module 2010-07-14 19:24:50 -04:00
README.md fix link to CONTRIBUTING from README 2013-01-07 10:01:58 -05:00
api.specification Macro def aware recompilation. 2012-03-04 17:35:51 +01:00
scripted.specification New scripted test framework 2009-11-09 09:34:52 -05:00

README.md

sbt 0.13

This is the 0.13.x series of sbt.

  • Setup: Describes getting started with the latest binary release.
  • See CONTRIBUTING for how to build from source, open an issue, fix or add documentation, or submit a pull request.
  • FAQ: Explains how to get help, how to migrate from 0.7.7, and more.
  • There is a video of a demo given at Scala Days 2011 based on sbt 0.10.0 that gives an introduction to the configuration system in sbt 0.10.0 and later. See the documentation for current information.
  • Google Code: hosts sbt 0.7.7 and earlier versions