Skip to content

Commit 4c1aa71

Browse files
committed
Merge pull request 'Kotlin 2.3.0' (!54) from beta/2.3.0-Beta1 into dev
Reviewed-on: https://git.sciprog.center/kscience/gradle-tools/pulls/54
2 parents d0d0378 + 467efaf commit 4c1aa71

File tree

10 files changed

+217
-137
lines changed

10 files changed

+217
-137
lines changed

CHANGELOG.md

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
## Unreleased
88

99
### Added
10-
- WasmWasi target
1110

1211
### Changed
1312

@@ -19,6 +18,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1918

2019
### Security
2120

21+
## 0.20.2-kotlin-2.3.0 - 2025-12-17
22+
23+
### Added
24+
25+
- WasmWasi target
26+
27+
### Changed
28+
29+
- Kotlin 2.3.0
30+
- Maturity moved to kscience extension.
31+
- Readme extension now requires kscience extension.
32+
- Project plugin overhaul (not only publish)
33+
- ABI validation is configurable from the root project
34+
35+
### Fixed
36+
37+
- Context parameter flag
38+
- Deploy problem with opensavvy-resources
39+
2240
## 0.19.0-kotlin-2.2.0 - 2025-07-24
2341

2442
### Changed
@@ -38,7 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3856
- `fullStackApplication` configuration. Replaced by optional field in `fullStack`
3957
- Jupyter integration
4058

41-
## 0.17.x
59+
## 0.17.0
4260

4361
### Added
4462

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ dependencies {
2626
api("org.jetbrains.kotlin:kotlin-gradle-plugin:${libs.versions.kotlin.asProvider().get()}")
2727
api("org.gradle.toolchains:foojay-resolver:1.0.0")
2828
api("com.vanniktech:gradle-maven-publish-plugin:0.34.0")
29-
api("org.jetbrains.kotlinx:binary-compatibility-validator:0.18.0")
3029
api("org.jetbrains.intellij.plugins:gradle-changelog-plugin:${libs.versions.changelog.get()}")
3130
api("org.jetbrains.dokka:dokka-gradle-plugin:${libs.versions.dokka.get()}")
3231

@@ -159,6 +158,7 @@ mavenPublishing {
159158
}
160159

161160
kotlin {
161+
abiValidation
162162
explicitApiWarning()
163163
jvmToolchain(21)
164164
}

gradle/libs.versions.toml

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,44 @@
11
[versions]
22
# @pin
3-
kotlin = "2.2.20"
3+
kotlin = "2.3.0"
44
# @pin
5-
tools = "0.19.2-kotlin-2.2.20"
5+
tools = "0.20.2-kotlin-2.3.0"
66
atomicfu = "0.29.0"
7-
changelog = "2.4.0"
8-
compose = "1.8.2"
9-
dokka = "2.0.0"
10-
jsBom = "2025.9.6"
7+
changelog = "2.5.0"
8+
compose = "1.9.3"
9+
dokka = "2.1.0"
10+
jsBom = "2025.12.6"
1111
junit = "5.10.2"
12-
kotlin-jupyter = "0.15.0-616"
13-
kotlinx-benchmark = "0.4.14"
12+
# @pin
13+
kotlin-jupyter = "0.15.0-634"
14+
kotlinx-benchmark = "0.4.15"
1415
kotlinx-cli = "0.3.6"
1516
kotlinx-coroutines = "1.10.2"
1617
kotlinx-datetime = "0.7.1"
1718
kotlinx-html = "0.12.0"
1819
kotlinx-knit = "0.5.0"
1920
kotlinx-nodejs = "0.0.7"
2021
kotlinx-serialization = "1.9.0"
21-
kotlinx-io = "0.8.0"
22-
kover = "0.9.1"
23-
ktor = "3.2.3"
24-
ksp = "2.2.20-2.0.3"
25-
logback = "1.5.18"
22+
kotlinx-io = "0.8.2"
23+
kover = "0.9.4"
24+
ktor = "3.3.3"
25+
ksp = "2.3.4"
26+
logback = "1.5.22"
2627
slf4j = "2.0.17"
27-
xmlutil = "0.91.2"
28+
xmlutil = "0.91.3"
2829
yamlkt = "0.13.0"
29-
opensavvy-resources = "0.5.1"
30+
opensavvy-resources = "0.6.0"
3031

3132
[plugins]
32-
maven-publish = "com.vanniktech.maven.publish:0.34.0"
33-
maven-publish-base = "com.vanniktech.maven.publish.base:0.34.0"
33+
maven-publish = "com.vanniktech.maven.publish:0.35.0"
34+
maven-publish-base = "com.vanniktech.maven.publish.base:0.35.0"
3435
compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
3536
compose-jb = { id = "org.jetbrains.compose", version.ref = "compose" }
3637
jetbrains-changelog = { id = "org.jetbrains.changelog", version.ref = "changelog" }
3738
jetbrains-dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
3839
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
3940
kotlin-android-extensions = { id = "org.jetbrains.kotlin.android.extensions", version.ref = "kotlin" }
40-
kotlin-dsl = "org.gradle.kotlin.kotlin-dsl:6.4.0"
41+
kotlin-dsl = "org.gradle.kotlin.kotlin-dsl:6.5.1"
4142
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
4243
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
4344
kotlin-js = { id = "org.jetbrains.kotlin.js", version.ref = "kotlin" }
@@ -58,11 +59,11 @@ kotlinx-kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }
5859
kscience-mpp = { id = "space.kscience.gradle.mpp", version.ref = "tools" }
5960
kscience-project = { id = "space.kscience.gradle.project", version.ref = "tools" }
6061
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
61-
ktor = "io.ktor.plugin:3.2.3"
62+
ktor = { id = "io.ktor.plugin", version.ref = "ktor" }
6263
opensavvy-resources-producer = { id = "dev.opensavvy.resources.producer", version.ref = "opensavvy-resources" }
6364
opensavvy-resources-consumer = { id = "dev.opensavvy.resources.consumer", version.ref = "opensavvy-resources" }
64-
versions = "com.github.ben-manes.versions:0.52.0"
65-
versions-update = "nl.littlerobots.version-catalog-update:1.0.0"
65+
versions = "com.github.ben-manes.versions:0.53.0"
66+
versions-update = "nl.littlerobots.version-catalog-update:1.0.1"
6667

6768
[libraries]
6869
atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "atomicfu" }
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ pluginManagement {
99
}
1010

1111
plugins {
12-
id("org.gradle.toolchains.foojay-resolver-convention") version("0.9.0")
12+
id("org.gradle.toolchains.foojay-resolver-convention") version("1.0.0")
1313
}
1414

src/main/kotlin/space/kscience/gradle/KScienceExtension.kt

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import org.gradle.kotlin.dsl.*
1010
import org.gradle.language.jvm.tasks.ProcessResources
1111
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
1212
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
13+
import org.jetbrains.kotlin.gradle.dsl.HasConfigurableKotlinCompilerOptions
14+
import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions
1315
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
1416
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
1517
import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
@@ -20,7 +22,6 @@ import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinJsTargetDsl
2022
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinWasmJsTargetDsl
2123
import org.jetbrains.kotlin.gradle.targets.js.dsl.KotlinWasmWasiTargetDsl
2224
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
23-
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2425
import space.kscience.gradle.internal.defaultKotlinJvmOpts
2526
import space.kscience.gradle.internal.requestPropertyOrNull
2627
import space.kscience.gradle.internal.useCommonDependency
@@ -37,6 +38,13 @@ public enum class DependencySourceSet(public val setName: String, public val suf
3738
TEST("test", "Test")
3839
}
3940

41+
public enum class Maturity {
42+
PROTOTYPE,
43+
EXPERIMENTAL,
44+
DEVELOPMENT,
45+
STABLE,
46+
DEPRECATED
47+
}
4048

4149
/**
4250
* Check if this project version has a development tag (`development` property to true, "dev" in the middle or "SNAPSHOT" in the end).
@@ -47,16 +55,32 @@ public val Project.isInDevelopment: Boolean
4755
|| version.toString().endsWith("SNAPSHOT")
4856

4957

50-
private const val defaultJdkVersion = 17
58+
/**
59+
* Check if the project has a kscience extension that declares it as immature. Returns true if the project does not have readme extension
60+
*/
61+
public fun Project.isMature(): Boolean = extensions.findByType<KSciencePlatformExtension>()?.let { ext ->
62+
ext.maturity == Maturity.DEVELOPMENT && ext.maturity == Maturity.STABLE
63+
} ?: true
64+
65+
66+
private const val defaultJdkVersion = 21
5167

52-
public abstract class KScienceExtension @Inject constructor(public val project: Project) : ExtensionAware {
68+
public interface KSciencePlatformExtension: ExtensionAware {
69+
public val project: Project
70+
public var maturity: Maturity
71+
}
72+
73+
public abstract class KScienceExtension @Inject constructor(override val project: Project) : KSciencePlatformExtension {
5374

5475
public val jdkVersionProperty: Property<Int> = project.objects.property<Int>().apply {
5576
set(defaultJdkVersion)
5677
}
5778

5879
public var jdkVersion: Int by jdkVersionProperty
5980

81+
82+
override var maturity: Maturity = Maturity.EXPERIMENTAL
83+
6084
/**
6185
* Use coroutines-core with default version or [version]
6286
*/
@@ -152,10 +176,9 @@ public abstract class KScienceExtension @Inject constructor(public val project:
152176
* Add context parameters to the project
153177
*/
154178
public fun useContextParameters() {
155-
project.tasks.withType<KotlinCompile> {
156-
compilerOptions {
157-
freeCompilerArgs.addAll("-Xcontext-parameters")
158-
}
179+
@Suppress("UNCHECKED_CAST")
180+
(project.extensions.getByName("kotlin") as? HasConfigurableKotlinCompilerOptions<KotlinCommonCompilerOptions>)?.compilerOptions {
181+
freeCompilerArgs.addAll("-Xcontext-parameters")
159182
}
160183
}
161184

src/main/kotlin/space/kscience/gradle/KScienceJVMPlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public open class KScienceJVMPlugin : KSciencePlugin {
4242
}
4343

4444
if (explicitApi == null) explicitApiWarning()
45+
4546
jvmToolchain {
4647
languageVersion.set(extension.jdkVersionProperty.map { JavaLanguageVersion.of(it) })
4748
}

0 commit comments

Comments
 (0)