Now common SourceSet output will have '_common' suffix, while all
variants will have the same name - '<module-name>.kotlin_module'.
This change is required for KSP as short-term workaround, as they
are using some internal properties/methods, which was mangled before
this change and hard to access in different variants.
^KT-52138 Fixed
The test project will be compiled and proves that
'platform.posix.DIR' retains it's 'CPointed' supertype.
The test is expected to fail on platforms that do not support
macos (windows and linux), since the issue seems to be caused
by optimistic, single platform propagation.
Extending by external plugins:
project.kotlinArtifactsExtension.apply {
artifactConfigs.all {
//add custom extension to artifact config DSL
(it as ExtensionAware).extensions.create("myConfig", Config::class.java)
}
artifacts.all {
val config = it.extensions.findByName("myConfig") as Config
//configure additional tasks, etc
//here we can use artifact parameters
}
}
But still compile stdlib, reflect, kotlin.test and scripting runtimes
with JVM target 1.6 to simplify migration from Kotlin 1.6 to 1.7.
#KT-45165 Fixed
This flag was introduced for KT-21030 (see also KT-31027), to change JVM
target 1.6 to 1.8 if Android options declare source/target compatibility
with JDK 1.8.
After JVM target 1.8 became the default for Kotlin (KT-29405), the logic
was changed in e9436da858 to the reverse: if Android options declare
source/target compatibility 1.6, then also use JVM target 1.6. Note that
at that point, the problem with usages of default interface methods
described in KT-21030 became obsolete, because it described a runtime
crash when Kotlin tooling failed to recognized that JVM target >= 1.8
should be used -- which was now always the case, unless you explicitly
opted in with `-jvm-target 1.6` (which would make little sense).
Now that we're removing support for JVM target 1.6 in KT-45165, there is
no use in this flag anymore. Even if Android options declare
source/target compatibility 1.6, Kotlin should still use the minimal
supported version for the JVM target, which is now 1.8. And since 1.8
is the default, no changes to the compiler options are needed.
`normalizeComponentsXmlEndings` task was using `zipTree` method of `project`. The `ArchiveOperations` method should be used to work properly with configuration cache.
#KT-44611 In Progress
This value class wraps Long on JVM and Native thus reducing allocations
in time measurement scenarios when the default monotonic time source is
statically known.
KT-46132
This interface is a top-level interface for all Kotlin plugins.
Additionally it provides 'pluginVersion' property allowing to get
current applied plugin version
^KT-50869 Fixed
^KT-48008 Fixed
Add APIs that describe tasks, so that AGP can configure them. This
change all adds support to *Config objects to support configuring
tasks when there is no access to internal KGP objects.
^KT-50869 In Progress
... move more configuration logic to TaskConfigAction classes. This is
to avoid directly accessing tasks to configure them. The TaskConfigAction
objects should eventually have access to all information that is required
to configure the task, and they should compute the final values of
all properties.
This will also allow 3P plugins to configure Kotlin tasks, without
the need to create KGP internal objects.
^KT-50869 In Progress
Such way those implementations are accessible from the common code.
To avoid putting stub implementations in every variant, it is also
possible to add default implementation from the common code if variant
hasn't register own.
As an example of usage, support for removed in Gradle 7.0 'maven' plugin
was moved into 'main' variant (Gradle 6.7.1 - 6.9.3).
^KT-49227 In Progress