Cédric Champeau

Optimize `ModuleVersionResolveException`

During resolution, we may throw a lot of `ModuleVersionResolveException`

or `ModuleVersionNotFoundException`. Often, one per repository, when

a version is not found in that repository. But in the end, the version

may be found, or a different version may be selected, in which case we

don't care about the failure, which is only used if _no version_ could

be selected.

As a consequence, we had a lot of overhead in both generating a stack

trace **and** an error message, that would never be used.

This commit reworks those special exceptions used during resolution so

that we avoid filling the stack trace (we don't care) and we create

the message lazily (only if it will actually be used).

  1. … 9 more files in changeset.
Optimize `ModuleVersionResolveException`

During resolution, we may throw a lot of `ModuleVersionResolveException`

or `ModuleVersionNotFoundException`. Often, one per repository, when

a version is not found in that repository. But in the end, the version

may be found, or a different version may be selected, in which case we

don't care about the failure, which is only used if _no version_ could

be selected.

As a consequence, we had a lot of overhead in both generating a stack

trace **and** an error message, that would never be used.

This commit reworks those special exceptions used during resolution so

that we avoid filling the stack trace (we don't care) and we create

the message lazily (only if it will actually be used).

  1. … 9 more files in changeset.
Optimize `ModuleVersionResolveException`

During resolution, we may throw a lot of `ModuleVersionResolveException`

or `ModuleVersionNotFoundException`. Often, one per repository, when

a version is not found in that repository. But in the end, the version

may be found, or a different version may be selected, in which case we

don't care about the failure, which is only used if _no version_ could

be selected.

As a consequence, we had a lot of overhead in both generating a stack

trace **and** an error message, that would never be used.

This commit reworks those special exceptions used during resolution so

that we avoid filling the stack trace (we don't care) and we create

the message lazily (only if it will actually be used).

  1. … 10 more files in changeset.
Optimize `ModuleVersionResolveException`

During resolution, we may throw a lot of `ModuleVersionResolveException`

or `ModuleVersionNotFoundException`. Often, one per repository, when

a version is not found in that repository. But in the end, the version

may be found, or a different version may be selected, in which case we

don't care about the failure, which is only used if _no version_ could

be selected.

As a consequence, we had a lot of overhead in both generating a stack

trace **and** an error message, that would never be used.

This commit reworks those special exceptions used during resolution so

that we avoid filling the stack trace (we don't care) and we create

the message lazily (only if it will actually be used).

  1. … 10 more files in changeset.
Optimize `ModuleVersionResolveException`

During resolution, we may throw a lot of `ModuleVersionResolveException`

or `ModuleVersionNotFoundException`. Often, one per repository, when

a version is not found in that repository. But in the end, the version

may be found, or a different version may be selected, in which case we

don't care about the failure, which is only used if _no version_ could

be selected.

As a consequence, we had a lot of overhead in both generating a stack

trace **and** an error message, that would never be used.

This commit reworks those special exceptions used during resolution so

that we avoid filling the stack trace (we don't care) and we create

the message lazily (only if it will actually be used).

  1. … 10 more files in changeset.
Experiment with Graal native image launcher

To try it:

- run `gradlew launcher:nativeImage`

- copy the `subprojects/launcher/build/graal/launcher-native` file into a local Gradle install `bin` directory

- go into your local Gradle distribution directory and run `bin/launcher-native -Dorg.gradle.native=false -Djava.home=/opt/jdk1.8.0 -d`

(adapt the JDK path accordingly)

    • -0
    • +138
    /subprojects/launcher/graal-jni.json
    • -0
    • +5
    /subprojects/launcher/graal-proxies.json
    • -0
    • +119
    /subprojects/launcher/graal-reflect.json
    • -1
    • +14
    /subprojects/launcher/launcher.gradle.kts
Merge branch 'release'

Fix merge conflict

Merge branch 'release'

Update test case to illustrate error

The test case used a String for the Java version, which works,

but in practice the attribute is an `Integer`. Coercion did the

magic, but if we use the _real_ type, it would have failed.

Update test case to illustrate error

The test case used a String for the Java version, which works,

but in practice the attribute is an `Integer`. Coercion did the

magic, but if we use the _real_ type, it would have failed.

Update test case to illustrate error

The test case used a String for the Java version, which works,

but in practice the attribute is an `Integer`. Coercion did the

magic, but if we use the _real_ type, it would have failed.

Fix class cast exception when serializing integer attributes

Hotfix for #8725

Fix class cast exception when serializing integer attributes

Hotfix for #8725

Fix class cast exception when serializing integer attributes

Hotfix for #8725

Fix Java usage disambiguation rules

This commit makes sure that if for an API, we have 2 runtime

candidates, we select the most appropriate runtime. This

happened in a Kotlin test project.

Fix Java usage disambiguation rules

This commit makes sure that if for an API, we have 2 runtime

candidates, we select the most appropriate runtime. This

happened in a Kotlin test project.

Rework preamble/highlights

    • -1
    • +1
    /subprojects/docs/src/docs/release/notes.md
Rework preamble/highlights

    • -1
    • +1
    /subprojects/docs/src/docs/release/notes.md
Add logging for binary store

This is to debug #8489

Add logging for binary store

This is to debug #8489

Minor tweak to notes.

    • -1
    • +1
    /subprojects/docs/src/docs/release/notes.md
Minor tweak to notes.

    • -1
    • +1
    /subprojects/docs/src/docs/release/notes.md
Fix inner link to feature variants

    • -1
    • +3
    /subprojects/docs/src/docs/release/notes.md
Fix inner link to feature variants

    • -1
    • +3
    /subprojects/docs/src/docs/release/notes.md
Fix Groovy/Java library compatibility

This commit fixes the Groovy + Java Library compatibility,

by making sure that if, and only if, the Java Library is

applied on a project that also applies the Java Library

plugin, then the correct variants is selected.

Merge branch 'jxn/7398-fix-groovy-and-java-library-plugin-interaction' of https://github.com/JamesXNelson/gradle into JamesXNelson-jxn/7398-fix-groovy-and-java-library-plugin-interaction

Further polish the feature variants section

    • -2
    • +3
    /subprojects/docs/src/docs/release/notes.md
Further polish the feature variants section

    • -2
    • +3
    /subprojects/docs/src/docs/release/notes.md
Polish Gradle Module Metadata section

    • -0
    • +3
    /subprojects/docs/src/docs/release/notes.md