From c1d0afc43116fee1244702dab0fc9f1e80d712e9 Mon Sep 17 00:00:00 2001 From: Iveta Kovalenko Date: Fri, 21 Aug 2026 14:33:35 +0200 Subject: [PATCH 1/2] [KGP] Make the jvm common sources IC Gradle property user-facing Make `kotlin.jvm.enableIncrementalCompilationOfCommonSources` the user-facing name for the jvm property: it leaves the `kotlin.internal.*` namespace, and "unsafe" is dropped because on jvm the correctness problem behind the default is resolved, so the name says what the property does instead of how it used to behave. Only the jvm property is renamed. js and wasm have no counterpart of `enableJvmClasspathMetadata`, so the optimization is still unsafe there and they keep their `kotlin.internal.*` names. ^KT-88762 Fixed ^KT-88057 --- .../kotlin/gradle/FusStatisticsIT.kt | 4 ++-- .../mpp/CommonCodeWithPlatformSymbolsIT.kt | 2 +- .../mpp/JvmClasspathMetadataIncrementalIT.kt | 2 +- .../mpp/KmpIncrementalCompilationMiscIT.kt | 4 ++-- .../kotlin/gradle/mpp/KmpIncrementalITBase.kt | 2 +- .../mpp/PerTargetUnsafeOptimizationsIT.kt | 4 ++-- ...actExpectActualIncrementalCompilationIT.kt | 2 +- .../kotlin/gradle/testbase/BuildOptions.kt | 6 ++--- .../gradle/plugin/PropertiesProvider.kt | 23 +++++++++++-------- .../GradleDeprecatedPropertyChecker.kt | 4 ++-- .../configuration/KotlinCompileConfig.kt | 2 +- ...UnsafeOptimizationsForMultiplatformTest.kt | 2 +- .../statistics/metrics/BooleanMetrics.kt | 2 +- 13 files changed, 32 insertions(+), 27 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt index af37499df581d..9ccd67a6db466 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt @@ -350,7 +350,7 @@ class FusStatisticsIT : KGPBaseTest() { "compileKotlinJvm", "-Pkotlin.session.logger.root.path=$projectPath", buildOptions = defaultBuildOptions.copy( jvmClasspathMetadata = true, - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, ), ) { assertOutputDoesNotContainFusErrors() @@ -364,7 +364,7 @@ class FusStatisticsIT : KGPBaseTest() { "clean", "compileKotlinJvm", "-Pkotlin.session.logger.root.path=$projectPath", buildOptions = defaultBuildOptions.copy( jvmClasspathMetadata = false, - enableJvmUnsafeIncrementalCompilationForMultiplatform = false, + enableJvmIncrementalCompilationOfCommonSources = false, ), ) { assertOutputDoesNotContainFusErrors() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/CommonCodeWithPlatformSymbolsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/CommonCodeWithPlatformSymbolsIT.kt index 5e6c790b03699..f36aa56b59391 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/CommonCodeWithPlatformSymbolsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/CommonCodeWithPlatformSymbolsIT.kt @@ -42,7 +42,7 @@ abstract class CommonCodeWithPlatformSymbolsITBase( private fun BuildOptions.withUnsafeOptimizationsForMultiplatform(enabled: Boolean): BuildOptions = when (platformType) { KotlinPlatformType.js -> copy(enableJsUnsafeIncrementalCompilationForMultiplatform = enabled) KotlinPlatformType.wasm -> copy(enableWasmUnsafeIncrementalCompilationForMultiplatform = enabled) - else -> copy(enableJvmUnsafeIncrementalCompilationForMultiplatform = enabled) + else -> copy(enableJvmIncrementalCompilationOfCommonSources = enabled) } private val platformSourceSet = "${platformType.name}Main" diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/JvmClasspathMetadataIncrementalIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/JvmClasspathMetadataIncrementalIT.kt index 6f01508cdaf2e..a2400876eb426 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/JvmClasspathMetadataIncrementalIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/JvmClasspathMetadataIncrementalIT.kt @@ -24,7 +24,7 @@ class JvmClasspathMetadataIncrementalIT : KGPBaseTest() { get() = super.defaultBuildOptions.copy( logLevel = LogLevel.DEBUG, languageVersion = "2.0", - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, ) @GradleTest diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalCompilationMiscIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalCompilationMiscIT.kt index c7ff7c0bd98ca..45c8725b96a62 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalCompilationMiscIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalCompilationMiscIT.kt @@ -29,7 +29,7 @@ class KmpIncrementalCompilationWithLocalClassesIT : KGPBaseTest() { override val defaultBuildOptions: BuildOptions get() = super.defaultBuildOptions.copy( - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, enableJsUnsafeIncrementalCompilationForMultiplatform = true, enableWasmUnsafeIncrementalCompilationForMultiplatform = true, ).disableIsolatedProjectsBecauseOfJsAndWasmKT75899() @@ -168,7 +168,7 @@ class KmpIncrementalCompilationSetExpansionIT : KGPBaseTest() { override val defaultBuildOptions: BuildOptions get() = super.defaultBuildOptions.copy( // it's more convenient to set up the test project using common sourceset - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, enableJsUnsafeIncrementalCompilationForMultiplatform = true, enableWasmUnsafeIncrementalCompilationForMultiplatform = true, ).disableIsolatedProjectsBecauseOfJsAndWasmKT75899() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalITBase.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalITBase.kt index 19912544b47f7..e808fa998465d 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalITBase.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/KmpIncrementalITBase.kt @@ -28,7 +28,7 @@ abstract class KmpIncrementalITBase : KGPBaseTest() { /** * disable IC-breaking feature; it's tested separately in [org.jetbrains.kotlin.gradle.mpp.CommonCodeWithPlatformSymbolsITBase] */ - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, enableJsUnsafeIncrementalCompilationForMultiplatform = true, enableWasmUnsafeIncrementalCompilationForMultiplatform = true, ).disableIsolatedProjectsBecauseOfJsAndWasmKT75899() diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/PerTargetUnsafeOptimizationsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/PerTargetUnsafeOptimizationsIT.kt index ce26211344b57..4b660e26f54bc 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/PerTargetUnsafeOptimizationsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/PerTargetUnsafeOptimizationsIT.kt @@ -42,7 +42,7 @@ class PerTargetUnsafeOptimizationsIT : KGPBaseTest() { "kt-62686-mpp-source-set-boundary", gradleVersion, buildOptions = defaultBuildOptions.copy( - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, enableJsUnsafeIncrementalCompilationForMultiplatform = false, ) ) { @@ -68,7 +68,7 @@ class PerTargetUnsafeOptimizationsIT : KGPBaseTest() { "kt-62686-mpp-source-set-boundary", gradleVersion, buildOptions = defaultBuildOptions.copy( - enableJvmUnsafeIncrementalCompilationForMultiplatform = false, + enableJvmIncrementalCompilationOfCommonSources = false, enableJsUnsafeIncrementalCompilationForMultiplatform = true, ) ) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/smoke/AbstractExpectActualIncrementalCompilationIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/smoke/AbstractExpectActualIncrementalCompilationIT.kt index 5deaf5dcd2bdf..5511b05324ac3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/smoke/AbstractExpectActualIncrementalCompilationIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/smoke/AbstractExpectActualIncrementalCompilationIT.kt @@ -26,7 +26,7 @@ abstract class AbstractExpectActualIncrementalCompilationIT : KGPBaseTest() { override val defaultBuildOptions: BuildOptions get() = super.defaultBuildOptions.copyEnsuringK2().copy( // disable IC-breaking feature; it's tested separately in [org.jetbrains.kotlin.gradle.mpp.CommonCodeWithPlatformSymbolsITBase] - enableJvmUnsafeIncrementalCompilationForMultiplatform = true, + enableJvmIncrementalCompilationOfCommonSources = true, enableJsUnsafeIncrementalCompilationForMultiplatform = true, enableWasmUnsafeIncrementalCompilationForMultiplatform = true, logLevel = LogLevel.DEBUG, diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt index bfcab23f96474..2a76adf25c54c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/testbase/BuildOptions.kt @@ -62,7 +62,7 @@ data class BuildOptions( val languageApiVersion: String? = null, val freeArgs: List = emptyList(), val statisticsForceValidation: Boolean = true, - val enableJvmUnsafeIncrementalCompilationForMultiplatform: Boolean? = null, + val enableJvmIncrementalCompilationOfCommonSources: Boolean? = null, val enableJsUnsafeIncrementalCompilationForMultiplatform: Boolean? = null, val enableWasmUnsafeIncrementalCompilationForMultiplatform: Boolean? = null, val enableMonotonousIncrementalCompileSetExpansion: Boolean? = null, @@ -311,8 +311,8 @@ data class BuildOptions( arguments.add("-Pkotlin.test.languageVersion=$languageVersion") } - if (enableJvmUnsafeIncrementalCompilationForMultiplatform != null) { - arguments.add("-Pkotlin.internal.jvm.enableUnsafeOptimizationsForMultiplatform=$enableJvmUnsafeIncrementalCompilationForMultiplatform") + if (enableJvmIncrementalCompilationOfCommonSources != null) { + arguments.add("-Pkotlin.jvm.enableIncrementalCompilationOfCommonSources=$enableJvmIncrementalCompilationOfCommonSources") } if (enableJsUnsafeIncrementalCompilationForMultiplatform != null) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt index 0c7820833c002..4c01f1ef72c70 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/PropertiesProvider.kt @@ -616,17 +616,22 @@ internal class PropertiesProvider private constructor(private val project: Proje .orElse(KotlinCompilerArgumentsLogLevel.DEFAULT) /** - * Without unsafe optimization: in k2, if common source is dirty, module will be rebuilt. - * With unsafe optimization: regular IC logic is used. Common sources might see declarations from platform sources. See KT-62686 + * When disabled: in k2, if a common source is dirty, the whole module is rebuilt. + * When enabled: common sources are compiled incrementally, and [enableJvmClasspathMetadata] keeps them from seeing + * platform declarations. See KT-86703. */ - val enableJvmUnsafeOptimizationsForMultiplatform: Provider - get() = booleanProvider(PropertyNames.KOTLIN_JVM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION).orElse(false) + val enableJvmIncrementalCompilationOfCommonSources: Provider + get() = booleanProvider(PropertyNames.KOTLIN_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES).orElse(false) - /** See [enableJvmUnsafeOptimizationsForMultiplatform] */ + /** + * When disabled: in k2, if a common source is dirty, the whole module is rebuilt. + * When enabled: regular IC logic is used, and common sources might see platform declarations. There is no + * counterpart of [enableJvmClasspathMetadata] to prevent this. See KT-62686. + */ val enableJsUnsafeOptimizationsForMultiplatform: Provider get() = booleanProvider(PropertyNames.KOTLIN_JS_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION).orElse(false) - /** See [enableJvmUnsafeOptimizationsForMultiplatform] */ + /** See [enableJsUnsafeOptimizationsForMultiplatform] */ val enableWasmUnsafeOptimizationsForMultiplatform: Provider get() = booleanProvider(PropertyNames.KOTLIN_WASM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION).orElse(false) @@ -880,6 +885,8 @@ internal class PropertiesProvider private constructor(private val project: Proje val KOTLIN_KMP_ALLOW_MATCHING_BY_REQUESTED_COORDINATES_IN_GMDT = property("${KOTLIN_INTERNAL_NAMESPACE}.kmp.allowMatchingByRequestedCoordinatesInMetadataTransformations") val KOTLIN_INCREMENTAL_FIR = property("kotlin.incremental.jvm.fir") + val KOTLIN_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES = + property("kotlin.jvm.enableIncrementalCompilationOfCommonSources") val KOTLIN_KMP_UNRESOLVED_DEPENDENCIES_DIAGNOSTIC = property("kotlin.kmp.unresolvedDependenciesDiagnostic") val KOTLIN_KMP_EAGER_UNRESOLVED_DEPENDENCIES_DIAGNOSTIC = property("kotlin.kmp.eagerUnresolvedDependenciesDiagnostic") val KOTLIN_DISPLAY_DIAGNOSTICS_IN_IDE_BUILD_LOG = property("kotlin.displayDiagnosticsInIdeBuildLog") @@ -907,13 +914,11 @@ internal class PropertiesProvider private constructor(private val project: Proje val KOTLIN_COMPILER_ARGUMENTS_LOG_LEVEL = property("$KOTLIN_INTERNAL_NAMESPACE.compiler.arguments.log.level") /** - * Replaced by the per-target properties below, kept only to report + * Replaced by the per-target properties, kept only to report * [org.jetbrains.kotlin.gradle.plugin.diagnostics.KotlinToolingDiagnostics.DeprecatedErrorGradleProperties] on its usage. */ val KOTLIN_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION = property("$KOTLIN_INTERNAL_NAMESPACE.incremental.enableUnsafeOptimizationsForMultiplatform") - val KOTLIN_JVM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION = - property("$KOTLIN_INTERNAL_NAMESPACE.jvm.enableUnsafeOptimizationsForMultiplatform") val KOTLIN_JS_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION = property("$KOTLIN_INTERNAL_NAMESPACE.js.enableUnsafeOptimizationsForMultiplatform") val KOTLIN_WASM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION = diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/GradleDeprecatedPropertyChecker.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/GradleDeprecatedPropertyChecker.kt index 1f929a3dce52d..7fe032e187410 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/GradleDeprecatedPropertyChecker.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/diagnostics/checkers/GradleDeprecatedPropertyChecker.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.internal.properties.PropertiesBuildService import org.jetbrains.kotlin.gradle.plugin.KotlinPluginLifecycle import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_DEPRECATED_TEST_PROPERTY import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_JS_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION -import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_JVM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION +import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_PLATFORM_INTEGER_COMMONIZATION import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_PUBLISH_JVM_ENVIRONMENT_ATTRIBUTE @@ -138,7 +138,7 @@ internal object GradleDeprecatedPropertyChecker : KotlinGradleProjectChecker { DeprecatedProperty( propertyName = KOTLIN_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION, details = "This property has no effect. Unsafe incremental compilation optimizations are now enabled per target: use " + - "$KOTLIN_JVM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION, " + + "$KOTLIN_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES, " + "$KOTLIN_JS_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION or " + "$KOTLIN_WASM_UNSAFE_MULTIPLATFORM_INCREMENTAL_COMPILATION instead. " + "See https://kotl.in/KT-87522 for details.", diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt index 4d55b8f75776b..e8da814e45332 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/configuration/KotlinCompileConfig.kt @@ -53,7 +53,7 @@ internal open class BaseKotlinCompileConfig : AbstractKotl task.useFirRunner.convention(propertiesProvider.incrementalJvmFir) task.enableJvmClasspathMetadata.convention(propertiesProvider.enableJvmClasspathMetadata) task.enableUnsafeIncrementalCompilationForMultiplatform - .convention(propertiesProvider.enableJvmUnsafeOptimizationsForMultiplatform) + .convention(propertiesProvider.enableJvmIncrementalCompilationOfCommonSources) .finalizeValueOnRead() task.usePreciseJavaTracking = propertiesProvider.usePreciseJavaTracking ?: true task.jvmTargetValidationMode.convention(propertiesProvider.jvmTargetValidationMode).finalizeValueOnRead() diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/UnsafeOptimizationsForMultiplatformTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/UnsafeOptimizationsForMultiplatformTest.kt index 31204d251e567..c594bb3b75eb5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/UnsafeOptimizationsForMultiplatformTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/unitTests/UnsafeOptimizationsForMultiplatformTest.kt @@ -30,7 +30,7 @@ class UnsafeOptimizationsForMultiplatformTest { @Test fun jvmPropertyAffectsOnlyJvmTasks() { assertEnabledTargets( - enabledProperty = "kotlin.internal.jvm.enableUnsafeOptimizationsForMultiplatform", + enabledProperty = "kotlin.jvm.enableIncrementalCompilationOfCommonSources", expectedJvm = true, expectedJs = false, expectedWasm = false, ) } diff --git a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt index 44fe0b990da53..e5333dd2942c1 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt @@ -65,7 +65,7 @@ enum class BooleanMetrics(val type: BooleanOverridePolicy, val anonymization: Bo KOTLIN_SEPARATE_KMP_COMPILATION_ENABLED(OR, SAFE), // kotlin.internal.jvm.enableKmpClasspathMetadataForIncrementalCompilation, reported per KMP JVM compilation KMP_JVM_CLASSPATH_METADATA_ENABLED(OR, SAFE), - // kotlin.internal.jvm.enableUnsafeOptimizationsForMultiplatform, reported per KMP JVM compilation + // kotlin.jvm.enableIncrementalCompilationOfCommonSources, reported per KMP JVM compilation KMP_JVM_UNSAFE_OPTIMIZATIONS_ENABLED(OR, SAFE), KMP_TOP_LEVEL_DEPENDENCIES_BLOCK(OR, SAFE), KOTLIN_NATIVE_CACHE_DISABLED(OR, SAFE), From 2243d95cca69f7333a724fdeb93c83bfa6328e8f Mon Sep 17 00:00:00 2001 From: Iveta Kovalenko Date: Thu, 20 Aug 2026 12:35:15 +0200 Subject: [PATCH 2/2] [FUS] Rename KMP_JVM_UNSAFE_OPTIMIZATIONS_ENABLED The metric reports enableIncrementalCompilationOfCommonSources, so name it after the option rather than after the old "unsafe optimizations" framing. ^KT-88762 --- .../kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt | 4 ++-- .../jetbrains/kotlin/gradle/plugin/statistics/FusMetrics.kt | 6 +++--- .../jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt | 2 +- .../jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt | 4 ++-- .../kotlin/statistics/ModuleChangesCatchingTest.kt | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt index 9ccd67a6db466..6aed3b4b2d74e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/FusStatisticsIT.kt @@ -356,7 +356,7 @@ class FusStatisticsIT : KGPBaseTest() { assertOutputDoesNotContainFusErrors() fusStatisticsDirectory.assertFusReportContains( "KMP_JVM_CLASSPATH_METADATA_ENABLED=true", - "KMP_JVM_UNSAFE_OPTIMIZATIONS_ENABLED=true", + "KMP_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES_ENABLED=true", ) } @@ -370,7 +370,7 @@ class FusStatisticsIT : KGPBaseTest() { assertOutputDoesNotContainFusErrors() fusStatisticsDirectory.assertFusReportContains( "KMP_JVM_CLASSPATH_METADATA_ENABLED=false", - "KMP_JVM_UNSAFE_OPTIMIZATIONS_ENABLED=false", + "KMP_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES_ENABLED=false", ) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/FusMetrics.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/FusMetrics.kt index 60cfd3472a08f..b30c5411cfad7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/FusMetrics.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/FusMetrics.kt @@ -280,7 +280,7 @@ internal object CompileKotlinTaskMetrics : FusMetrics { executionPolicy: KotlinCompilerExecutionStrategy, // both are null for anything that is not a multiplatform Kotlin/JVM compilation kmpJvmClasspathMetadataEnabled: Boolean?, - kmpJvmUnsafeOptimizationsEnabled: Boolean?, + kmpJvmIncrementalCompilationOfCommonSourcesEnabled: Boolean?, metricsContainer: StatisticsValuesConsumer, ) { metricsContainer.report(BooleanMetrics.KOTLIN_PROGRESSIVE_MODE, compilerOptions.progressiveMode.get()) @@ -303,8 +303,8 @@ internal object CompileKotlinTaskMetrics : FusMetrics { kmpJvmClasspathMetadataEnabled?.also { metricsContainer.report(BooleanMetrics.KMP_JVM_CLASSPATH_METADATA_ENABLED, it) } - kmpJvmUnsafeOptimizationsEnabled?.also { - metricsContainer.report(BooleanMetrics.KMP_JVM_UNSAFE_OPTIMIZATIONS_ENABLED, it) + kmpJvmIncrementalCompilationOfCommonSourcesEnabled?.also { + metricsContainer.report(BooleanMetrics.KMP_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES_ENABLED, it) } metricsContainer.report(StringListMetrics.KOTLIN_COMPILER_EXECUTION_POLICY, executionPolicy.propertyValue) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt index 713a9f8ed9055..976e26a15c49c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/AbstractKotlinCompile.kt @@ -243,7 +243,7 @@ abstract class AbstractKotlinCompile @Inject constr firRunnerEnabled = (this as? KotlinCompile)?.useFirRunner?.get() == true, executionPolicy = compilerExecutionStrategy.get(), kmpJvmClasspathMetadataEnabled = kmpJvmCompile?.enableJvmClasspathMetadata?.get(), - kmpJvmUnsafeOptimizationsEnabled = kmpJvmCompile?.enableUnsafeIncrementalCompilationForMultiplatform?.get(), + kmpJvmIncrementalCompilationOfCommonSourcesEnabled = kmpJvmCompile?.enableUnsafeIncrementalCompilationForMultiplatform?.get(), it ) } diff --git a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt index e5333dd2942c1..96060ca1fadcb 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/BooleanMetrics.kt @@ -66,7 +66,7 @@ enum class BooleanMetrics(val type: BooleanOverridePolicy, val anonymization: Bo // kotlin.internal.jvm.enableKmpClasspathMetadataForIncrementalCompilation, reported per KMP JVM compilation KMP_JVM_CLASSPATH_METADATA_ENABLED(OR, SAFE), // kotlin.jvm.enableIncrementalCompilationOfCommonSources, reported per KMP JVM compilation - KMP_JVM_UNSAFE_OPTIMIZATIONS_ENABLED(OR, SAFE), + KMP_JVM_INCREMENTAL_COMPILATION_OF_COMMON_SOURCES_ENABLED(OR, SAFE), KMP_TOP_LEVEL_DEPENDENCIES_BLOCK(OR, SAFE), KOTLIN_NATIVE_CACHE_DISABLED(OR, SAFE), KMP_SWIFT_PM_IMPORT_HAS_DIRECT_DEPENDENCIES(OR, SAFE), @@ -146,6 +146,6 @@ enum class BooleanMetrics(val type: BooleanOverridePolicy, val anonymization: Bo ; companion object { - const val VERSION = 30 + const val VERSION = 31 } } diff --git a/libraries/tools/kotlin-gradle-statistics/src/test/kotlin/org/jetbrains/kotlin/statistics/ModuleChangesCatchingTest.kt b/libraries/tools/kotlin-gradle-statistics/src/test/kotlin/org/jetbrains/kotlin/statistics/ModuleChangesCatchingTest.kt index ef83d3169f523..40078e4882fc6 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/test/kotlin/org/jetbrains/kotlin/statistics/ModuleChangesCatchingTest.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/test/kotlin/org/jetbrains/kotlin/statistics/ModuleChangesCatchingTest.kt @@ -26,7 +26,7 @@ private const val NUMERICAL_METRICS_RELATIVE_PATH = "$SOURCE_CODE_RELATIVE_PATH/ private const val STRING_LIST_METRICS_RELATIVE_PATH = "$SOURCE_CODE_RELATIVE_PATH/StringListMetrics.kt" private val STRING_METRICS_EXPECTED_VERSION_AND_HASH = Pair(13, "f6d1d30105cafe24bdc33325c8465095") -private val BOOLEAN_METRICS_EXPECTED_VERSION_AND_HASH = Pair(30, "622ddbc4b5c073ea379e7430d1ee3419") +private val BOOLEAN_METRICS_EXPECTED_VERSION_AND_HASH = Pair(31, "c21c6206e1ae0d7217abf0925043d010") private val NUMERICAL_METRICS_EXPECTED_VERSION_AND_HASH = Pair(3, "bcc6f0dba7d9db8e58408f8c0ff57965") private val STRING_LIST_METRICS_EXPECTED_VERSION_AND_HASH = Pair(4, "bab8ebe7d6a6b21b210468ab1193cb1c") private val SOURCE_FOLDER_EXPECTED_VERSION_AND_HASH =