[PR #919] Kotlin ABI checks #803

Open
opened 2025-12-30 01:26:54 +01:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/apple/pkl/pull/919
Author: @sgammon
Created: 1/31/2025
Status: 🔄 Open

Base: mainHead: feat/kotlin-abi-checks


📝 Commits (2)

  • 5c395d2 feat: kotlin abi checks, initial dump
  • 7058067 feat: add hatch for opt-in experimental types

📊 Changes

17 files changed (+15860 additions, -1 deletions)

View changed files

📝 build.gradle.kts (+9 -1)
📝 buildSrc/build.gradle.kts (+1 -0)
📝 gradle/libs.versions.toml (+3 -0)
pkl-cli/api/pkl-cli.api (+174 -0)
pkl-codegen-java/api/pkl-codegen-java.api (+81 -0)
pkl-codegen-kotlin/api/pkl-codegen-kotlin.api (+69 -0)
pkl-commons-cli/api/pkl-commons-cli.api (+170 -0)
pkl-commons-test/api/pkl-commons-test.api (+123 -0)
pkl-commons/api/pkl-commons.api (+36 -0)
pkl-commons/src/main/kotlin/org/pkl/commons/annotations/PklExperimental.kt (+25 -0)
pkl-config-java/api/pkl-config-java.api (+238 -0)
pkl-config-kotlin/api/pkl-config-kotlin.api (+24 -0)
pkl-core/api/pkl-core.api (+14229 -0)
pkl-doc/api/pkl-doc.api (+143 -0)
pkl-executor/api/pkl-executor.api (+88 -0)
pkl-gradle/api/pkl-gradle.api (+243 -0)
pkl-server/api/pkl-server.api (+204 -0)

📄 Description

Summary

Kotlin ABI Check: Checks Kotlin public library symbols for drift. Run apiCheck to make sure a change does not break downstream Java/Kotlin library consumers; run apiDump to re-seal public API lockfiles.

Initial API lockfiles were generated as well. apiCheck runs on ./gradlew check by default, preventing downstream API/ABI breakage when Pkl is used as a Maven library.

  • API Locking
    • Kotlin modules: Klib API
    • Kotlin modules: JVM API
    • Pure Java modules: JVM API
  • Tooling
    • Provide new PklExperimental annotation for opt-out of API pinning
    • Use PklExperimental as Kotlin opt-in

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/apple/pkl/pull/919 **Author:** [@sgammon](https://github.com/sgammon) **Created:** 1/31/2025 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/kotlin-abi-checks` --- ### 📝 Commits (2) - [`5c395d2`](https://github.com/apple/pkl/commit/5c395d26319bc504d3b2c1b694ef4b5ed17009f0) feat: kotlin abi checks, initial dump - [`7058067`](https://github.com/apple/pkl/commit/7058067183f7cec5ab9535c2f7962ca6f7ebe46d) feat: add hatch for opt-in experimental types ### 📊 Changes **17 files changed** (+15860 additions, -1 deletions) <details> <summary>View changed files</summary> 📝 `build.gradle.kts` (+9 -1) 📝 `buildSrc/build.gradle.kts` (+1 -0) 📝 `gradle/libs.versions.toml` (+3 -0) ➕ `pkl-cli/api/pkl-cli.api` (+174 -0) ➕ `pkl-codegen-java/api/pkl-codegen-java.api` (+81 -0) ➕ `pkl-codegen-kotlin/api/pkl-codegen-kotlin.api` (+69 -0) ➕ `pkl-commons-cli/api/pkl-commons-cli.api` (+170 -0) ➕ `pkl-commons-test/api/pkl-commons-test.api` (+123 -0) ➕ `pkl-commons/api/pkl-commons.api` (+36 -0) ➕ `pkl-commons/src/main/kotlin/org/pkl/commons/annotations/PklExperimental.kt` (+25 -0) ➕ `pkl-config-java/api/pkl-config-java.api` (+238 -0) ➕ `pkl-config-kotlin/api/pkl-config-kotlin.api` (+24 -0) ➕ `pkl-core/api/pkl-core.api` (+14229 -0) ➕ `pkl-doc/api/pkl-doc.api` (+143 -0) ➕ `pkl-executor/api/pkl-executor.api` (+88 -0) ➕ `pkl-gradle/api/pkl-gradle.api` (+243 -0) ➕ `pkl-server/api/pkl-server.api` (+204 -0) </details> ### 📄 Description ## Summary **[Kotlin ABI Check](https://github.com/Kotlin/binary-compatibility-validator)**: Checks Kotlin public library symbols for drift. Run `apiCheck` to make sure a change does not break downstream Java/Kotlin library consumers; run `apiDump` to re-seal public API lockfiles. Initial API lockfiles were generated as well. `apiCheck` runs on `./gradlew check` by default, preventing downstream API/ABI breakage when Pkl is used as a Maven library. - [x] **API Locking** - [x] Kotlin modules: Klib API - [x] Kotlin modules: JVM API - [x] Pure Java modules: JVM API - [x] **Tooling** - [x] Provide new `PklExperimental` annotation for opt-out of API pinning - [x] Use `PklExperimental` as [Kotlin opt-in](https://kotlinlang.org/docs/opt-in-requirements.html) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2025-12-30 01:26:54 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/pkl#803