Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Beautify converted Spock test

Upgrade JaCoCo library to a Java 9-compatible version

Include source code reference

Tests do not work on Java 9

Add new JaCoCo plugin feature to release notes

    • -0
    • +14
Convert IncrementalJavaCompileIntegrationTest to Spock

Refine tests

Do not recompile the world whenever a dependency contains a constant

This commit introduces smarter incremental compilation, by doing an analysis of what constants

are actually in use. Whenever a class is compiled, we're looking for two different things:

- constants declared in the class which are candidate to inlining by the `javac` compiler (this includes all primitive

types plus `String`)

- literals found anywhere in method bodies

Then whenever a dependency is changed, we're looking for the constants it declared, then look in the

previous analysis what classes could be affected, because they had literals of the same value. We only

recompile those classes instead of the whole world.

There are limitations to this approach:

- there are no "constants" in bytecode, but JVM instructions like `ACONST_1` or `LDC`. Therefore, we're using

the hashcode of the literals, and not the literals themselves. This is done to avoid very complex analysis linked

to type conversions. So typically if 2 strings have the same hashcode, files would be recompiled even if they

shouldn't have.

- since we're working at the bytecode level, we don't know if the literal was relevant or not, which has implications

for the next bullet point:

- not all constants are born equal. There's a high chance of recompilation if a dependency changed and defined

a constant between -1 and 5, or `true` or `false`. The reason is simple: those are much more frequent in bytecode

than anything else (that's why there are predefined instructions for those). Typically, it's not uncommon to find

an indexed loop starting from `0`, which would involve the literal `0` in bytecode (found with `ICONST_0`). Then

if a dependency has a constant like `public static int MAX_ALLOWED_ERRORS = 0;`, any change to that class would

likely retrigger compilation of a lot of classes. Similarly, it's worth noting that in bytecode `false` cannot

be distinguished from `0` (unless looking at the next instructions to look for type conversion).

  1. … 5 more files in changeset.
Fixing README link for contributing to Gradle.

Add coverage for build cache

Recognize contributors in release notes

    • -12
    • +7
Fix task name in sample project

Change targeted release version

Use task name that better expresses intent

    • -43
    • +0
    • -0
    • +43
Assign group and description for tasks

Tightening up test for memory status updates

Report task should fail if any of the input file does not exist

Ignore running tests on Java 9

Add documentation for expected status codes

+review REVIEW-6413

Use HttpStatus instead of int constants

+review REVIEW-6413

Fix crossversion testkit testing for NO_SOURCE task outcome

Revert timeout handling back to spock

Handle build cache HTTP status codes as recoverable/non-recoverable

+review REVIEW-6413

Fix checkstyle errors

Fix task validation to recognize `@CompileClasspath`

Make compile classpath snapshotting more robust

This commit changes the implementation of compile classpath snapshotting in several ways, to make more robust:

- we ignore resources

- the default compile classpath snapshotter includes resources in the computed hash, so it will typically

fail to recognize that 2 libraries are ABI compatible if they include a resource which have changed. Workaround

for this is enabling the incremental compiler.

- there's a global flag to fallback to the old compile classpath snapshotting in case a bug was found. This is

only meant to be used in emergency, until we fix the bug.

Revert "Fix flakiness due to the MemoryStatus output"

This reverts commit ca754a8b507894359745c79d3129bab4bab78990.

Revert "Backport fix for google/googletest#920"

This reverts commit 18c75be76891206300ff505e57d3f35c62d678ec.

Revert "Backport fix for google/googletest#920"

This reverts commit 18c75be76891206300ff505e57d3f35c62d678ec.

Add javadoc for JUnitXmlTestEventsGenerator