After introduction of KGP Lifecycle stages the application of
Language Settings to Targets and Compilation (from source set level)
wasn't synchronized. Which led to data flow race. Delaying this
application to correct stages solves the data flow race.
^KT-59063
with KGP lifecycles. It is unknown whether given source set is in main
compilation or not until certain lifecycle stage (AfterFinaliseRefinesEdges)
Therefore, configuring kotlin extension parameters that should
be delayed.
^KT-59063
In gradle it is possible to add dependency to configuration which
is resolved to itself. It is possible due to nature of Configuration
that can contain both: dependencies and artifacts. When configuration
has dependency on itself, it practically means that this dependency
will be resolved to configuration's artifacts.
LazyResolvedConfiguration should be capable to handle such dependencies
Android preset needs to be removed in favor of Android Pluggable Target
Changes were originally introduced by commit:
becf50ee0f
but then, unfortunately, reverted due to binary compatibility issues
^KT-59049 Verification Pending
^KT-57903 Verification Pending
This reverts commit becf50ee
These changes are binary incompatible due to move of methods with
default arguments.
^KT-59049 In Progress
^KT-57903 In Progress
Still supported IDEA/Kotlin plugin releases relies on
'kotlin-annotation-processing-gradle' artifact name in compiler plugins
classpath. I've restored this publication usage until we will stop
support Kotlin plugin versions that doesn't know about
'kotlin-annotation-processing-embeddable' name.
^KTIJ-25586 Fixed
Those are dependencies that point back to the original project.
This can happen with two projects like
```
// project a
kotlin {
commonMain.get().dependencies {
api(project(":b"))
}
}
// project b
kotlin {
commonTest.get().dependencies {
implementation(project(":a"))
}
}
```
Where b(test) -> a -> b
^KT-59020 Verification Pending
Such approach, while does not conform conceptually, ensures
compatibility with existing user build scripts and works more logically
for external users: https://github.com/gradle/gradle/issues/18352
^KT-59056 Fixed
Before this change `./gradlew help` (with native enabled)
Created immediately: 1322
Created during configuration: 1541
after this change:
Created immediately: 596
Created during configuration: 1509
To know more about configuration avoidance: https://docs.gradle.org/current/userguide/task_configuration_avoidance.html
MPP projects import relies that `-Xexplicit-api` flag is present in
DefaultLanguageSettingsBuilder.freeCompilerArgs property to enable
related inspections.
^KT-59063 Fixed
Use a newer version of the compiler with changes to archive name
(contains arch). Also, remove obsolete test for the old version.
Merge-request: KT-MR-10399
Merged-by: Pavel Punegov <Pavel.Punegov@jetbrains.com>
Apparently users are using these constants in their build script
configurations. Until we will provide proper public API we should keep
such constants as public.
^KT-58916 Fixed