Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Store hierarchy as a list

This changes the backing storage of the hierarchy to a list, improving iteration.

Avoid more allocations

More efficient conflict registration

Instead of iterating over all conflicts (the list can grow big) and finding out if one of the conflicts

participants is the same as the current participants, we can build a reverse index (participant -> conflict)

and use it. This makes the check O(1) instead of O(n) (plus intersection computation).

Signed-off-by: Cedric Champeau <>

First shot at input discovery

Mention changes in the eclipse plugin in the release notes

    • -0
    • +4
Source folders define separate output dirs in Eclipse classpath

Add test coverage when deleting all sources for both Swift and Cpp (#2920)

* Add test coverage when deleting all sources for both Swift and Cpp

It also fixes the InstallExecutable task to correctly clean the output when the input is missing.

* Remove pdb files if present when cleaning incremental output

Avoid allocation of an array when there's no or only one unattached dependency

Avoid allocation of an array list when there's no or only one incoming edge

Reduce number of lists being created

Remove unnecessary return

Signed-off-by: Cedric Champeau <>

Temporarily ignore performance tests while I'm investigating

Ignore DescriptiveChange in ChangesOnlyIncrementalTaskInputs.outOfDate(#1224) (#2979)

In current InputFilesTaskStateChanges implementation, file properties

changes and file changes are not separated. This would result in that

DescriptiveChange are added into inputFileChanges and ClassCastException

in ChangesOnlyIncrementalTaskInputs.doOutOfDate (#1224).

This PR ignores the DescriptiveChange in ChangesOnlyIncrementalTaskInputs.outOfDate

Support zulu9 version number(#2992) (#2994)

zulu JDK 9 introduces version number format '' which

can't be recognized by Gradle. This fix adjusts the recognition


Support zulu9 version number(#2992) (#2994)

zulu JDK 9 introduces version number format '' which

can't be recognized by Gradle. This fix adjusts the recognition


Convert userguide to asciidoc, war to writing (#2989)

    • -0
    • +132
    • -184
    • +0
Script plugins can use the plugins {} DSL to define their dependencies on builtin plugins

Explode the beast into smaller pieces

This commit extracts all inner classes from `DependencyGraphBuilder`, as well as the builder itself, into its own package. The reason is that this class

had just became too big, and that there was a lot of shared state. By exploding it into well defined classes of their own, state can be locked and we can

effectively track where it is mutated. While not yet perfect, this should prevent headaches to future maintainers.

Improve attribute matching across build boundaries to also work correctly for values created using `ObjectFactory.named()`.

  1. … 7 more files in changeset.
Initial support for attribute matching that works across ClassLoader boundaries. In this change, enum values with the same class name and enum value are considered matching regardless of which ClassLoader the enum class is defined in.

Changed attribute matching to consider two attributes with the same name as the _same_ attribute, failing if the producer and consumer values have types that are not compatible. Previously, two attributes with the same name and different types would be considered distinct attributes, leading to some confusing behaviour when types are mismatched.

Removed validation from `Attribute.of()`, as the set of valid types is a function of how and where the attribute is used. Instead, moved the validation to `AttributeContainer.attribute()` to accept anything that can be made isolated.

Added some functional test coverage for how attribute values behave.

Changed `AttributeValue` and `ImmutableAttributes` to be interfaces.

Added query methods to `ImmutableAttributes` to allow the value of an attribute to be queried as an `AttributeValue` without eagerly unpacking the value of the attribute.

This is just a restructure, the value is still eagerly unpacked in the query method in this change.

Retain the value of a variant attribute as an isolated value, rather than retaining the original value. Attribute values are snapshot at the point where the attribute is registered and are isolated from further changes to the original value.

This change allows attribute matching to more safely happen in parallel and means that attribute values can behave more consistently with other features that use isolated and snapshot values, such as task inputs or artifact transforms.

  1. … 4 more files in changeset.
Added some unit test coverage for `DefaultImmutableAttributesFactory`.

Added type parameters to some methods.

Added some Javadocs to describe the supported types that can be used for isolated action parameters.

Fixed isolation of values created using `ObjectFactory.named()`.

Allow values created using `ObjectFactory.named()` to be used with `@Input` task properties, and in other places where value snapshots are used to provide isolation, such as the parameters to artifact transforms.

This change makes these types known to the value snapshot infrastructure, to allow the infrastructure to be used for variant attribute values, which make heavy use of named values.