Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Let instant execution serialize enum subtypes correctly

Fixes #12301

  1. … 1 more file in changeset.
Enable new Kotlin type inference on `:instantExecution`

  1. … 1 more file in changeset.
Do not write the source paths for a `CopySpec` multiple times to the instant execution cache.

Previously, these were written once when the `CopySpec` was serialized and once when the associated input property spec was serialized.

This commit adds some special case handling for this case. It also preserves the identity of each `FileTree` and `FileCollection` instance for each task to enable short circuiting when the same file collections are referenced via multiple paths, such as in the `CopySpec` case.

  1. … 42 more files in changeset.
Make instant execution serialization test easier to debug

  1. … 1 more file in changeset.
Revert some changes to artifact transform execution, as these changes introduce a performance regression.

  1. … 30 more files in changeset.
Merge some logic used for executing an initial scheduled artifact transform node and for visiting transform outputs included in the contents of an `ArtifactCollection` or `FileCollection`.

  1. … 10 more files in changeset.
Serialize the parameters of an artifact transform to the instant execution cache, rather than attempting to isolate the parameters and then serializing the result.

This allows the parameters to include files and other inputs that may need to be built before they can be queried, for example when the output of some transform is used as an input parameter to another transform (which is something different to chaining of several transforms to produce an output). An implication of this change is that the artifact parameter isolation now happens every time the cache is reused, whereas previously the isolation happened once on write. This can be improved later.

  1. … 11 more files in changeset.
Attribute serialization failures of unsupported internal types to Gradle runtime

  1. … 9 more files in changeset.
Allow a build services to be used as the parameter for isolated objects, such as other build services, artifact transforms or worker API actions.

There are still some missing pieces to this:

- Worker classloader and process isolation is not supported.

- Services are stopped in the order they are created, rather than in reverse dependency order.

- Parallel usage constraints specified for these services are not honoured.

  1. … 17 more files in changeset.
Let value source based providers be used as task inputs

  1. … 6 more files in changeset.
Let instant execution support `Serializable` beans with only a `writeObject` method

  1. … 1 more file in changeset.
Add support for Short, Float and Double to Java serialization

  1. … 2 more files in changeset.
Serialize build service providers to the instant execution cache as a spec that is used to recreate the service instance in subsequent builds.

  1. … 10 more files in changeset.
Change instant execution serialization to handle abstract model types.

Reuse the approach used to serialize the state of abstract task types.

  1. … 9 more files in changeset.
Cache the constructors used to deserialize beans from the instant execution cache across build invocations.

  1. … 7 more files in changeset.
Record the ClassLoader associated with each class that is serialized to the instant execution cache, and use this to make class lookup on deserialize faster and to deal correctly with multiple classes with the same name.

Move some ClassLoader lifecycling from Groovy DSL script compilation to `ClassLoaderScope`, so that the scope takes care of creating and caching the script ClassLoader.

  1. … 30 more files in changeset.
Serialize the contents of `ArtifactCollection` instances to the instant execution cache.

With this change, up-to-date `assembleDebug` builds work for the Santa Tracker sample and the simple test build.

  1. … 7 more files in changeset.
Replace some direct instantiation of `FileResolver` instances with a service.

  1. … 24 more files in changeset.
Replace `nullOutputStream()` by `NullOutputStream.INSTANCE`

Signed-off-by: Rodrigo B. de Oliveira <rodrigo@gradle.com>

Suppress `unused` warnings from test

Let instant execution report include trace of `Serializable` beans

  1. … 1 more file in changeset.
Preserve identity of `Serializable` objects

  1. … 3 more files in changeset.
Extract `SerializableWriteReplaceCodec` from `BeanCodec`

  1. … 5 more files in changeset.
Improve instant execution support for Java serialization

Properly handle deserialization of graphs containing a mix of

`java.io.Serializable` beans and plain beans by introducing

`ReadContext.immediateMode`. In immediate mode, reentrant `read` calls

are not suspended for compatibility with the non-suspending semantics

of `ObjectInputStream.readObject`.

The downside of non-suspending semantics is the risk of

`StackOverflowErrors` caused by deep graphs.

    • -0
    • +254
    ./UserTypesCodecTest.kt
  1. … 5 more files in changeset.