diff --git a/.circleci/config.pkl b/.circleci/config.pkl index 006ea2b47..ebe9ae1c5 100644 --- a/.circleci/config.pkl +++ b/.circleci/config.pkl @@ -105,18 +105,13 @@ local buildNativeJobs: Mapping = new { } local gradleCheckJobs: Mapping = new { - ["gradle-check-jdk17"] { - javaVersion = "17.0" - isRelease = false - os = "linux" - } - ["gradle-check-jdk21"] { + ["gradle-check"] { javaVersion = "21.0" isRelease = false os = "linux" } - ["gradle-check-jdk17-windows"] { - javaVersion = "17.0" + ["gradle-check-windows"] { + javaVersion = "21.0" isRelease = false os = "windows" } diff --git a/.circleci/config.yml b/.circleci/config.yml index d0508b76f..98383da79 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -581,19 +581,7 @@ jobs: resource_class: windows.large machine: image: windows-server-2022-gui:current - gradle-check-jdk17: - steps: - - checkout - - run: - command: ./gradlew --info --stacktrace -DtestReportsDir=${HOME}/test-results check - name: gradle check - - store_test_results: - path: ~/test-results - environment: - LANG: en_US.UTF-8 - docker: - - image: cimg/openjdk:17.0 - gradle-check-jdk21: + gradle-check: steps: - checkout - run: @@ -605,14 +593,14 @@ jobs: LANG: en_US.UTF-8 docker: - image: cimg/openjdk:21.0 - gradle-check-jdk17-windows: + gradle-check-windows: steps: - checkout - run: command: |- # install jdk curl -Lf \ - https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9.1/OpenJDK17U-jdk_x64_windows_hotspot_17.0.9_9.zip -o /tmp/jdk.zip + https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.5%2B11/OpenJDK21U-jdk_x64_windows_hotspot_21.0.5_11.zip -o /tmp/jdk.zip unzip /tmp/jdk.zip -d /tmp/jdk \ && cd /tmp/jdk/jdk-* \ @@ -742,13 +730,10 @@ workflows: type: approval - pr-approval/authenticate: context: pkl-pr-approval - - gradle-check-jdk17: + - gradle-check: requires: - hold - - gradle-check-jdk21: - requires: - - hold - - gradle-check-jdk17-windows: + - gradle-check-windows: requires: - hold when: @@ -757,9 +742,8 @@ workflows: pattern: ^pull/\d+(/head)?$ main: jobs: - - gradle-check-jdk17 - - gradle-check-jdk21 - - gradle-check-jdk17-windows + - gradle-check + - gradle-check-windows - bench - gradle-compatibility - pkl-cli-macOS-amd64-snapshot @@ -770,9 +754,8 @@ workflows: - pkl-cli-windows-amd64-snapshot - deploy-snapshot: requires: - - gradle-check-jdk17 - - gradle-check-jdk21 - - gradle-check-jdk17-windows + - gradle-check + - gradle-check-windows - bench - gradle-compatibility - pkl-cli-macOS-amd64-snapshot @@ -793,19 +776,13 @@ workflows: - << pipeline.git.branch >> release: jobs: - - gradle-check-jdk17: - filters: - branches: - ignore: /.*/ - tags: - only: /^v?\d+\.\d+\.\d+$/ - - gradle-check-jdk21: + - gradle-check: filters: branches: ignore: /.*/ tags: only: /^v?\d+\.\d+\.\d+$/ - - gradle-check-jdk17-windows: + - gradle-check-windows: filters: branches: ignore: /.*/ @@ -861,9 +838,8 @@ workflows: only: /^v?\d+\.\d+\.\d+$/ - github-release: requires: - - gradle-check-jdk17 - - gradle-check-jdk21 - - gradle-check-jdk17-windows + - gradle-check + - gradle-check-windows - bench - gradle-compatibility - pkl-cli-macOS-amd64-release @@ -899,9 +875,8 @@ workflows: only: /^v?\d+\.\d+\.\d+$/ release-branch: jobs: - - gradle-check-jdk17 - - gradle-check-jdk21 - - gradle-check-jdk17-windows + - gradle-check + - gradle-check-windows - bench - gradle-compatibility - pkl-cli-macOS-amd64-release diff --git a/.github/workflows/checks.apicheck.yml b/.github/workflows/checks.apicheck.yml new file mode 100644 index 000000000..08edcb4d2 --- /dev/null +++ b/.github/workflows/checks.apicheck.yml @@ -0,0 +1,78 @@ +name: "API Check" + +"on": + workflow_dispatch: {} + workflow_call: + inputs: + ignore_failures: + description: "Ignore failures" + required: false + type: boolean + default: false + + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: "read" + +jobs: + api-check: + name: "API Check" + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "Analysis: API Check" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + continue-on-error: ${{ inputs.ignore_failures }} + env: + CI: true + with: + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + arguments: | + apiCheck + -x test + -PenableAnalysis=true diff --git a/.github/workflows/checks.codeql.yml b/.github/workflows/checks.codeql.yml new file mode 100644 index 000000000..e98691711 --- /dev/null +++ b/.github/workflows/checks.codeql.yml @@ -0,0 +1,97 @@ +name: "CodeQL" + +"on": + workflow_dispatch: {} + workflow_call: + inputs: {} + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + + schedule: + - cron: "0 0-23/2 * * *" + + push: + branches: + - main + +permissions: + contents: read + +jobs: + analyze: + name: CodeQL + runs-on: ubuntu-latest + continue-on-error: true + permissions: + actions: read + contents: read + security-events: write + strategy: + fail-fast: false + matrix: + language: ["java-kotlin"] + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "Setup: Initialize CodeQL" + uses: github/codeql-action/init@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + with: + config-file: ./.github/codeql/codeql-config.yml + languages: ${{ matrix.language }} + - name: "Analysis: Build" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + continue-on-error: true + env: + CI: true + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + with: + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + arguments: | + compileKotlin + compileJava + assemble + -x test + -x check + - name: "Analysis: CodeQL" + uses: github/codeql-action/analyze@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + continue-on-error: true diff --git a/.github/workflows/checks.dependency-review.yml b/.github/workflows/checks.dependency-review.yml new file mode 100644 index 000000000..7abd41119 --- /dev/null +++ b/.github/workflows/checks.dependency-review.yml @@ -0,0 +1,33 @@ +name: "Dependencies" + +"on": + workflow_dispatch: {} + workflow_call: {} + +permissions: + contents: read + +jobs: + dep-review: + name: "Dependency Review" + runs-on: ubuntu-latest + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + persist-credentials: false + - name: "Check: Dependency Review" + uses: actions/dependency-review-action@80f10bf419f34980065523f5efca7ebed17576aa # v4.1.0 + continue-on-error: true + if: github.event_name == 'pull_request' + with: + config-file: "./.github/dependency-review-config.yml" + license-check: true + vulnerability-check: true + fail-on-severity: "low" + base-ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.ref || 'main' }} diff --git a/.github/workflows/checks.detekt.yml b/.github/workflows/checks.detekt.yml new file mode 100644 index 000000000..ac8300331 --- /dev/null +++ b/.github/workflows/checks.detekt.yml @@ -0,0 +1,75 @@ +name: "Detekt" + +"on": + workflow_dispatch: {} + workflow_call: + inputs: {} + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: "read" + +jobs: + sonar: + name: "Detekt" + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "Setup: Git History" + run: git fetch --unshallow || exit 0 + - name: "Analysis: Detekt" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + continue-on-error: true + env: + CI: true + with: + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + arguments: detekt detektMergeSarif detektMergeXml -PenableAnalysis=true -PsarifReporting=true + - name: "Report: SARIF Upload" + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + with: + sarif_file: build/reports/detekt/detekt.sarif diff --git a/.github/workflows/checks.formatting.yml b/.github/workflows/checks.formatting.yml new file mode 100644 index 000000000..8f523d40d --- /dev/null +++ b/.github/workflows/checks.formatting.yml @@ -0,0 +1,86 @@ +name: "Formatting" + +"on": + workflow_dispatch: + inputs: + ## Input: Ignore Failures + ignore_failures: + description: "Ignore failures" + required: false + type: boolean + default: false + + workflow_call: + inputs: + ignore_failures: + description: "Ignore failures" + required: false + type: boolean + default: false + + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: "read" + +jobs: + fmt-check: + name: "Formatting" + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "Analysis: Formatting (Spotless)" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + continue-on-error: ${{ inputs.ignore_failures }} + env: + CI: true + with: + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + arguments: | + spotlessCheck + -PenableAnalysis=true + -x spotlessKotlinGradleCheck diff --git a/.github/workflows/checks.gradle-wrapper.yml b/.github/workflows/checks.gradle-wrapper.yml new file mode 100644 index 000000000..33e9ded32 --- /dev/null +++ b/.github/workflows/checks.gradle-wrapper.yml @@ -0,0 +1,25 @@ +name: "Gradle Wrapper" + +"on": + workflow_dispatch: {} + workflow_call: {} + +permissions: + contents: read + +jobs: + validation: + name: "Gradle Wrapper" + runs-on: ubuntu-latest + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + fetch-depth: 0 + persist-credentials: false + - name: "Check: Gradle Wrapper" + uses: gradle/wrapper-validation-action@699bb18358f12c5b78b37bb0111d3a0e2276e0e2 # v2.1.1 diff --git a/.github/workflows/checks.scorecards.yml b/.github/workflows/checks.scorecards.yml new file mode 100644 index 000000000..8be190998 --- /dev/null +++ b/.github/workflows/checks.scorecards.yml @@ -0,0 +1,62 @@ +name: "Scorecard" + +"on": + branch_protection_rule: {} + workflow_dispatch: {} + workflow_call: {} + +# Declare default permissions as read-only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + contents: read + actions: read + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + persist-credentials: false + - name: "Analysis: Scorecard" + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecards on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Artifact: Scorecard Analysis" + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + # Upload the results to GitHub's code scanning dashboard. + - name: "Artifact: Scorecard SARIF" + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + with: + sarif_file: results.sarif diff --git a/.github/workflows/job.build.yml b/.github/workflows/job.build.yml new file mode 100644 index 000000000..55d22f331 --- /dev/null +++ b/.github/workflows/job.build.yml @@ -0,0 +1,98 @@ +name: "Build" + +"on": + workflow_dispatch: {} + workflow_call: + inputs: {} + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: read + +jobs: + ## + ## Job: Build + ## + gradle: + name: "Build (Ubuntu)" + runs-on: ubuntu-latest + + defaults: + run: + shell: bash + + outputs: + hashes: ${{ steps.hash.outputs.hashes }} + + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + submodules: true + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "🛠️ Build" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + id: gradlebuild + env: + CI: true + with: + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + gradle-home-cache-cleanup: true + arguments: build -x test -x check --scan + build-scan-publish: true + build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" + build-scan-terms-of-service-agree: "yes" + - name: "Artifact: Caches" + uses: actions/cache/save@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources diff --git a/.github/workflows/job.dependency-graph.yml b/.github/workflows/job.dependency-graph.yml new file mode 100644 index 000000000..57cd6fb76 --- /dev/null +++ b/.github/workflows/job.dependency-graph.yml @@ -0,0 +1,77 @@ +name: "Dependency Graph" + +"on": + workflow_dispatch: {} + workflow_call: + inputs: {} + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: read + +jobs: + ## + ## Job: Build+Submit Dependency Graph + ## + gradle: + name: "Dependency Graph" + runs-on: "ubuntu-latest" + + permissions: + ## Needed for submission of dependency graphs + contents: "write" + + defaults: + run: + shell: bash + + outputs: + hashes: ${{ steps.hash.outputs.hashes }} + + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + submodules: true + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "🛠️ Dependency Graph" + uses: gradle/actions/dependency-submission@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + continue-on-error: true diff --git a/.github/workflows/job.native-build.yml b/.github/workflows/job.native-build.yml new file mode 100644 index 000000000..2da457bf1 --- /dev/null +++ b/.github/workflows/job.native-build.yml @@ -0,0 +1,193 @@ +name: "Native Build" + +"on": + workflow_dispatch: + inputs: + release: + type: boolean + default: false + description: "Release build" + macos: + type: boolean + default: true + description: "macOS" + linux: + type: boolean + default: true + description: "Linux" + windows: + type: boolean + default: false + description: "Windows" + artifact: + type: string + default: "" + description: "Artifact prefix" + + workflow_call: + inputs: + release: + type: boolean + default: false + description: "Release build" + macos: + type: boolean + default: true + description: "macOS" + linux: + type: boolean + default: true + description: "Linux" + windows: + type: boolean + default: false + description: "Windows" + artifact: + type: string + default: "" + description: "Artifact prefix" + + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: read + +jobs: + ## + ## Job: Build+Submit Dependency Graph + ## + gradle: + strategy: + fail-fast: false + matrix: + os: [Ubuntu] + mode: ["Strict"] + tag: ["linux-amd64-${{ fromJson(inputs.release) && 'opt' || 'dev' }}"] + machine: ["ubuntu-latest"] + target: [":pkl-cli:linuxExecutableAmd64"] + enabled: + - ${{ fromJson(inputs.linux) }} + include: + - os: macOS x64 + tag: macos-x64-${{ fromJson(inputs.release) && 'opt' || 'dev' }} + machine: macos-13 + target: :pkl-cli:macExecutableAmd64 + enabled: ${{ fromJson(inputs.macos) }} + - os: macOS aarch64 + tag: macos-aarch64-${{ fromJson(inputs.release) && 'opt' || 'dev' }} + machine: macos-13-xlarge + target: :pkl-cli:macExecutableAarch64 + enabled: ${{ fromJson(inputs.macos) }} + + # Windows build is currently broken. + # + # - os: Windows + # machine: windows-latest + # target: :pkl-cli:windowsAmd64 + # tag: windows-x64 + + name: "Native CLI (${{ matrix.os }})" + runs-on: ${{ matrix.machine }} + + defaults: + run: + shell: bash + + outputs: + hashes: ${{ steps.hash.outputs.hashes }} + + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + if: ${{ matrix.enabled }} + with: + submodules: true + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + if: ${{ matrix.enabled }} + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + if: ${{ matrix.enabled }} + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + native-image-job-reports: 'true' + - name: "🛠️ Build" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + id: gradlebuild + if: ${{ matrix.enabled }} + env: + CI: true + with: + build-scan-publish: true + build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" + build-scan-terms-of-service-agree: "yes" + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + gradle-home-cache-cleanup: true + arguments: | + assemble + build + ${{ matrix.target || ':pkl-cli:assembleNative' }} + -PnativeRelease=${{ inputs.release }} + --scan + -x test + -x check + - name: "Artifact: Native CLI" + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + if: ${{ matrix.enabled }} + with: + name: "${{ inputs.artifact || 'pkl-cli-latest' }}-${{ matrix.tag }}" + path: ./pkl-cli/build/distributions/pkl*.* + if-no-files-found: warn + retention-days: 14 + compression-level: 1 + overwrite: true + - name: "Artifact: Caches" + uses: actions/cache/save@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + if: ${{ matrix.enabled }} + with: + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources diff --git a/.github/workflows/job.tests.yml b/.github/workflows/job.tests.yml new file mode 100644 index 000000000..e0a009677 --- /dev/null +++ b/.github/workflows/job.tests.yml @@ -0,0 +1,135 @@ +name: "Tests" + +"on": + workflow_dispatch: {} + workflow_call: + inputs: + native: + description: "Native Tests" + default: false + type: boolean + runner: + description: "Runner" + default: "ubuntu-latest" + type: string + + secrets: + GRADLE_CONFIGURATION_KEY: + description: "Gradle cache key" + required: false + CODECOV_TOKEN: + description: "Codecov token" + required: false + BUILDLESS_APIKEY: + description: "Buildless key" + required: false + +permissions: + contents: read + +jobs: + ## + ## Job: Testsuite + ## + gradle: + name: "Testsuite" + runs-on: ${{ inputs.runner || 'ubuntu-latest' }} + + defaults: + run: + shell: bash + + outputs: + hashes: ${{ steps.hash.outputs.hashes }} + + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + submodules: true + persist-credentials: false + - name: "Setup: Cache Restore (Build)" + id: cache-restore-build + uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + restore-keys: | + pkl-v1-build-${{ hashFiles('gradle/libs.versions.toml') }} + pkl-v1-build- + pkl-v1- + pkl- + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: '21' + check-for-updates: false + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "🛠️ JVM Testsuite" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + id: gradlebuild + env: + CI: true + with: + cache-read-only: true + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + gradle-home-cache-cleanup: true + build-scan-publish: true + build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" + build-scan-terms-of-service-agree: "yes" + arguments: | + check + -x spotlessCheck + --continue + --scan + - name: "Artifact: Test Reports" + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + if: success() || failure() + with: + name: "pkl-test-reports-${{ github.sha }}" + if-no-files-found: warn + retention-days: 7 + compression-level: 4 + overwrite: true + path: | + ./build/reports + ./pkl-*/build/reports + ./build/reports/* + ./pkl-*/build/reports/* + - name: "Reporting: Coverage" + uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # v4.0.1 + continue-on-error: true + if: success() + with: + token: ${{ secrets.CODECOV_TOKEN }} + slug: elide-dev/pkl + - name: "Artifact: Caches" + uses: actions/cache/save@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + with: + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + path: | + .gradle/ + build/ + .codebase/ + .kotlin/ + ./*/build/bin + ./*/build/classes + ./*/build/kotlin + ./*/build/klib + ./*/build/generated + ./*/build/generated-sources diff --git a/.github/workflows/on.pr.yml b/.github/workflows/on.pr.yml new file mode 100644 index 000000000..6f7d6eb37 --- /dev/null +++ b/.github/workflows/on.pr.yml @@ -0,0 +1,148 @@ +name: "PR" + +# Labels to control this PR flow: +# +# - ci:api-check-bypass - Bypass API check failures. +# - ci:fmt-ignore - Ignore formatting failures. + +"on": + pull_request: + types: [opened, reopened, synchronize] + +permissions: + contents: read + +concurrency: + group: "pr-${{ github.event.pull_request.number }}" + cancel-in-progress: true + +jobs: + ## + ## Job: Pre-flight Checks + ## + preflight-checks: + name: "Pre-flight Checks" + runs-on: ${{ vars.RUNNER_DEFAULT || 'ubuntu-latest' }} + permissions: + contents: "read" + checks: "read" + packages: "read" + steps: + - name: "Setup: Harden Runner" + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + - name: "Setup: Checkout" + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + with: + submodules: true + persist-credentials: false + fetch-depth: '0' + - name: "Setup: GraalVM (Java 21)" + uses: graalvm/setup-graalvm@4a200f28cd70d1940b5e33bd00830b7dc71a7e2b # v1.2.6 + with: + distribution: "graalvm" + java-version: "21" + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: "Check: Build Compile" + uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0 + continue-on-error: ${{ contains(github.event.pull_request.labels.*.name, 'ci:api-check-bypass') }} + env: + CI: true + GITHUB_ACTOR: ${{ env.GITHUB_ACTOR }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + with: + cache-read-only: false + build-scan-publish: true + build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" + build-scan-terms-of-service-agree: "yes" + cache-encryption-key: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + arguments: | + projects + tasks + --scan + + ## + ## Job: Build + ## + build: + name: "Build" + uses: ./.github/workflows/job.build.yml + needs: [preflight-checks] + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + + ## + ## Job: Native Build + ## + native-build: + name: "Build" + uses: ./.github/workflows/job.native-build.yml + needs: [preflight-checks, build] + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + permissions: + contents: "read" + + ## + ## Job: Tests + ## + pr-tests: + name: "Tests" + uses: ./.github/workflows/job.tests.yml + needs: [preflight-checks, build] + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + ## + ## Job: Submit Dependency Graph + ## + dependency-graph: + name: "Checks" + uses: ./.github/workflows/job.dependency-graph.yml + needs: [preflight-checks] + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + permissions: + ## Needed for build graph publishing + contents: "write" + + ## + ## Job: Checks for Formatting/Style + ## + check-format: + name: "Checks" + uses: ./.github/workflows/checks.formatting.yml + needs: [preflight-checks] + permissions: + contents: "read" + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + with: + ignore_failures: ${{ contains(github.event.pull_request.labels.*.name, 'ci:fmt-ignore') }} + + ## + ## Job: Check for Wrapper + ## + check-wrapper: + name: "Checks" + uses: ./.github/workflows/checks.gradle-wrapper.yml + needs: [preflight-checks] + permissions: + contents: "read" + + ## + ## Job: Checks for Vulnerabilities/Licensing + ## + check-dependencies: + name: "Checks" + uses: ./.github/workflows/checks.dependency-review.yml + needs: [preflight-checks, dependency-graph] + permissions: + contents: "read" diff --git a/.github/workflows/on.push.yml b/.github/workflows/on.push.yml new file mode 100644 index 000000000..06d77f061 --- /dev/null +++ b/.github/workflows/on.push.yml @@ -0,0 +1,69 @@ +name: "CI" + +"on": + merge_group: {} + push: + branches: + - main + +permissions: + contents: read + +concurrency: + group: "push-${{ github.sha }}" + +jobs: + ## + ## Job: Build Dependency Graph + ## + build-graph: + name: "Checks" + uses: ./.github/workflows/job.dependency-graph.yml + permissions: + ## Needed for submission of dependency graphs + contents: "write" + + ## + ## Job: Build + ## + build: + name: "Build" + uses: ./.github/workflows/job.build.yml + needs: [preflight-checks] + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + + ## + ## Job: Tests + ## + tests: + name: "Tests" + uses: ./.github/workflows/job.tests.yml + needs: [build] + secrets: + GRADLE_CONFIGURATION_KEY: ${{ secrets.GRADLE_CONFIGURATION_KEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + + ## + ## Job: Checks with Scorecard + ## + check-scorecard: + name: "Checks" + uses: ./.github/workflows/checks.scorecards.yml + needs: [build-graph] + permissions: + actions: "read" + contents: "read" + checks: "read" + deployments: "read" + discussions: "read" + id-token: "write" + issues: "read" + packages: "read" + pages: "read" + pull-requests: "read" + repository-projects: "read" + security-events: "write" + statuses: "read" diff --git a/bench/gradle.lockfile b/bench/gradle.lockfile index 66a959fdc..dcfd6f7a0 100644 --- a/bench/gradle.lockfile +++ b/bench/gradle.lockfile @@ -7,9 +7,14 @@ net.sf.jopt-simple:jopt-simple:5.0.4=jmh,jmhCompileClasspath,jmhImplementationDe org.apache.commons:commons-math3:3.6.1=jmh,jmhCompileClasspath,jmhImplementationDependenciesMetadata,jmhRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.compiler:compiler:23.0.6=graal -org.graalvm.sdk:graal-sdk:23.0.6=graal,jmh,jmhRuntimeClasspath,truffle -org.graalvm.truffle:truffle-api:23.0.6=graal,jmh,jmhRuntimeClasspath,truffle +org.graalvm.compiler:compiler:24.1.2=graal +org.graalvm.polyglot:polyglot:24.1.2=jmh,jmhRuntimeClasspath,truffle +org.graalvm.sdk:collections:24.1.2=graal,jmh,jmhRuntimeClasspath,truffle +org.graalvm.sdk:graal-sdk:24.1.2=jmh,jmhRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=jmh,jmhRuntimeClasspath,truffle +org.graalvm.sdk:word:24.1.2=graal,jmh,jmhRuntimeClasspath,truffle +org.graalvm.truffle:truffle-api:24.1.2=jmh,jmhRuntimeClasspath,truffle +org.graalvm.truffle:truffle-compiler:24.1.2=graal org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 09576ef80..0e0766252 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -15,9 +15,16 @@ */ import org.jetbrains.kotlin.gradle.dsl.JvmTarget -plugins { `kotlin-dsl` } +plugins { + `kotlin-dsl` + `jvm-toolchains` +} + +// Keep this in sync with the constants in `BuildInfo.kt` (those are not addressable here). +val toolchainVersion = 21 dependencies { + implementation(libs.abiCheckPlugin) implementation(libs.downloadTaskPlugin) implementation(libs.spotlessPlugin) implementation(libs.kotlinPlugin) { exclude(module = "kotlin-android-extensions") } @@ -29,8 +36,16 @@ dependencies { } java { - sourceCompatibility = JavaVersion.VERSION_17 - targetCompatibility = JavaVersion.VERSION_17 + sourceCompatibility = JavaVersion.toVersion(toolchainVersion) + targetCompatibility = JavaVersion.toVersion(toolchainVersion) + + toolchain { + languageVersion = JavaLanguageVersion.of(toolchainVersion) + vendor = JvmVendorSpec.ORACLE + } } -kotlin { compilerOptions { jvmTarget = JvmTarget.JVM_17 } } +kotlin { + jvmToolchain(toolchainVersion) + compilerOptions { jvmTarget = JvmTarget.JVM_21 } +} diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts index fce70fef5..399b53d29 100644 --- a/buildSrc/settings.gradle.kts +++ b/buildSrc/settings.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,8 @@ pluginManagement { } } +plugins { id("org.gradle.toolchains.foojay-resolver-convention") } + // makes ~/.gradle/init.gradle unnecessary and ~/.gradle/gradle.properties optional dependencyResolutionManagement { // use same version catalog as main build diff --git a/buildSrc/src/main/kotlin/BuildInfo.kt b/buildSrc/src/main/kotlin/BuildInfo.kt index df44e3902..d66038984 100644 --- a/buildSrc/src/main/kotlin/BuildInfo.kt +++ b/buildSrc/src/main/kotlin/BuildInfo.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,13 +17,60 @@ import java.io.File import org.gradle.api.Project +import org.gradle.api.Task import org.gradle.api.artifacts.VersionCatalog import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.attributes.Category +import org.gradle.api.provider.Provider +import org.gradle.api.tasks.TaskProvider +import org.gradle.api.tasks.testing.Test +import org.gradle.internal.extensions.stdlib.capitalized +import org.gradle.jvm.toolchain.* +import org.gradle.kotlin.dsl.assign import org.gradle.kotlin.dsl.getByType +import org.gradle.kotlin.dsl.register +import org.gradle.kotlin.dsl.support.serviceOf +import org.gradle.process.CommandLineArgumentProvider + +/** + * JVM bytecode target; this is pinned at a reasonable version, because downstream JVM projects + * which consume Pkl will need a minimum Bytecode level at or above this one. + * + * Kotlin and Java need matching bytecode targets, so this is expressed as a build setting and + * constant default. To override, pass `-DpklJdkToolchain=X` to the Gradle command line, where X is + * a major Java version. + */ +const val PKL_JVM_TARGET_DEFAULT_MAXIMUM = 17 + +/** + * The Pkl build requires JDK 21+ to build, because JDK 17 is no longer within the default set of + * supported JDKs for GraalVM. This is a build-time requirement, not a runtime requirement. + * + * See `settings.gradle.kts`, where this is enforced. + */ +const val PKL_JDK_VERSION_MIN = 21 + +/** + * The JDK minimum is set to match the bytecode minimum, to guarantee that fat JARs work against the + * earliest supported bytecode target. + */ +const val PKL_TEST_JDK_MINIMUM = PKL_JVM_TARGET_DEFAULT_MAXIMUM + +/** + * Maximum JDK version which Pkl is tested with; this should be bumped when new JDK stable releases + * are issued. At the time of this writing, JDK 23 is the latest available release. + */ +const val PKL_TEST_JDK_MAXIMUM = 23 + +/** + * Test the full suite of JDKs between [PKL_TEST_JDK_MINIMUM] and [PKL_TEST_JDK_MAXIMUM]; if this is + * set to `false` (or overridden on the command line), only LTS releases are tested by default. + */ +const val PKL_TEST_ALL_JDKS = false // `buildInfo` in main build scripts // `project.extensions.getByType()` in precompiled script plugins -open class BuildInfo(project: Project) { +open class BuildInfo(private val project: Project) { inner class GraalVm(val arch: String) { val homeDir: String by lazy { System.getenv("GRAALVM_HOME") ?: "${System.getProperty("user.home")}/.graalvm" @@ -80,6 +127,194 @@ open class BuildInfo(project: Project) { val isReleaseBuild: Boolean by lazy { java.lang.Boolean.getBoolean("releaseBuild") } + val isNativeArch: Boolean by lazy { java.lang.Boolean.getBoolean("nativeArch") } + + val jvmTarget: Int by lazy { + System.getProperty("pklJvmTarget")?.toInt() ?: PKL_JVM_TARGET_DEFAULT_MAXIMUM + } + + // JPMS exports for Truffle. + val jpmsExports = + arrayOf( + "org.graalvm.truffle/com.oracle.truffle.api.exception=ALL-UNNAMED", + "org.graalvm.truffle/com.oracle.truffle.api=ALL-UNNAMED", + "org.graalvm.truffle/com.oracle.truffle.api.nodes=ALL-UNNAMED", + "org.graalvm.truffle/com.oracle.truffle.api.source=ALL-UNNAMED", + ) + + val jdkVendor: JvmVendorSpec = JvmVendorSpec.GRAAL_VM + + val jdkToolchainVersion: JavaLanguageVersion by lazy { + JavaLanguageVersion.of(System.getProperty("pklJdkToolchain")?.toInt() ?: PKL_JDK_VERSION_MIN) + } + + val jdkTestFloor: JavaLanguageVersion by lazy { JavaLanguageVersion.of(PKL_TEST_JDK_MINIMUM) } + + val jdkTestCeiling: JavaLanguageVersion by lazy { JavaLanguageVersion.of(PKL_TEST_JDK_MAXIMUM) } + + val testAllJdks: Boolean by lazy { + // By default, Pkl is tested against LTS JDK releases within the bounds of `PKL_TEST_JDK_TARGET` + // and `PKL_TEST_JDK_MAXIMUM`. To test against the full suite of JDK versions, past and present, + // set `-DpklTestAllJdks=true` on the Gradle command line. This results in non-LTS releases, old + // releases, and "experimental releases" (newer than the toolchain version) being included in + // the default `check` suite. + System.getProperty("pklTestAllJdks")?.toBoolean() ?: PKL_TEST_ALL_JDKS + } + + val testExperimentalJdks: Boolean by lazy { + System.getProperty("pklTestFutureJdks")?.toBoolean() ?: testAllJdks + } + + val testJdkVendors: Sequence by lazy { + // By default, only OpenJDK is tested during multi-JDK testing. Flip `-DpklTestAllVendors=true` + // to additionally test against a suite of JDK vendors, including Azul, Oracle, and GraalVM. + when (System.getProperty("pklTestAllVendors")?.toBoolean()) { + true -> sequenceOf(JvmVendorSpec.AZUL, JvmVendorSpec.GRAAL_VM, JvmVendorSpec.ORACLE) + else -> sequenceOf(JvmVendorSpec.AZUL) + } + } + + val jdkTestRange: JavaVersionRange by lazy { + JavaVersionRange.inclusive(jdkTestFloor, jdkTestCeiling) + } + + private fun JavaToolchainSpec.pklJdkToolchain() { + languageVersion.set(jdkToolchainVersion) + vendor.set(jdkVendor) + } + + private fun labelForVendor(vendor: JvmVendorSpec): String = + when (vendor) { + JvmVendorSpec.AZUL -> "Zulu" + JvmVendorSpec.GRAAL_VM -> "GraalVm" + JvmVendorSpec.ORACLE -> "Oracle" + JvmVendorSpec.ADOPTIUM -> "OpenJdk" + else -> error("Unrecognized JDK vendor: $vendor") + } + + private fun testNamer(baseName: () -> String): (JavaLanguageVersion, JvmVendorSpec?) -> String = + { jdkTarget, vendor -> + val targetToken = + when (vendor) { + null -> "Jdk${jdkTarget.asInt()}" + else -> "Jdk${jdkTarget.asInt()}${labelForVendor(vendor).capitalized()}" + } + if (jdkTarget > jdkToolchainVersion) { + // test targets above the toolchain target are considered "experimental". + "${baseName()}${targetToken}Experimental" + } else { + "${baseName()}${targetToken}" + } + } + + fun multiJdkTestingWith( + templateTask: TaskProvider, + includeExperimental: Boolean = testExperimentalJdks, + namer: (JavaLanguageVersion, JvmVendorSpec?) -> String = testNamer { templateTask.get().name }, + configurator: Test.(launcher: Provider) -> Unit = {}, + ): Iterable> = + multiJdkTesting( + includeExperimental = includeExperimental, + baseNameProvider = { templateTask.get().name }, + namer = namer, + ) { jdkTarget -> + // 1) copy configurations from the template task + dependsOn(templateTask) + templateTask.get().let { template -> + when (template) { + is Test -> { + classpath = template.classpath + testClassesDirs = template.testClassesDirs + jvmArgumentProviders.addAll(template.jvmArgumentProviders) + forkEvery = template.forkEvery + maxParallelForks = template.maxParallelForks + minHeapSize = template.minHeapSize + maxHeapSize = template.maxHeapSize + } + + else -> error("No idea how to clone task for multi-JDK testing: $template") + } + } + + // 2) dispatch the user's configurator + configurator(jdkTarget) + } + + @Suppress("UnstableApiUsage") + fun multiJdkTesting( + includeExperimental: Boolean = testExperimentalJdks, + baseNameProvider: () -> String = { "test" }, + namer: (JavaLanguageVersion, JvmVendorSpec?) -> String = testNamer(baseNameProvider), + configurator: Test.(launcher: Provider) -> Unit, + ): Iterable> = + with(project) { + val isMultiVendor = testJdkVendors.count() > 1 + val basename = baseNameProvider() + + serviceOf().let { toolchains -> + jdkTestRange + .asSequence() + .flatMap { targetVersion -> + // multiply out by jdk vendor + testJdkVendors.map { vendor -> (targetVersion to vendor) } + } + .filter { (version, _) -> + // unless we are instructed to test all JDKs, tests only include LTS releases and + // versions above the toolchain version. + testAllJdks || (JavaVersionRange.isLTS(version) || version >= jdkToolchainVersion) + } + .map { (jdkTarget, vendor) -> + if (jdkToolchainVersion == jdkTarget) + tasks.register(namer(jdkTarget, vendor)) { + // alias to `test` + dependsOn(basename) + group = Category.VERIFICATION + description = "Alias for regular '$basename' task, on JDK ${jdkTarget.asInt()}" + } + else + tasks.register(namer(jdkTarget, vendor.takeIf { isMultiVendor }), Test::class) { + group = Category.VERIFICATION + description = "Run tests against JDK ${jdkTarget.asInt()}" + configurator(toolchains.launcherFor { languageVersion = jdkTarget }) + + // fix: on jdk17, we must force the polyglot module on to the modulepath + if (jdkTarget.asInt() == 17) + jvmArgumentProviders.add( + CommandLineArgumentProvider { + buildList { listOf("--add-modules=org.graalvm.polyglot") } + } + ) + } + } + .filter { + // only include experimental tasks in the return suite if the flag is set. if the task + // is withheld from the returned list, it will not be executed by default with `gradle + // check`. + includeExperimental || !it.name.contains("Experimental") + } + .toList() + } + } + + val javaCompiler: Provider by lazy { + project.serviceOf().let { toolchainService -> + toolchainService.compilerFor { pklJdkToolchain() } + } + } + + val javaTestLauncher: Provider by lazy { + project.serviceOf().let { toolchainService -> + toolchainService.launcherFor { pklJdkToolchain() } + } + } + + val multiJdkTesting: Boolean by lazy { + // By default, Pkl is tested against a full range of JDK versions, past and present, within the + // supported bounds of `PKL_TEST_JDK_TARGET` and `PKL_TEST_JDK_MAXIMUM`. To opt-out of this + // behavior, set `-DpklMultiJdkTesting=false` on the Gradle command line. + System.getProperty("pklMultiJdkTesting")?.toBoolean() ?: true + } + val hasMuslToolchain: Boolean by lazy { // see "install musl" in .circleci/jobs/BuildNativeJob.pkl File(System.getProperty("user.home"), "staticdeps/bin/x86_64-linux-musl-gcc").exists() diff --git a/buildSrc/src/main/kotlin/InstallGraalVm.kt b/buildSrc/src/main/kotlin/InstallGraalVm.kt index 79acad0b1..8ab123567 100644 --- a/buildSrc/src/main/kotlin/InstallGraalVm.kt +++ b/buildSrc/src/main/kotlin/InstallGraalVm.kt @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ abstract class InstallGraalVm @Inject constructor( private val fileOperations: FileOperations, - private val execOperations: ExecOperations + private val execOperations: ExecOperations, ) : DefaultTask() { @get:Input abstract val graalVm: Property @@ -58,10 +58,16 @@ constructor( if (os.isMacOsX) distroDir.resolve("Contents/Home/bin") else distroDir.resolve("bin") println("Installing native-image into $distroDir") - execOperations.exec { - val executableName = if (os.isWindows) "gu.cmd" else "gu" - executable = distroBinDir.resolve(executableName).toString() - args("install", "--no-progress", "native-image") + val gvmVersionMajor = + requireNotNull(graalVm.get().version.split(".").first().toIntOrNull()) { + "Invalid GraalVM JDK version: ${graalVm.get().graalVmJdkVersion}" + } + if (gvmVersionMajor < 24) { + execOperations.exec { + val executableName = if (os.isWindows) "gu.cmd" else "gu" + executable = distroBinDir.resolve(executableName).toString() + args("install", "--no-progress", "native-image") + } } println("Creating symlink ${graalVm.get().installDir} for $distroDir") diff --git a/buildSrc/src/main/kotlin/JavaVersionRange.kt b/buildSrc/src/main/kotlin/JavaVersionRange.kt new file mode 100644 index 000000000..c5f190327 --- /dev/null +++ b/buildSrc/src/main/kotlin/JavaVersionRange.kt @@ -0,0 +1,64 @@ +/* + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@file:Suppress("MemberVisibilityCanBePrivate") + +import java.util.* +import org.gradle.jvm.toolchain.JavaLanguageVersion + +typealias JavaVersionPair = Pair + +// All LTS releases. +private val ltsReleases = + sortedSetOf( + JavaLanguageVersion.of(8), + JavaLanguageVersion.of(11), + JavaLanguageVersion.of(17), + JavaLanguageVersion.of(21), + ) + +/** Describes an inclusive range of JVM versions, based on the [JavaLanguageVersion] type. */ +@JvmInline +value class JavaVersionRange private constructor(private val bounds: JavaVersionPair) : + Iterable { + @Suppress("unused") + companion object { + fun isLTS(version: JavaLanguageVersion): Boolean = version in ltsReleases + + fun inclusive(floor: JavaLanguageVersion, ceiling: JavaLanguageVersion): JavaVersionRange = + JavaVersionRange(floor to ceiling) + + fun startingAt(floor: JavaLanguageVersion): JavaVersionRange = + inclusive(floor, JavaLanguageVersion.of(PKL_TEST_JDK_MAXIMUM)) + + fun upTo(ceiling: JavaLanguageVersion): JavaVersionRange = + inclusive(JavaLanguageVersion.of(PKL_TEST_JDK_MINIMUM), ceiling) + } + + operator fun contains(version: JavaLanguageVersion): Boolean = + version >= bounds.first && version <= bounds.second + + fun asSequence(): Sequence = sequence { + var current = bounds.first + while (current <= bounds.second) { + yield(current) + current = JavaLanguageVersion.of(current.asInt() + 1) + } + } + + fun asSortedSet(): SortedSet = asSequence().toSortedSet() + + override fun iterator(): Iterator = asSortedSet().iterator() +} diff --git a/buildSrc/src/main/kotlin/pklFatJar.gradle.kts b/buildSrc/src/main/kotlin/pklFatJar.gradle.kts index fd70e02d9..38bfc3ae5 100644 --- a/buildSrc/src/main/kotlin/pklFatJar.gradle.kts +++ b/buildSrc/src/main/kotlin/pklFatJar.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,8 +40,6 @@ val relocations = mapOf( // pkl-core dependencies "org.antlr.v4." to "org.pkl.thirdparty.antlr.v4.", - "com.oracle.truffle" to "org.pkl.thirdparty.truffle", - "org.graalvm." to "org.pkl.thirdparty.graalvm.", "org.organicdesign.fp." to "org.pkl.thirdparty.paguro.", "org.snakeyaml.engine." to "org.pkl.thirdparty.snakeyaml.engine.", "org.msgpack." to "org.pkl.thirdparty.msgpack.", @@ -71,7 +69,7 @@ val relocations = "com.squareup.kotlinpoet." to "org.pkl.thirdparty.kotlinpoet.", ) -val nonRelocations = listOf("com/oracle/truffle/") +val nonRelocations = listOf("com/oracle/truffle/", "org/graalvm/") tasks.shadowJar { inputs.property("relocations", relocations) @@ -80,9 +78,28 @@ tasks.shadowJar { configurations = listOf(project.configurations.runtimeClasspath.get()) + // not required at runtime / fat JARs can't be used in native-image builds anyway + exclude("org/pkl/cli/svm/**") + exclude("META-INF/maven/**") exclude("META-INF/upgrade/**") - exclude("META-INF/versions/19/**") + + val info = project.extensions.getByType() + val minimumJvmTarget = JavaVersion.toVersion(info.jvmTarget) + + manifest.attributes( + // Certain exports need to be added to the Java modulepath for Java 17 to work properly with + // shaded JARs. See the following link for an explanation of this syntax: + // https://bugs.openjdk.org/browse/JDK-8335225 + "Add-Exports" to info.jpmsExports.joinToString(" ") { it.substringBefore("=") } + ) + + // effectively, this results in calls excluding: + // `META-INF/versions/{18-25}/**` + // at the time of this writing; multi-release JARs beyond JDK 21 break the current + // version of the Shadow plugin, and aren't needed for Truffle's use by Pkl. + JavaVersionRange.startingAt(JavaLanguageVersion.of(minimumJvmTarget.majorVersion.toInt() + 1)) + .forEach { exclude("META-INF/versions/${it.asInt()}/**") } // org.antlr.v4.runtime.misc.RuleDependencyProcessor exclude("META-INF/services/javax.annotation.processing.Processor") diff --git a/buildSrc/src/main/kotlin/pklGradlePluginTest.gradle.kts b/buildSrc/src/main/kotlin/pklGradlePluginTest.gradle.kts index 6865cb058..d950d756a 100644 --- a/buildSrc/src/main/kotlin/pklGradlePluginTest.gradle.kts +++ b/buildSrc/src/main/kotlin/pklGradlePluginTest.gradle.kts @@ -87,7 +87,7 @@ tasks.addRule("Pattern: compatibilityTest[All|Releases|Latest|Candidate|Nightly| } } -fun createCompatibilityTestTask(versionInfo: GradleVersionInfo) = +fun createCompatibilityTestTask(versionInfo: GradleVersionInfo): TaskProvider = createCompatibilityTestTask(versionInfo.version, versionInfo.downloadUrl) fun createCompatibilityTestTask(version: String, downloadUrl: String): TaskProvider { diff --git a/buildSrc/src/main/kotlin/pklJavaLibrary.gradle.kts b/buildSrc/src/main/kotlin/pklJavaLibrary.gradle.kts index 7579a8521..cd281e47b 100644 --- a/buildSrc/src/main/kotlin/pklJavaLibrary.gradle.kts +++ b/buildSrc/src/main/kotlin/pklJavaLibrary.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,25 +13,55 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -@file:Suppress("HttpUrlsUsage") +@file:Suppress("HttpUrlsUsage", "unused") import org.gradle.accessors.dm.LibrariesForLibs plugins { `java-library` + `jvm-toolchains` id("pklKotlinTest") id("com.diffplug.spotless") } // make sources Jar available to other subprojects -val sourcesJarConfiguration = configurations.register("sourcesJar") +val sourcesJarConfiguration: Provider = configurations.register("sourcesJar") + +// JPMS exports for Truffle. +val jpmsExports = + arrayOf( + "org.graalvm.truffle/com.oracle.truffle.api.exception=ALL-UNNAMED", + "org.graalvm.truffle/com.oracle.truffle.api=ALL-UNNAMED", + "org.graalvm.truffle/com.oracle.truffle.api.nodes=ALL-UNNAMED", + "org.graalvm.truffle/com.oracle.truffle.api.source=ALL-UNNAMED", + ) + +// JVM properties to set during testing. +val testProperties = + mapOf( + // @TODO: this should be removed once pkl supports JPMS as a true Java Module. + "polyglotimpl.DisableClassPathIsolation" to true + ) // Version Catalog library symbols. val libs = the() +// Build configuration. +val info = project.extensions.getByType() + java { + val jvmTarget = JavaVersion.toVersion(info.jvmTarget) + withSourcesJar() // creates `sourcesJar` task withJavadocJar() + + sourceCompatibility = jvmTarget + targetCompatibility = jvmTarget + + toolchain { + languageVersion = info.jdkToolchainVersion + vendor = info.jdkVendor + } } artifacts { @@ -56,7 +86,11 @@ tasks.compileKotlin { enabled = false } tasks.jar { manifest { - attributes += mapOf("Automatic-Module-Name" to "org.${project.name.replace("-", ".")}") + attributes += + mapOf( + "Automatic-Module-Name" to "org.${project.name.replace("-", ".")}", + "Add-Exports" to jpmsExports.joinToString(" ") { it.substringBefore("=") }, + ) } } @@ -80,9 +114,58 @@ val workAroundKotlinGradlePluginBug by } } +val truffleJavacArgs = + listOf( + // TODO: determine correct limits for Truffle specializations + // (see https://graalvm.slack.com/archives/CNQSB2DHD/p1712380902746829) + "-Atruffle.dsl.SuppressWarnings=truffle-limit" + ) + +val jpmsJavacArgs = + listOf( + // Required for use of `sun.misc.Unsafe` in Truffle. + "--add-modules=jdk.unsupported" + ) + +val javacArgsProvider = CommandLineArgumentProvider { jpmsJavacArgs } + tasks.compileJava { + javaCompiler = info.javaCompiler dependsOn(workAroundKotlinGradlePluginBug) - // TODO: determine correct limits for Truffle specializations - // (see https://graalvm.slack.com/archives/CNQSB2DHD/p1712380902746829) - options.compilerArgs.add("-Atruffle.dsl.SuppressWarnings=truffle-limit") + options.compilerArgs.addAll(truffleJavacArgs) } + +tasks.withType().configureEach { + val jvmTarget = JavaVersion.toVersion(info.jvmTarget) + javaCompiler = info.javaCompiler + sourceCompatibility = jvmTarget.majorVersion + targetCompatibility = jvmTarget.majorVersion + + options.compilerArgumentProviders.add(javacArgsProvider) +} + +tasks.withType().configureEach { jvmArgs(jpmsJavacArgs) } + +fun Test.configureJdkTestTask(launcher: Provider) { + useJUnitPlatform() + javaLauncher = launcher + jvmArgs.addAll(jpmsJavacArgs) + jvmArgs.addAll(testProperties.map { (key, value) -> "-D$key=$value" }) +} + +tasks.test { configureJdkTestTask(info.javaTestLauncher) } + +// Prepare test tasks for each JDK version which is within the test target suite for Pkl. Each task +// uses a pinned JDK toolchain version, and is named for the major version which is tested. +// +// Test tasks configured in this manner are executed manually by name, e.g. `./gradlew testJdk11`, +// and automatically as dependencies of `check`. +// +// We omit the current JDK from this list because it is already tested, in effect, by the default +// `test` task. +// +// Pkl subprojects may elect to further configure these tasks as needed; by default, each task +// inherits the configuration of the default `test` task (aside from an overridden launcher). +val jdkTestTasks = info.multiJdkTestingWith(tasks.test) + +if (info.multiJdkTesting) tasks.check { dependsOn(jdkTestTasks) } diff --git a/buildSrc/src/main/kotlin/pklKotlinLibrary.gradle.kts b/buildSrc/src/main/kotlin/pklKotlinLibrary.gradle.kts index c66ec1ac9..4920906a0 100644 --- a/buildSrc/src/main/kotlin/pklKotlinLibrary.gradle.kts +++ b/buildSrc/src/main/kotlin/pklKotlinLibrary.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,16 @@ * limitations under the License. */ import org.gradle.accessors.dm.LibrariesForLibs +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile plugins { id("pklJavaLibrary") - + id("org.jetbrains.kotlinx.binary-compatibility-validator") kotlin("jvm") } +// Build configuration. val buildInfo = project.extensions.getByType() // Version Catalog library symbols. @@ -38,3 +41,25 @@ dependencies { tasks.compileKotlin { enabled = true // disabled by pklJavaLibrary } + +tasks.withType().configureEach { + compilerOptions { + // must match the minimum JVM bytecode target for Pkl + jvmTarget = JvmTarget.fromTarget(buildInfo.jvmTarget.toString()) + + // enable java parameter names for stronger Kotlin-Java interop and debugging + javaParameters = true + + // consider kotlin warnings errors if not otherwise suppressed + allWarningsAsErrors = false + + freeCompilerArgs.addAll( + listOf( + // enable strict nullability checking and integration with pkl's own annotations + "-Xjsr305=strict", + "-Xjsr305=@org.pkl.core.util.Nullable:strict", + "-Xjsr305=@org.pkl.core.util.Nonnull:strict", + ) + ) + } +} diff --git a/docs/gradle.lockfile b/docs/gradle.lockfile index 59f311dbc..323867115 100644 --- a/docs/gradle.lockfile +++ b/docs/gradle.lockfile @@ -6,8 +6,12 @@ io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath diff --git a/docs/src/test/kotlin/DocSnippetTests.kt b/docs/src/test/kotlin/DocSnippetTests.kt index 03de67df7..14b9a2fb4 100644 --- a/docs/src/test/kotlin/DocSnippetTests.kt +++ b/docs/src/test/kotlin/DocSnippetTests.kt @@ -150,6 +150,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine) { var line = "" var prevLine = "" diff --git a/gradle.properties b/gradle.properties index 9a5ccdc48..f567cddf5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,6 +5,7 @@ version=0.28.0 # google-java-format requires jdk.compiler exports org.gradle.jvmargs= \ + -XX:+UseParallelGC \ -Dfile.encoding=UTF-8 \ --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED \ @@ -15,4 +16,5 @@ org.gradle.jvmargs= \ org.gradle.parallel=true org.gradle.caching=true kotlin.stdlib.default.dependency=false +kotlin.daemon.jvmargs=-XX:+UseParallelGC #org.gradle.workers.max=1 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8dccca073..7a89ac93a 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,4 +1,5 @@ [versions] # ordered alphabetically +abiCheck = "0.17.0" antlr = "4.+" assertj = "3.+" checksumPlugin = "1.4.0" @@ -9,14 +10,14 @@ geantyref = "1.+" googleJavaFormat = "1.25.2" # must not use `+` because used in download URL # 23.1.x requires JDK 20+ -graalVm = "23.0.6" -graalVmJdkVersion = "17.0.12" +graalVm = "24.1.2" +graalVmJdkVersion = "21.0.5" # slightly hacky but convenient place so we remember to update the checksum -graalVmSha256-macos-x64 = "3ecac1471f3fa95a56c5b75c65db9e60ac4551f56eda09eb9da95e6049ea77d7" -graalVmSha256-macos-aarch64 = "4cdfdc6c9395f6773efcd191b6605f1b7c8e1b78ab900ab5cff34720a3feffc5" -graalVmSha256-linux-x64 = "b6f3dace24cf1960ec790216f4c86f00d4f43df64e4e8b548f6382f04894713f" -graalVmSha256-linux-aarch64 = "bd991d486b92deb74337b881e0f13a764c9c1e90fc358819080f7321fa5175e8" -graalVmSha256-windows-x64 = "8b978e56dddc0edc60db99794b56975740d9c52293b31549cfc3f7516fc18b43" +graalVmSha256-macos-x64 = "2d9b09e28bc1bb6ff219bf62eacc4626c7740b4f1829ede9ea4450f33e9c0826" +graalVmSha256-macos-aarch64 = "cb68cb2c796f42f37a56fcd1385d8b86cca12e0b46c5618a5ed3ec7dd2260f6f" +graalVmSha256-linux-x64 = "c1960d4f9d278458bde1cd15115ac2f0b3240cb427d51cfeceb79dab91a7f5c9" +graalVmSha256-linux-aarch64 = "771b308852853cf93f7a3fc429741dd17502b8c5fa91930de6af8ded461e2dc3" +graalVmSha256-windows-x64 = "06f0edb4d7e6c0063ca0db696538652bbd3983b81f264171da2961873c5e9e6d" ideaExtPlugin = "1.1.9" javaPoet = "0.+" javaxInject = "1" @@ -49,6 +50,7 @@ spotlessPlugin = "6.25.0" wiremock = "3.+" [libraries] # ordered alphabetically +abiCheckPlugin = { group = "org.jetbrains.kotlinx.binary-compatibility-validator", name = "org.jetbrains.kotlinx.binary-compatibility-validator.gradle.plugin", version.ref = "abiCheck" } antlr = { group = "com.tunnelvisionlabs", name = "antlr4", version.ref = "antlr" } antlrRuntime = { group = "com.tunnelvisionlabs", name = "antlr4-runtime", version.ref = "antlr" } assertj = { group = "org.assertj", name = "assertj-core", version.ref = "assertj" } @@ -93,9 +95,12 @@ spotlessPlugin = { group = "com.diffplug.spotless", name = "spotless-plugin-grad svm = { group = "org.graalvm.nativeimage", name = "svm", version.ref = "graalVm" } truffleApi = { group = "org.graalvm.truffle", name = "truffle-api", version.ref = "graalVm" } truffleDslProcessor = { group = "org.graalvm.truffle", name = "truffle-dsl-processor", version.ref = "graalVm" } +truffleSvm = { group = "org.graalvm.nativeimage", name = "truffle-runtime-svm", version.ref = "graalVm" } +truffleRuntime = { group = "org.graalvm.truffle", name = "truffle-runtime", version.ref = "graalVm" } wiremock = { group = "org.wiremock", name = "wiremock", version.ref = "wiremock" } [plugins] # ordered alphabetically +abiCheck = { id = "org.jetbrains.kotlinx.binary-compatibility-validator" } checksum = { id = "org.gradle.crypto.checksum", version.ref = "checksumPlugin" } ideaExt = { id = "org.jetbrains.gradle.plugin.idea-ext", version.ref = "ideaExtPlugin" } jmh = { id = "me.champeau.jmh", version.ref = "jmhPlugin" } diff --git a/pkl-cli/api/pkl-cli.api b/pkl-cli/api/pkl-cli.api new file mode 100644 index 000000000..f8c28e188 --- /dev/null +++ b/pkl-cli/api/pkl-cli.api @@ -0,0 +1,174 @@ +public final class org/pkl/cli/CliEvaluator : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/cli/CliEvaluatorOptions;)V + public fun (Lorg/pkl/cli/CliEvaluatorOptions;Ljava/io/Reader;)V + public fun (Lorg/pkl/cli/CliEvaluatorOptions;Ljava/io/Reader;Ljava/io/Writer;)V + public synthetic fun (Lorg/pkl/cli/CliEvaluatorOptions;Ljava/io/Reader;Ljava/io/Writer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getFileOutputPaths ()Ljava/util/Map; + public final fun getOutputDirectories ()Ljava/util/Set; + public final fun getOutputFiles ()Ljava/util/Set; +} + +public final class org/pkl/cli/CliEvaluatorOptions { + public static final field Companion Lorg/pkl/cli/CliEvaluatorOptions$Companion; + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun copy (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/pkl/cli/CliEvaluatorOptions; + public static synthetic fun copy$default (Lorg/pkl/cli/CliEvaluatorOptions;Lorg/pkl/commons/cli/CliBaseOptions;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lorg/pkl/cli/CliEvaluatorOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getBase ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun getExpression ()Ljava/lang/String; + public final fun getModuleOutputSeparator ()Ljava/lang/String; + public final fun getMultipleFileOutputPath ()Ljava/lang/String; + public final fun getOutputFormat ()Ljava/lang/String; + public final fun getOutputPath ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/cli/CliEvaluatorOptions$Companion { + public final fun getDefaults ()Lorg/pkl/cli/CliEvaluatorOptions; +} + +public final class org/pkl/cli/CliImportAnalyzer : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/cli/CliImportAnalyzerOptions;)V + public fun (Lorg/pkl/cli/CliImportAnalyzerOptions;Ljava/io/Writer;)V + public synthetic fun (Lorg/pkl/cli/CliImportAnalyzerOptions;Ljava/io/Writer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +} + +public final class org/pkl/cli/CliImportAnalyzerOptions { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun component2 ()Ljava/nio/file/Path; + public final fun component3 ()Ljava/lang/String; + public final fun copy (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;)Lorg/pkl/cli/CliImportAnalyzerOptions; + public static synthetic fun copy$default (Lorg/pkl/cli/CliImportAnalyzerOptions;Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ILjava/lang/Object;)Lorg/pkl/cli/CliImportAnalyzerOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getBase ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun getOutputFormat ()Ljava/lang/String; + public final fun getOutputPath ()Ljava/nio/file/Path; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/cli/CliPackageDownloader : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;Z)V +} + +public abstract class org/pkl/cli/CliProjectCommand : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;)V + protected final fun getNormalizedProjectFiles ()Ljava/util/List; +} + +public final class org/pkl/cli/CliProjectPackager : org/pkl/cli/CliProjectCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;Lorg/pkl/commons/cli/CliTestOptions;Ljava/lang/String;ZLjava/io/Writer;Ljava/io/Writer;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;Lorg/pkl/commons/cli/CliTestOptions;Ljava/lang/String;ZLjava/io/Writer;Ljava/io/Writer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +} + +public final class org/pkl/cli/CliProjectResolver : org/pkl/cli/CliProjectCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;Ljava/io/Writer;Ljava/io/Writer;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;Ljava/io/Writer;Ljava/io/Writer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +} + +public final class org/pkl/cli/CliServer : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;)V +} + +public final class org/pkl/cli/CliTestRunner : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Lorg/pkl/commons/cli/CliTestOptions;)V + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Lorg/pkl/commons/cli/CliTestOptions;Ljava/io/Writer;)V + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Lorg/pkl/commons/cli/CliTestOptions;Ljava/io/Writer;Ljava/io/Writer;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Lorg/pkl/commons/cli/CliTestOptions;Ljava/io/Writer;Ljava/io/Writer;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +} + +public final class org/pkl/cli/commands/AnalyzeCommand : com/github/ajalt/clikt/core/NoOpCliktCommand { + public static final field Companion Lorg/pkl/cli/commands/AnalyzeCommand$Companion; + public fun (Ljava/lang/String;)V +} + +public final class org/pkl/cli/commands/AnalyzeCommand$Companion { +} + +public final class org/pkl/cli/commands/AnalyzeCommand$Companion$AnalyzeImportsCommand : org/pkl/commons/cli/commands/ModulesCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/DownloadPackageCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/EvalCommand : org/pkl/commons/cli/commands/ModulesCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/ProjectCommand : com/github/ajalt/clikt/core/NoOpCliktCommand { + public static final field Companion Lorg/pkl/cli/commands/ProjectCommand$Companion; + public fun (Ljava/lang/String;)V +} + +public final class org/pkl/cli/commands/ProjectCommand$Companion { +} + +public final class org/pkl/cli/commands/ProjectCommand$Companion$PackageCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/ProjectCommand$Companion$ResolveCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/ReplCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/RootCommand : com/github/ajalt/clikt/core/NoOpCliktCommand { + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V +} + +public final class org/pkl/cli/commands/ServerCommand : com/github/ajalt/clikt/core/CliktCommand { + public fun (Ljava/lang/String;)V + public fun run ()V +} + +public final class org/pkl/cli/commands/TestCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun (Ljava/lang/String;)V + public final fun getModules ()Ljava/util/List; + public fun run ()V +} + +public final class org/pkl/cli/svm/InitFeature : org/graalvm/nativeimage/hosted/Feature { + public fun ()V + public fun duringSetup (Lorg/graalvm/nativeimage/hosted/Feature$DuringSetupAccess;)V +} + +public final class org/pkl/cli/svm/PolyglotContextImplTarget { + public field cachedThreadInfo Lorg/pkl/cli/svm/PolyglotThreadInfoTarget; + public field singleThreadValue Lorg/pkl/cli/svm/WeakAssumedValueTarget; + public field threads Ljava/util/Map; + public fun ()V +} + +public final class org/pkl/cli/svm/PolyglotThreadInfoTarget { + public fun ()V +} + +public final class org/pkl/cli/svm/ThreadLocalHandshakeTarget { + public fun ()V +} + +public final class org/pkl/cli/svm/WeakAssumedValueTarget { + public fun ()V +} + diff --git a/pkl-cli/gradle.lockfile b/pkl-cli/gradle.lockfile index 2c33350aa..309a94469 100644 --- a/pkl-cli/gradle.lockfile +++ b/pkl-cli/gradle.lockfile @@ -54,13 +54,21 @@ org.eclipse.jetty:jetty-util:11.0.24=testCompileClasspath,testImplementationDepe org.eclipse.jetty:jetty-webapp:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.eclipse.jetty:jetty-xml:11.0.24=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.fusesource.jansi:jansi:2.4.1=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.compiler:compiler:23.0.6=compileClasspath,compileOnlyDependenciesMetadata -org.graalvm.nativeimage:native-image-base:23.0.6=compileClasspath,compileOnlyDependenciesMetadata -org.graalvm.nativeimage:objectfile:23.0.6=compileClasspath,compileOnlyDependenciesMetadata -org.graalvm.nativeimage:pointsto:23.0.6=compileClasspath,compileOnlyDependenciesMetadata -org.graalvm.nativeimage:svm:23.0.6=compileClasspath,compileOnlyDependenciesMetadata -org.graalvm.sdk:graal-sdk:23.0.6=compileClasspath,compileOnlyDependenciesMetadata,runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=compileClasspath,compileOnlyDependenciesMetadata,runtimeClasspath,testRuntimeClasspath +org.graalvm.compiler:compiler:24.1.2=compileClasspath,compileOnlyDependenciesMetadata +org.graalvm.nativeimage:native-image-base:24.1.2=compileClasspath,compileOnlyDependenciesMetadata +org.graalvm.nativeimage:objectfile:24.1.2=compileClasspath,compileOnlyDependenciesMetadata +org.graalvm.nativeimage:pointsto:24.1.2=compileClasspath,compileOnlyDependenciesMetadata +org.graalvm.nativeimage:svm:24.1.2=compileClasspath,compileOnlyDependenciesMetadata +org.graalvm.nativeimage:truffle-runtime-svm:24.1.2=compileClasspath,compileOnlyDependenciesMetadata +org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:jniutils:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.truffle:truffle-compiler:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.truffle:truffle-runtime:24.1.2=compileClasspath,compileOnlyDependenciesMetadata,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.hamcrest:hamcrest-core:2.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.hamcrest:hamcrest:2.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath @@ -72,6 +80,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -82,9 +91,9 @@ org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,ko org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.jline:jline-native:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jline:jline-reader:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jline:jline-terminal-jansi:3.23.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -98,6 +107,8 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.slf4j:slf4j-api:2.0.16=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.snakeyaml:snakeyaml-engine:2.8=runtimeClasspath,testRuntimeClasspath org.wiremock:wiremock:3.10.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath diff --git a/pkl-cli/pkl-cli.gradle.kts b/pkl-cli/pkl-cli.gradle.kts index d597821c6..af42c9fc5 100644 --- a/pkl-cli/pkl-cli.gradle.kts +++ b/pkl-cli/pkl-cli.gradle.kts @@ -13,6 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import org.gradle.kotlin.dsl.support.serviceOf + plugins { pklAllProjects pklKotlinLibrary @@ -50,6 +52,9 @@ val stagedWindowsAmd64Executable: Configuration by configurations.creating dependencies { compileOnly(libs.svm) + compileOnly(libs.truffleSvm) + implementation(libs.truffleRuntime) + compileOnly(libs.graalSdk) // CliEvaluator exposes PClass api(projects.pklCore) @@ -82,7 +87,11 @@ dependencies { } tasks.jar { - manifest { attributes += mapOf("Main-Class" to "org.pkl.cli.Main") } + manifest.attributes += + mapOf( + "Main-Class" to "org.pkl.cli.Main", + "Add-Exports" to buildInfo.jpmsExports.joinToString(" ") { it.substringBefore("=") }, + ) // not required at runtime exclude("org/pkl/cli/svm/**") @@ -126,7 +135,8 @@ val testJavaExecutable by (configurations.testRuntimeClasspath.get() - configurations.runtimeClasspath.get()) } -tasks.check { dependsOn(testJavaExecutable) } +// Setup `testJavaExecutable` tasks for multi-JDK testing. +val testJavaExecutableOnOtherJdks = buildInfo.multiJdkTestingWith(testJavaExecutable) // 0.14 Java executable was broken because javaExecutable.jvmArgs wasn't commented out. // To catch this and similar problems, test that Java executable starts successfully. @@ -152,12 +162,48 @@ val testStartJavaExecutable by doLast { outputFile.get().asFile.writeText("OK") } } -tasks.check { dependsOn(testStartJavaExecutable) } +// Setup `testStartJavaExecutable` tasks for multi-JDK testing. +val testStartJavaExecutableOnOtherJdks = + buildInfo.jdkTestRange.map { jdkTarget -> + val taskName = "testStartJavaExecutableJdk${jdkTarget.asInt()}" + val toolchains = project.serviceOf() + + tasks.register(taskName, Exec::class) { + // dummy output to satisfy up-to-date check + val outputFile = layout.buildDirectory.file(taskName) + outputs.file(outputFile) + dependsOn(javaExecutable) + executable = + toolchains + .launcherFor { languageVersion = jdkTarget } + .map { it.executablePath.asFile.absolutePath } + .get() + + argumentProviders.add( + CommandLineArgumentProvider { + listOf("-jar", javaExecutable.get().outputs.files.singleFile.toString(), "--version") + } + ) + + doFirst { outputFile.get().asFile.delete() } + + doLast { outputFile.get().asFile.writeText("OK") } + } + } + +tasks.check { + dependsOn( + testJavaExecutable, + testStartJavaExecutable, + testJavaExecutableOnOtherJdks, + testStartJavaExecutableOnOtherJdks, + ) +} fun Exec.configureExecutable( graalVm: BuildInfo.GraalVm, outputFile: Provider, - extraArgs: List = listOf() + extraArgs: List = listOf(), ) { inputs .files(sourceSets.main.map { it.output }) @@ -179,11 +225,13 @@ fun Exec.configureExecutable( executable = "${graalVm.baseDir}/bin/$nativeImageCommandName" // JARs to exclude from the class path for the native-image build. - val exclusions = listOf(libs.truffleApi, libs.graalSdk).map { it.get().module.name } + val exclusions = listOf(libs.graalSdk).map { it.get().module.name } // https://www.graalvm.org/22.0/reference-manual/native-image/Options/ argumentProviders.add( CommandLineArgumentProvider { buildList { + // must be emitted before any experimental options are used + add("-H:+UnlockExperimentalVMOptions") // currently gives a deprecation warning, but we've been told // that the "initialize everything at build time" *CLI* option is likely here to stay add("--initialize-at-build-time=") @@ -194,9 +242,9 @@ fun Exec.configureExecutable( add("-H:IncludeResources=org/jline/utils/.*") add("-H:IncludeResourceBundles=org.pkl.core.errorMessages") add("-H:IncludeResources=org/pkl/commons/cli/PklCARoots.pem") - add("--macro:truffle") add("-H:Class=org.pkl.cli.Main") - add("-H:Name=${outputFile.get().asFile.name}") + add("-o") + add(outputFile.get().asFile.name) // the actual limit (currently) used by native-image is this number + 1400 (idea is to // compensate for Truffle's own nodes) add("-H:MaxRuntimeCompileMethods=1800") @@ -211,7 +259,11 @@ fun Exec.configureExecutable( if (!buildInfo.isReleaseBuild) { add("-Ob") } - add("-march=compatibility") + if (buildInfo.isNativeArch) { + add("-march=native") + } else { + add("-march=compatibility") + } // native-image rejects non-existing class path entries -> filter add("--class-path") val pathInput = @@ -240,7 +292,7 @@ val macExecutableAmd64: TaskProvider by dependsOn(":installGraalVmAmd64") configureExecutable( buildInfo.graalVmAmd64, - layout.buildDirectory.file("executable/pkl-macos-amd64") + layout.buildDirectory.file("executable/pkl-macos-amd64"), ) } @@ -251,7 +303,7 @@ val macExecutableAarch64: TaskProvider by configureExecutable( buildInfo.graalVmAarch64, layout.buildDirectory.file("executable/pkl-macos-aarch64"), - listOf("-H:+AllowDeprecatedBuilderClassesOnImageClasspath") + listOf("-H:+AllowDeprecatedBuilderClassesOnImageClasspath"), ) } @@ -261,7 +313,7 @@ val linuxExecutableAmd64: TaskProvider by dependsOn(":installGraalVmAmd64") configureExecutable( buildInfo.graalVmAmd64, - layout.buildDirectory.file("executable/pkl-linux-amd64") + layout.buildDirectory.file("executable/pkl-linux-amd64"), ) } @@ -281,7 +333,7 @@ val linuxExecutableAarch64: TaskProvider by // Ensure compatibility for kernels with page size set to 4k, 16k and 64k // (e.g. Raspberry Pi 5, Asahi Linux) "-H:PageSize=65536" - ) + ), ) } @@ -297,7 +349,7 @@ val alpineExecutableAmd64: TaskProvider by configureExecutable( buildInfo.graalVmAmd64, layout.buildDirectory.file("executable/pkl-alpine-linux-amd64"), - listOf("--static", "--libc=musl") + listOf("--static", "--libc=musl"), ) } @@ -307,7 +359,7 @@ val windowsExecutableAmd64: TaskProvider by configureExecutable( buildInfo.graalVmAmd64, layout.buildDirectory.file("executable/pkl-windows-amd64"), - listOf("-Dfile.encoding=UTF-8") + listOf("-Dfile.encoding=UTF-8"), ) } diff --git a/pkl-codegen-java/api/pkl-codegen-java.api b/pkl-codegen-java/api/pkl-codegen-java.api new file mode 100644 index 000000000..19a1284f7 --- /dev/null +++ b/pkl-codegen-java/api/pkl-codegen-java.api @@ -0,0 +1,81 @@ +public final class org/pkl/codegen/java/CliJavaCodeGenerator : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/codegen/java/CliJavaCodeGeneratorOptions;)V +} + +public final class org/pkl/codegen/java/CliJavaCodeGeneratorOptions { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun component10 ()Ljava/util/Map; + public final fun component2 ()Ljava/nio/file/Path; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Z + public final fun component5 ()Z + public final fun component6 ()Z + public final fun component7 ()Ljava/lang/String; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Z + public final fun copy (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;)Lorg/pkl/codegen/java/CliJavaCodeGeneratorOptions; + public static synthetic fun copy$default (Lorg/pkl/codegen/java/CliJavaCodeGeneratorOptions;Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;ILjava/lang/Object;)Lorg/pkl/codegen/java/CliJavaCodeGeneratorOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getBase ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun getGenerateGetters ()Z + public final fun getGenerateJavadoc ()Z + public final fun getGenerateSpringBootConfig ()Z + public final fun getImplementSerializable ()Z + public final fun getIndent ()Ljava/lang/String; + public final fun getNonNullAnnotation ()Ljava/lang/String; + public final fun getOutputDir ()Ljava/nio/file/Path; + public final fun getParamsAnnotation ()Ljava/lang/String; + public final fun getRenames ()Ljava/util/Map; + public fun hashCode ()I + public final fun toJavaCodegenOptions ()Lorg/pkl/codegen/java/JavaCodeGeneratorOptions; + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/codegen/java/JavaCodeGenerator { + public static final field Companion Lorg/pkl/codegen/java/JavaCodeGenerator$Companion; + public fun (Lorg/pkl/core/ModuleSchema;Lorg/pkl/codegen/java/JavaCodeGeneratorOptions;)V + public final fun getJavaFile ()Ljava/lang/String; + public final fun getOutput ()Ljava/util/Map; +} + +public final class org/pkl/codegen/java/JavaCodeGenerator$Companion { +} + +public final class org/pkl/codegen/java/JavaCodeGeneratorException : java/lang/RuntimeException { + public fun (Ljava/lang/String;)V +} + +public final class org/pkl/codegen/java/JavaCodeGeneratorOptions { + public fun ()V + public fun (Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;)V + public synthetic fun (Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Z + public final fun component3 ()Z + public final fun component4 ()Z + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/lang/String; + public final fun component7 ()Z + public final fun component8 ()Ljava/util/Map; + public final fun copy (Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;)Lorg/pkl/codegen/java/JavaCodeGeneratorOptions; + public static synthetic fun copy$default (Lorg/pkl/codegen/java/JavaCodeGeneratorOptions;Ljava/lang/String;ZZZLjava/lang/String;Ljava/lang/String;ZLjava/util/Map;ILjava/lang/Object;)Lorg/pkl/codegen/java/JavaCodeGeneratorOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getGenerateGetters ()Z + public final fun getGenerateJavadoc ()Z + public final fun getGenerateSpringBootConfig ()Z + public final fun getImplementSerializable ()Z + public final fun getIndent ()Ljava/lang/String; + public final fun getNonNullAnnotation ()Ljava/lang/String; + public final fun getParamsAnnotation ()Ljava/lang/String; + public final fun getRenames ()Ljava/util/Map; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/codegen/java/PklJavaCodegenCommand : org/pkl/commons/cli/commands/ModulesCommand { + public fun ()V + public fun run ()V +} + diff --git a/pkl-codegen-java/gradle.lockfile b/pkl-codegen-java/gradle.lockfile index b3cd061e5..f34d868eb 100644 --- a/pkl-codegen-java/gradle.lockfile +++ b/pkl-codegen-java/gradle.lockfile @@ -9,8 +9,12 @@ io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=runtimeClasspath,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath @@ -20,6 +24,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -30,9 +35,9 @@ org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,ko org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -42,5 +47,7 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.snakeyaml:snakeyaml-engine:2.8=runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-codegen-kotlin/api/pkl-codegen-kotlin.api b/pkl-codegen-kotlin/api/pkl-codegen-kotlin.api new file mode 100644 index 000000000..d7f2131c1 --- /dev/null +++ b/pkl-codegen-kotlin/api/pkl-codegen-kotlin.api @@ -0,0 +1,69 @@ +public final class org/pkl/codegen/kotlin/CliKotlinCodeGenerator : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/codegen/kotlin/CliKotlinCodeGeneratorOptions;)V +} + +public final class org/pkl/codegen/kotlin/CliKotlinCodeGeneratorOptions { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/util/Map;)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun component2 ()Ljava/nio/file/Path; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Z + public final fun component5 ()Z + public final fun component6 ()Z + public final fun component7 ()Ljava/util/Map; + public final fun copy (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/util/Map;)Lorg/pkl/codegen/kotlin/CliKotlinCodeGeneratorOptions; + public static synthetic fun copy$default (Lorg/pkl/codegen/kotlin/CliKotlinCodeGeneratorOptions;Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Ljava/lang/String;ZZZLjava/util/Map;ILjava/lang/Object;)Lorg/pkl/codegen/kotlin/CliKotlinCodeGeneratorOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getBase ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun getGenerateKdoc ()Z + public final fun getGenerateSpringBootConfig ()Z + public final fun getImplementSerializable ()Z + public final fun getIndent ()Ljava/lang/String; + public final fun getOutputDir ()Ljava/nio/file/Path; + public final fun getRenames ()Ljava/util/Map; + public fun hashCode ()I + public final fun toKotlinCodegenOptions ()Lorg/pkl/codegen/kotlin/KotlinCodeGeneratorOptions; + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/codegen/kotlin/KotlinCodeGenerator { + public static final field Companion Lorg/pkl/codegen/kotlin/KotlinCodeGenerator$Companion; + public fun (Lorg/pkl/core/ModuleSchema;Lorg/pkl/codegen/kotlin/KotlinCodeGeneratorOptions;)V + public final fun getKotlinFile ()Ljava/lang/String; + public final fun getOutput ()Ljava/util/Map; +} + +public final class org/pkl/codegen/kotlin/KotlinCodeGenerator$Companion { +} + +public final class org/pkl/codegen/kotlin/KotlinCodeGeneratorException : java/lang/RuntimeException { + public fun (Ljava/lang/String;)V +} + +public final class org/pkl/codegen/kotlin/KotlinCodeGeneratorOptions { + public fun ()V + public fun (Ljava/lang/String;ZZZLjava/util/Map;)V + public synthetic fun (Ljava/lang/String;ZZZLjava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Z + public final fun component3 ()Z + public final fun component4 ()Z + public final fun component5 ()Ljava/util/Map; + public final fun copy (Ljava/lang/String;ZZZLjava/util/Map;)Lorg/pkl/codegen/kotlin/KotlinCodeGeneratorOptions; + public static synthetic fun copy$default (Lorg/pkl/codegen/kotlin/KotlinCodeGeneratorOptions;Ljava/lang/String;ZZZLjava/util/Map;ILjava/lang/Object;)Lorg/pkl/codegen/kotlin/KotlinCodeGeneratorOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getGenerateKdoc ()Z + public final fun getGenerateSpringBootConfig ()Z + public final fun getImplementSerializable ()Z + public final fun getIndent ()Ljava/lang/String; + public final fun getRenames ()Ljava/util/Map; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/codegen/kotlin/PklKotlinCodegenCommand : org/pkl/commons/cli/commands/ModulesCommand { + public fun ()V + public fun run ()V +} + diff --git a/pkl-codegen-kotlin/gradle.lockfile b/pkl-codegen-kotlin/gradle.lockfile index 54048da71..350d191ae 100644 --- a/pkl-codegen-kotlin/gradle.lockfile +++ b/pkl-codegen-kotlin/gradle.lockfile @@ -9,8 +9,12 @@ io.leangen.geantyref:geantyref:1.3.16=testRuntimeClasspath net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=runtimeClasspath,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath @@ -21,6 +25,7 @@ org.jetbrains.kotlin:kotlin-daemon-client:1.7.10=testRuntimeOnlyDependenciesMeta org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -41,10 +46,10 @@ org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=apiDependenciesMetadata,compile org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib:1.7.10=testRuntimeOnlyDependenciesMetadata -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.0=testRuntimeOnlyDependenciesMetadata org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath,testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -54,5 +59,7 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.snakeyaml:snakeyaml-engine:2.8=runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-commons-cli/api/pkl-commons-cli.api b/pkl-commons-cli/api/pkl-commons-cli.api new file mode 100644 index 000000000..c58efd980 --- /dev/null +++ b/pkl-commons-cli/api/pkl-commons-cli.api @@ -0,0 +1,170 @@ +public final class org/pkl/commons/cli/CliBaseOptions { + public static final field Companion Lorg/pkl/commons/cli/CliBaseOptions$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/util/List;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/net/URI;Ljava/nio/file/Path;Ljava/time/Duration;Ljava/nio/file/Path;Lorg/pkl/core/evaluatorSettings/Color;ZZZZILjava/util/List;Ljava/net/URI;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)V + public synthetic fun (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/util/List;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/net/URI;Ljava/nio/file/Path;Ljava/time/Duration;Ljava/nio/file/Path;Lorg/pkl/core/evaluatorSettings/Color;ZZZZILjava/util/List;Ljava/net/URI;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component11 ()Ljava/time/Duration; + public final fun component13 ()Lorg/pkl/core/evaluatorSettings/Color; + public final fun component14 ()Z + public final fun component15 ()Z + public final fun component16 ()Z + public final fun component17 ()Z + public final fun component18 ()I + public final fun component19 ()Ljava/util/List; + public final fun component2 ()Ljava/util/List; + public final fun component20 ()Ljava/net/URI; + public final fun component21 ()Ljava/util/List; + public final fun component22 ()Ljava/util/Map; + public final fun component23 ()Ljava/util/Map; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Ljava/util/Map; + public final fun component5 ()Ljava/util/Map; + public final fun copy (Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/util/List;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/net/URI;Ljava/nio/file/Path;Ljava/time/Duration;Ljava/nio/file/Path;Lorg/pkl/core/evaluatorSettings/Color;ZZZZILjava/util/List;Ljava/net/URI;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;)Lorg/pkl/commons/cli/CliBaseOptions; + public static synthetic fun copy$default (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/util/List;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/net/URI;Ljava/nio/file/Path;Ljava/time/Duration;Ljava/nio/file/Path;Lorg/pkl/core/evaluatorSettings/Color;ZZZZILjava/util/List;Ljava/net/URI;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Lorg/pkl/commons/cli/CliBaseOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getAllowedModules ()Ljava/util/List; + public final fun getAllowedResources ()Ljava/util/List; + public final fun getCaCertificates ()Ljava/util/List; + public final fun getColor ()Lorg/pkl/core/evaluatorSettings/Color; + public final fun getEnvironmentVariables ()Ljava/util/Map; + public final fun getExternalModuleReaders ()Ljava/util/Map; + public final fun getExternalProperties ()Ljava/util/Map; + public final fun getExternalResourceReaders ()Ljava/util/Map; + public final fun getHttpNoProxy ()Ljava/util/List; + public final fun getHttpProxy ()Ljava/net/URI; + public final fun getNoCache ()Z + public final fun getNoProject ()Z + public final fun getNormalizedCaCertificates ()Ljava/util/List; + public final fun getNormalizedModuleCacheDir ()Ljava/nio/file/Path; + public final fun getNormalizedModulePath ()Ljava/util/List; + public final fun getNormalizedProjectFile ()Ljava/nio/file/Path; + public final fun getNormalizedRootDir ()Ljava/nio/file/Path; + public final fun getNormalizedSettingsModule ()Ljava/net/URI; + public final fun getNormalizedSourceModules ()Ljava/util/List; + public final fun getNormalizedWorkingDir ()Ljava/nio/file/Path; + public final fun getOmitProjectSettings ()Z + public final fun getTestMode ()Z + public final fun getTestPort ()I + public final fun getTimeout ()Ljava/time/Duration; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/commons/cli/CliBaseOptions$Companion { + public final fun getProjectFile (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path; +} + +public final class org/pkl/commons/cli/CliBugException : org/pkl/commons/cli/CliException { + public fun (Ljava/lang/Exception;I)V + public synthetic fun (Ljava/lang/Exception;IILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun toString ()Ljava/lang/String; +} + +public abstract class org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;)V + protected abstract fun doRun ()V + protected final fun evaluatorBuilder ()Lorg/pkl/core/EvaluatorBuilder; + protected final fun getAllowedModules ()Ljava/util/List; + protected final fun getAllowedResources ()Ljava/util/List; + protected final fun getCliOptions ()Lorg/pkl/commons/cli/CliBaseOptions; + protected final fun getEnvironmentVariables ()Ljava/util/Map; + protected final fun getExternalProperties ()Ljava/util/Map; + public final fun getHttpClient ()Lorg/pkl/core/http/HttpClient; + protected final fun getModuleCacheDir ()Ljava/nio/file/Path; + protected final fun getModulePath ()Ljava/util/List; + protected final fun getProject ()Lorg/pkl/core/project/Project; + protected final fun getRootDir ()Ljava/nio/file/Path; + protected final fun getSecurityManager ()Lorg/pkl/core/SecurityManager; + protected final fun getSettings ()Lorg/pkl/core/settings/PklSettings; + protected final fun getStackFrameTransformer ()Lorg/pkl/core/StackFrameTransformer; + protected final fun getUseColor ()Z + protected final fun loadProject (Ljava/nio/file/Path;)Lorg/pkl/core/project/Project; + protected final fun moduleKeyFactories (Lorg/pkl/core/module/ModulePathResolver;)Ljava/util/List; + public final fun run ()V +} + +public class org/pkl/commons/cli/CliException : java/lang/RuntimeException { + public fun (Ljava/lang/String;I)V + public synthetic fun (Ljava/lang/String;IILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getExitCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/commons/cli/CliMainKt { + public static final fun cliMain (Lkotlin/jvm/functions/Function0;)V +} + +public final class org/pkl/commons/cli/CliTestException : org/pkl/commons/cli/CliException { + public fun (Ljava/lang/String;I)V +} + +public final class org/pkl/commons/cli/CliTestOptions { + public fun ()V + public fun (Ljava/nio/file/Path;Z)V + public synthetic fun (Ljava/nio/file/Path;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getJunitDir ()Ljava/nio/file/Path; + public final fun getOverwrite ()Z +} + +public abstract class org/pkl/commons/cli/commands/BaseCommand : com/github/ajalt/clikt/core/CliktCommand { + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun getBaseOptions ()Lorg/pkl/commons/cli/commands/BaseOptions; +} + +public final class org/pkl/commons/cli/commands/BaseOptions : com/github/ajalt/clikt/parameters/groups/OptionGroup { + public static final field Companion Lorg/pkl/commons/cli/commands/BaseOptions$Companion; + public fun ()V + public final fun baseOptions (Ljava/util/List;Lorg/pkl/commons/cli/commands/ProjectOptions;Z)Lorg/pkl/commons/cli/CliBaseOptions; + public static synthetic fun baseOptions$default (Lorg/pkl/commons/cli/commands/BaseOptions;Ljava/util/List;Lorg/pkl/commons/cli/commands/ProjectOptions;ZILjava/lang/Object;)Lorg/pkl/commons/cli/CliBaseOptions; + public final fun getAllowedModules ()Ljava/util/List; + public final fun getAllowedResources ()Ljava/util/List; + public final fun getCaCertificates ()Ljava/util/List; + public final fun getCacheDir ()Ljava/nio/file/Path; + public final fun getColor ()Lorg/pkl/core/evaluatorSettings/Color; + public final fun getEnvVars ()Ljava/util/Map; + public final fun getExternalModuleReaders ()Ljava/util/Map; + public final fun getExternalResourceReaders ()Ljava/util/Map; + public final fun getFormat ()Ljava/lang/String; + public final fun getModulePath ()Ljava/util/List; + public final fun getNoCache ()Z + public final fun getNoProxy ()Ljava/util/List; + public final fun getProperties ()Ljava/util/Map; + public final fun getProxy ()Ljava/net/URI; + public final fun getRootDir ()Ljava/nio/file/Path; + public final fun getSettings ()Ljava/net/URI; + public final fun getTimeout ()Ljava/time/Duration; + public final fun getWorkingDir ()Ljava/nio/file/Path; +} + +public final class org/pkl/commons/cli/commands/BaseOptions$Companion { + public final fun associateProps (Lcom/github/ajalt/clikt/parameters/options/OptionWithValues;)Lcom/github/ajalt/clikt/parameters/options/OptionWithValues; + public final fun parseExternalReader (Lcom/github/ajalt/clikt/parameters/options/OptionWithValues;Ljava/lang/String;)Lcom/github/ajalt/clikt/parameters/options/OptionWithValues; + public final fun parseModuleName (Ljava/lang/String;)Ljava/net/URI; +} + +public abstract class org/pkl/commons/cli/commands/ModulesCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public fun getModules ()Ljava/util/List; + protected final fun getProjectOptions ()Lorg/pkl/commons/cli/commands/ProjectOptions; +} + +public final class org/pkl/commons/cli/commands/OptionExtensionsKt { + public static final fun single (Lcom/github/ajalt/clikt/parameters/options/OptionWithValues;)Lcom/github/ajalt/clikt/parameters/options/OptionWithValues; + public static final fun splitAll (Lcom/github/ajalt/clikt/parameters/options/OptionWithValues;Ljava/lang/String;Ljava/util/List;)Lcom/github/ajalt/clikt/parameters/options/OptionWithValues; + public static synthetic fun splitAll$default (Lcom/github/ajalt/clikt/parameters/options/OptionWithValues;Ljava/lang/String;Ljava/util/List;ILjava/lang/Object;)Lcom/github/ajalt/clikt/parameters/options/OptionWithValues; +} + +public final class org/pkl/commons/cli/commands/ProjectOptions : com/github/ajalt/clikt/parameters/groups/OptionGroup { + public fun ()V + public final fun getNoProject ()Z + public final fun getOmitProjectSettings ()Z + public final fun getProjectDir ()Ljava/nio/file/Path; +} + +public final class org/pkl/commons/cli/commands/TestOptions : com/github/ajalt/clikt/parameters/groups/OptionGroup { + public fun ()V + public final fun getCliTestOptions ()Lorg/pkl/commons/cli/CliTestOptions; +} + diff --git a/pkl-commons-cli/gradle.lockfile b/pkl-commons-cli/gradle.lockfile index 5681fe0c6..2dd81cf13 100644 --- a/pkl-commons-cli/gradle.lockfile +++ b/pkl-commons-cli/gradle.lockfile @@ -7,8 +7,12 @@ com.tunnelvisionlabs:antlr4-runtime:4.9.0=runtimeClasspath,testRuntimeClasspath net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=runtimeClasspath,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath @@ -18,6 +22,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -28,9 +33,9 @@ org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,ko org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -40,5 +45,7 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.snakeyaml:snakeyaml-engine:2.8=runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-commons-test/api/pkl-commons-test.api b/pkl-commons-test/api/pkl-commons-test.api new file mode 100644 index 000000000..d6c2bc5c0 --- /dev/null +++ b/pkl-commons-test/api/pkl-commons-test.api @@ -0,0 +1,123 @@ +public final class org/pkl/commons/test/FakeHttpResponse : java/net/http/HttpResponse { + public static final field Companion Lorg/pkl/commons/test/FakeHttpResponse$Companion; + public field body Ljava/lang/Object; + public field headers Ljava/net/http/HttpHeaders; + public fun ()V + public fun body ()Ljava/lang/Object; + public final fun getBody ()Ljava/lang/Object; + public final fun getHeaders ()Ljava/net/http/HttpHeaders; + public final fun getRequest ()Ljava/net/http/HttpRequest; + public final fun getStatusCode ()I + public final fun getUri ()Ljava/net/URI; + public final fun getVersion ()Ljava/net/http/HttpClient$Version; + public fun headers ()Ljava/net/http/HttpHeaders; + public fun previousResponse ()Ljava/util/Optional; + public fun request ()Ljava/net/http/HttpRequest; + public final fun setBody (Ljava/lang/Object;)V + public final fun setHeaders (Ljava/net/http/HttpHeaders;)V + public final fun setRequest (Ljava/net/http/HttpRequest;)V + public final fun setStatusCode (I)V + public final fun setUri (Ljava/net/URI;)V + public final fun setVersion (Ljava/net/http/HttpClient$Version;)V + public fun sslSession ()Ljava/util/Optional; + public fun statusCode ()I + public fun uri ()Ljava/net/URI; + public fun version ()Ljava/net/http/HttpClient$Version; +} + +public final class org/pkl/commons/test/FakeHttpResponse$Companion { + public final fun withBody (Lkotlin/jvm/functions/Function1;)Lorg/pkl/commons/test/FakeHttpResponse; + public final fun withoutBody (Lkotlin/jvm/functions/Function1;)Lorg/pkl/commons/test/FakeHttpResponse; +} + +public final class org/pkl/commons/test/FileTestUtils { + public static final field INSTANCE Lorg/pkl/commons/test/FileTestUtils; + public final fun getRootProjectDir ()Ljava/nio/file/Path; + public final fun getSelfSignedCertificate ()Ljava/nio/file/Path; + public final fun writeCertificateWithMissingLines (Ljava/nio/file/Path;)Ljava/nio/file/Path; +} + +public final class org/pkl/commons/test/FileTestUtilsKt { + public static final fun listFilesRecursively (Ljava/nio/file/Path;)Ljava/util/List; +} + +public final class org/pkl/commons/test/FilteringClassLoader : java/lang/ClassLoader { + public fun (Ljava/lang/ClassLoader;Lkotlin/jvm/functions/Function1;)V +} + +public abstract class org/pkl/commons/test/InputOutputTestEngine : org/junit/platform/engine/support/hierarchical/HierarchicalTestEngine { + public fun ()V + protected fun afterAll ()V + protected fun beforeAll ()V + public synthetic fun createExecutionContext (Lorg/junit/platform/engine/ExecutionRequest;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext; + protected fun createExecutionContext (Lorg/junit/platform/engine/ExecutionRequest;)Lorg/pkl/commons/test/InputOutputTestEngine$ExecutionContext; + public fun discover (Lorg/junit/platform/engine/EngineDiscoveryRequest;Lorg/junit/platform/engine/UniqueId;)Lorg/junit/platform/engine/TestDescriptor; + protected abstract fun expectedOutputFileFor (Ljava/nio/file/Path;)Ljava/nio/file/Path; + protected abstract fun generateOutputFor (Ljava/nio/file/Path;)Lkotlin/Pair; + protected fun getExcludedTests ()Ljava/util/List; + public fun getId ()Ljava/lang/String; + protected fun getIncludedTests ()Ljava/util/List; + protected abstract fun getInputDir ()Ljava/nio/file/Path; + protected final fun getRootProjectDir ()Ljava/nio/file/Path; + protected abstract fun getTestClass ()Lkotlin/reflect/KClass; + protected abstract fun isInputFile ()Lkotlin/jvm/functions/Function1; +} + +public final class org/pkl/commons/test/InputOutputTestEngine$ExecutionContext : org/junit/platform/engine/support/hierarchical/EngineExecutionContext { + public fun ()V +} + +public final class org/pkl/commons/test/PackageServer : java/lang/AutoCloseable { + public static final field BIRDS_SHA Ljava/lang/String; + public static final field Companion Lorg/pkl/commons/test/PackageServer$Companion; + public static final field FRUIT_1_1_SHA Ljava/lang/String; + public static final field FRUIT_SHA Ljava/lang/String; + public fun ()V + public fun close ()V + public final fun getPort ()I +} + +public final class org/pkl/commons/test/PackageServer$Companion { + public final fun populateCacheDir (Ljava/nio/file/Path;)V + public final fun populateLegacyCacheDir (Ljava/nio/file/Path;)V +} + +public final class org/pkl/commons/test/PklAssertionFailedError : org/opentest4j/AssertionFailedError { + public fun (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/commons/test/PklExecutablePaths { + public static final field INSTANCE Lorg/pkl/commons/test/PklExecutablePaths; + public final fun getAll ()Ljava/util/List; + public final fun getAlpineAmd64 ()Ljava/nio/file/Path; + public final fun getExisting ()Ljava/util/List; + public final fun getFirstExisting ()Ljava/nio/file/Path; + public final fun getLinuxAarch64 ()Ljava/nio/file/Path; + public final fun getLinuxAmd64 ()Ljava/nio/file/Path; + public final fun getMacAarch64 ()Ljava/nio/file/Path; + public final fun getMacAmd64 ()Ljava/nio/file/Path; + public final fun getWindowsAmd64 ()Ljava/nio/file/Path; +} + +public final class org/pkl/commons/test/ReflectionUtils { + public static final field INSTANCE Lorg/pkl/commons/test/ReflectionUtils; + public final fun enumValues (Lkotlin/reflect/KClass;)[Ljava/lang/Enum; +} + +public final class org/pkl/commons/test/SnippetOutcome { + public fun (Ljava/nio/file/Path;Ljava/lang/String;Z)V + public final fun check ()V + public final fun component1 ()Ljava/nio/file/Path; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Z + public final fun copy (Ljava/nio/file/Path;Ljava/lang/String;Z)Lorg/pkl/commons/test/SnippetOutcome; + public static synthetic fun copy$default (Lorg/pkl/commons/test/SnippetOutcome;Ljava/nio/file/Path;Ljava/lang/String;ZILjava/lang/Object;)Lorg/pkl/commons/test/SnippetOutcome; + public fun equals (Ljava/lang/Object;)Z + public final fun getActual ()Ljava/lang/String; + public final fun getExpectedOutFile ()Ljava/nio/file/Path; + public final fun getSuccess ()Z + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + diff --git a/pkl-commons-test/gradle.lockfile b/pkl-commons-test/gradle.lockfile index 4c2ae987e..aab3ae467 100644 --- a/pkl-commons-test/gradle.lockfile +++ b/pkl-commons-test/gradle.lockfile @@ -13,6 +13,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -22,9 +23,9 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuil org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -32,4 +33,6 @@ org.junit.platform:junit-platform-commons:1.11.4=apiDependenciesMetadata,compile org.junit.platform:junit-platform-engine:1.11.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit:junit-bom:5.11.4=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.opentest4j:opentest4j:1.3.0=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-commons/api/pkl-commons.api b/pkl-commons/api/pkl-commons.api new file mode 100644 index 000000000..e82d10af2 --- /dev/null +++ b/pkl-commons/api/pkl-commons.api @@ -0,0 +1,33 @@ +public final class org/pkl/commons/NameMapper { + public fun (Ljava/util/Map;)V + public final fun map (Ljava/lang/String;)Lkotlin/Pair; +} + +public final class org/pkl/commons/PathsKt { + public static final fun createTempFile (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path; + public static synthetic fun createTempFile$default (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;ILjava/lang/Object;)Ljava/nio/file/Path; + public static final fun getCurrentWorkingDir ()Ljava/nio/file/Path; + public static final fun readString (Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/lang/String; + public static synthetic fun readString$default (Ljava/nio/file/Path;Ljava/nio/charset/Charset;ILjava/lang/Object;)Ljava/lang/String; + public static final fun resolveSafely (Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path; + public static final fun toNormalizedPathString (Ljava/nio/file/Path;)Ljava/lang/String; + public static final fun walk (Ljava/nio/file/Path;I[Ljava/nio/file/FileVisitOption;)Ljava/util/stream/Stream; + public static synthetic fun walk$default (Ljava/nio/file/Path;I[Ljava/nio/file/FileVisitOption;ILjava/lang/Object;)Ljava/util/stream/Stream; + public static final fun writeString (Ljava/nio/file/Path;Ljava/lang/String;Ljava/nio/charset/Charset;[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path; + public static synthetic fun writeString$default (Ljava/nio/file/Path;Ljava/lang/String;Ljava/nio/charset/Charset;[Ljava/nio/file/OpenOption;ILjava/lang/Object;)Ljava/nio/file/Path; +} + +public final class org/pkl/commons/StringsKt { + public static final fun shlex (Ljava/lang/String;)Ljava/util/List; + public static final fun toPath (Ljava/lang/String;)Ljava/nio/file/Path; + public static final fun toUri (Ljava/lang/String;)Ljava/net/URI; +} + +public final class org/pkl/commons/ThrowablesKt { + public static final fun printStackTraceToString (Ljava/lang/Throwable;)Ljava/lang/String; +} + +public final class org/pkl/commons/UrisKt { + public static final fun toPath (Ljava/net/URI;)Ljava/nio/file/Path; +} + diff --git a/pkl-commons/gradle.lockfile b/pkl-commons/gradle.lockfile index 043bba45b..27604a476 100644 --- a/pkl-commons/gradle.lockfile +++ b/pkl-commons/gradle.lockfile @@ -13,6 +13,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -22,9 +23,9 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuil org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -32,4 +33,6 @@ org.junit.platform:junit-platform-commons:1.11.4=testCompileClasspath,testImplem org.junit.platform:junit-platform-engine:1.11.4=testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-config-java/gradle.lockfile b/pkl-config-java/gradle.lockfile index 07f44ae29..590e18cbe 100644 --- a/pkl-config-java/gradle.lockfile +++ b/pkl-config-java/gradle.lockfile @@ -10,8 +10,12 @@ javax.inject:javax.inject:1=testCompileClasspath,testImplementationDependenciesM net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=pklCodegenJava,runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=pklCodegenJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=pklCodegenJava,runtimeClasspath,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath diff --git a/pkl-config-kotlin/api/pkl-config-kotlin.api b/pkl-config-kotlin/api/pkl-config-kotlin.api new file mode 100644 index 000000000..d8af50a48 --- /dev/null +++ b/pkl-config-kotlin/api/pkl-config-kotlin.api @@ -0,0 +1,24 @@ +public final class org/pkl/config/kotlin/ConfigExtensionsKt { + public static final fun forKotlin (Lorg/pkl/config/java/ConfigEvaluator;)Lorg/pkl/config/java/ConfigEvaluator; + public static final fun forKotlin (Lorg/pkl/config/java/ConfigEvaluatorBuilder;)Lorg/pkl/config/java/ConfigEvaluatorBuilder; + public static final fun forKotlin (Lorg/pkl/config/java/mapper/ValueMapperBuilder;)Lorg/pkl/config/java/mapper/ValueMapperBuilder; +} + +public final class org/pkl/config/kotlin/mapper/KotlinConversions { + public static final field INSTANCE Lorg/pkl/config/kotlin/mapper/KotlinConversions; + public final fun getAll ()Ljava/util/Collection; + public final fun getPIntToUByte ()Lorg/pkl/config/java/mapper/Conversion; + public final fun getPIntToUInt ()Lorg/pkl/config/java/mapper/Conversion; + public final fun getPIntToULong ()Lorg/pkl/config/java/mapper/Conversion; + public final fun getPIntToUShort ()Lorg/pkl/config/java/mapper/Conversion; + public final fun getPRegexToKotlinRegex ()Lorg/pkl/config/java/mapper/Conversion; + public final fun getPStringToKotlinRegex ()Lorg/pkl/config/java/mapper/Conversion; +} + +public final class org/pkl/config/kotlin/mapper/KotlinConverterFactories { + public static final field INSTANCE Lorg/pkl/config/kotlin/mapper/KotlinConverterFactories; + public final fun getAll ()Ljava/util/Collection; + public final fun getPObjectToDataObject ()Lorg/pkl/config/java/mapper/ConverterFactory; + public final fun getPPairToKotlinPair ()Lorg/pkl/config/java/mapper/ConverterFactory; +} + diff --git a/pkl-config-kotlin/gradle.lockfile b/pkl-config-kotlin/gradle.lockfile index d848baa8b..2b6922a14 100644 --- a/pkl-config-kotlin/gradle.lockfile +++ b/pkl-config-kotlin/gradle.lockfile @@ -9,8 +9,12 @@ io.leangen.geantyref:geantyref:1.3.16=pklConfigJava,runtimeClasspath,testCompile net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath @@ -20,6 +24,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -31,9 +36,9 @@ org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,ko org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=pklCodegenKotlin org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,pklCodegenKotlin,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -43,5 +48,7 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.snakeyaml:snakeyaml-engine:2.8=pklCodegenKotlin,pklConfigJava,runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,pklConfigJavaAll,runtimeOnlyDependenciesMetadata,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-core/gradle.lockfile b/pkl-core/gradle.lockfile index 6a22b6a72..7849b393c 100644 --- a/pkl-core/gradle.lockfile +++ b/pkl-core/gradle.lockfile @@ -12,9 +12,13 @@ org.antlr:ST4:4.3=antlr org.antlr:antlr-runtime:3.5.2=antlr org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.truffle:truffle-dsl-processor:23.0.6=annotationProcessor +org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,generatorCompileClasspath,generatorImplementationDependenciesMetadata,generatorRuntimeClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.truffle:truffle-dsl-processor:24.1.2=annotationProcessor org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath diff --git a/pkl-core/src/main/java/org/pkl/core/EvaluatorImpl.java b/pkl-core/src/main/java/org/pkl/core/EvaluatorImpl.java index 336b321df..d728f3323 100644 --- a/pkl-core/src/main/java/org/pkl/core/EvaluatorImpl.java +++ b/pkl-core/src/main/java/org/pkl/core/EvaluatorImpl.java @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -280,6 +280,7 @@ String evaluateOutputText(VmTyped fileOutput) { return doEvaluate(() -> VmUtils.readTextProperty(fileOutput)); } + @SuppressWarnings({"removal", "RedundantSuppression"}) private T doEvaluate(Supplier supplier) { @Nullable TimeoutTask timeoutTask = null; logger.clear(); diff --git a/pkl-core/src/test/kotlin/org/pkl/core/LanguageSnippetTestsEngine.kt b/pkl-core/src/test/kotlin/org/pkl/core/LanguageSnippetTestsEngine.kt index 1baa61103..57b295a36 100644 --- a/pkl-core/src/test/kotlin/org/pkl/core/LanguageSnippetTestsEngine.kt +++ b/pkl-core/src/test/kotlin/org/pkl/core/LanguageSnippetTestsEngine.kt @@ -34,6 +34,18 @@ import org.pkl.core.http.HttpClient import org.pkl.core.project.Project import org.pkl.core.util.IoUtils +// @TODO: this test fails on JDK 22+, because of an output mismatch +private val excludedOnJvm22Plus = listOf(Regex(".*analyzeInvalidHttpModule.*")) + +private fun currentMajorJavaVersion(): Int = + System.getProperty("java.version").substringBefore('.').toInt() + +private fun exclusionsForThisJvm(): List = + when { + currentMajorJavaVersion() >= 22 -> excludedOnJvm22Plus + else -> emptyList() + } + abstract class AbstractLanguageSnippetTestsEngine : InputOutputTestEngine() { private val lineNumberRegex = Regex("(?m)^(( ║ )*)(\\d+) \\|") private val hiddenExtensionRegex = Regex(".*[.]([^.]*)[.]pkl") @@ -61,6 +73,9 @@ abstract class AbstractLanguageSnippetTestsEngine : InputOutputTestEngine() { if (IoUtils.isWindows()) { addAll(windowsExcludedTests) } + + // on experimental JVM versions, exclude tests which are known to be incompatible + addAll(exclusionsForThisJvm()) } override val inputDir: Path = snippetsDir.resolve("input") @@ -195,13 +210,17 @@ abstract class AbstractNativeLanguageSnippetTestsEngine : AbstractLanguageSnippe override val excludedTests: List = listOf( - // exclude test that loads module from class path (there is no class path when using native - // executable) - // on the other hand, don't exclude /native/ - Regex(".*/import1b\\.pkl"), - // URIs get rendered slightly differently (percent-encoded vs raw) - Regex(".*日本語_error\\.pkl"), - ) + // exclude test that loads module from class path (there is no class path when using native + // executable) + // on the other hand, don't exclude /native/ + Regex(".*/import1b\\.pkl"), + // URIs get rendered slightly differently (percent-encoded vs raw) + Regex(".*日本語_error\\.pkl"), + ) + .plus( + // on experimental JVM versions, exclude tests which are known to be incompatible + exclusionsForThisJvm() + ) /** Avoid running tests for native binaries when those native binaries have not been built. */ override fun discover( diff --git a/pkl-doc/api/pkl-doc.api b/pkl-doc/api/pkl-doc.api new file mode 100644 index 000000000..82283c5dd --- /dev/null +++ b/pkl-doc/api/pkl-doc.api @@ -0,0 +1,143 @@ +public final class org/pkl/doc/CliDocGenerator : org/pkl/commons/cli/CliCommand { + public fun (Lorg/pkl/doc/CliDocGeneratorOptions;)V +} + +public final class org/pkl/doc/CliDocGeneratorOptions { + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;)V + public fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Z)V + public synthetic fun (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun component2 ()Ljava/nio/file/Path; + public final fun component3 ()Z + public final fun copy (Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;Z)Lorg/pkl/doc/CliDocGeneratorOptions; + public static synthetic fun copy$default (Lorg/pkl/doc/CliDocGeneratorOptions;Lorg/pkl/commons/cli/CliBaseOptions;Ljava/nio/file/Path;ZILjava/lang/Object;)Lorg/pkl/doc/CliDocGeneratorOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getBase ()Lorg/pkl/commons/cli/CliBaseOptions; + public final fun getNormalizedOutputDir ()Ljava/nio/file/Path; + public final fun getOutputDir ()Ljava/nio/file/Path; + public fun hashCode ()I + public final fun isTestMode ()Z + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/doc/DocCommand : org/pkl/commons/cli/commands/BaseCommand { + public fun ()V + public fun run ()V +} + +public final class org/pkl/doc/DocGenerator { + public static final field Companion Lorg/pkl/doc/DocGenerator$Companion; + public fun (Lorg/pkl/doc/DocsiteInfo;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Ljava/util/Comparator;Ljava/nio/file/Path;Z)V + public synthetic fun (Lorg/pkl/doc/DocsiteInfo;Ljava/util/Map;Lkotlin/jvm/functions/Function1;Ljava/util/Comparator;Ljava/nio/file/Path;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun run ()V +} + +public final class org/pkl/doc/DocGenerator$Companion { +} + +public final class org/pkl/doc/DocGeneratorException : java/lang/RuntimeException { + public fun (Ljava/lang/String;Ljava/lang/Throwable;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V +} + +public final class org/pkl/doc/DocPackageInfo { + public static final field Companion Lorg/pkl/doc/DocPackageInfo$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;Ljava/util/List;Ljava/util/Map;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;Ljava/util/List;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun component1 ()Ljava/lang/String; + public final fun component10 ()Ljava/util/List; + public final fun component11 ()Ljava/lang/String; + public final fun component12 ()Ljava/util/Map; + public final fun component13 ()Ljava/util/List; + public final fun component14 ()Ljava/util/Map; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/net/URI; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/util/List; + public final fun component7 ()Ljava/net/URI; + public final fun component8 ()Ljava/lang/String; + public final fun component9 ()Ljava/net/URI; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;Ljava/util/List;Ljava/util/Map;)Lorg/pkl/doc/DocPackageInfo; + public static synthetic fun copy$default (Lorg/pkl/doc/DocPackageInfo;Ljava/lang/String;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/util/List;Ljava/lang/String;Ljava/util/Map;Ljava/util/List;Ljava/util/Map;ILjava/lang/Object;)Lorg/pkl/doc/DocPackageInfo; + public fun equals (Ljava/lang/Object;)Z + public final fun getAnnotations ()Ljava/util/List; + public final fun getAuthors ()Ljava/util/List; + public final fun getDependencies ()Ljava/util/List; + public final fun getExtraAttributes ()Ljava/util/Map; + public final fun getImportUri ()Ljava/lang/String; + public final fun getIssueTracker ()Ljava/net/URI; + public final fun getModuleNamePrefix ()Ljava/lang/String; + public final fun getName ()Ljava/lang/String; + public final fun getOverview ()Ljava/lang/String; + public final fun getOverviewImports ()Ljava/util/Map; + public final fun getSourceCode ()Ljava/net/URI; + public final fun getSourceCodeUrlScheme ()Ljava/lang/String; + public final fun getUri ()Ljava/net/URI; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/doc/DocPackageInfo$Companion { + public final fun fromPkl (Lorg/pkl/core/PModule;)Lorg/pkl/doc/DocPackageInfo; +} + +public final class org/pkl/doc/DocPackageInfo$PackageDependency { + public fun (Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/net/URI; + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/net/URI; + public final fun component5 ()Ljava/lang/String; + public final fun component6 ()Ljava/net/URI; + public final fun copy (Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;)Lorg/pkl/doc/DocPackageInfo$PackageDependency; + public static synthetic fun copy$default (Lorg/pkl/doc/DocPackageInfo$PackageDependency;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;Ljava/lang/String;Ljava/net/URI;ILjava/lang/Object;)Lorg/pkl/doc/DocPackageInfo$PackageDependency; + public fun equals (Ljava/lang/Object;)Z + public final fun getDocumentation ()Ljava/net/URI; + public final fun getName ()Ljava/lang/String; + public final fun getSourceCode ()Ljava/net/URI; + public final fun getSourceCodeUrlScheme ()Ljava/lang/String; + public final fun getUri ()Ljava/net/URI; + public final fun getVersion ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/doc/DocsiteInfo { + public static final field Companion Lorg/pkl/doc/DocsiteInfo$Companion; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V + public final fun component1 ()Ljava/lang/String; + public final fun component2 ()Ljava/lang/String; + public final fun component3 ()Ljava/util/Map; + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Lorg/pkl/doc/DocsiteInfo; + public static synthetic fun copy$default (Lorg/pkl/doc/DocsiteInfo;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;ILjava/lang/Object;)Lorg/pkl/doc/DocsiteInfo; + public fun equals (Ljava/lang/Object;)Z + public final fun getOverview ()Ljava/lang/String; + public final fun getOverviewImports ()Ljava/util/Map; + public final fun getTitle ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/doc/DocsiteInfo$Companion { + public final fun fromPkl (Lorg/pkl/core/PModule;)Lorg/pkl/doc/DocsiteInfo; +} + +public final class org/pkl/doc/SerializersKt { + public static final fun getSerializers ()Lkotlinx/serialization/modules/SerializersModule; +} + +public final class org/pkl/doc/UriSerializer : kotlinx/serialization/KSerializer { + public static final field INSTANCE Lorg/pkl/doc/UriSerializer; + public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object; + public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/net/URI; + public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor; + public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V + public fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/net/URI;)V +} + +public final class org/pkl/doc/UtilKt { + public static final fun getModulePath (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +} + diff --git a/pkl-doc/gradle.lockfile b/pkl-doc/gradle.lockfile index 99156228e..65f0360b2 100644 --- a/pkl-doc/gradle.lockfile +++ b/pkl-doc/gradle.lockfile @@ -11,7 +11,6 @@ com.google.guava:guava:32.1.1-jre=testCompileClasspath,testImplementationDepende com.google.j2objc:j2objc-annotations:2.8=testCompileClasspath,testImplementationDependenciesMetadata com.google.jimfs:jimfs:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.ibm.icu:icu4j:58.2=validator -com.ibm.icu:icu4j:72.1=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath com.shapesecurity:salvation:2.7.2=validator com.tunnelvisionlabs:antlr4-runtime:4.9.0=runtimeClasspath,testRuntimeClasspath commons-codec:commons-codec:1.10=validator @@ -37,10 +36,22 @@ org.commonmark:commonmark-ext-gfm-tables:0.24.0=compileClasspath,implementationD org.commonmark:commonmark:0.24.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.eclipse.jetty:jetty-util-ajax:9.4.18.v20190429=validator org.eclipse.jetty:jetty-util:9.4.18.v20190429=validator -org.graalvm.js:js:23.0.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.regex:regex:23.0.6=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.js:js-community:24.1.2=testRuntimeClasspath +org.graalvm.js:js-language:24.1.2=testRuntimeClasspath +org.graalvm.js:js:24.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.regex:regex:24.1.2=testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:jniutils:24.1.2=testRuntimeClasspath +org.graalvm.sdk:nativebridge:24.1.2=testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.shadowed:icu4j:24.1.2=testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-compiler:24.1.2=testRuntimeClasspath +org.graalvm.truffle:truffle-enterprise:24.1.2=testRuntimeClasspath +org.graalvm.truffle:truffle-runtime:24.1.2=testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath @@ -50,6 +61,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -58,10 +70,12 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:2.0.21=kotlinBuildTool org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-serialization-compiler-plugin-embeddable:2.0.21=kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest -org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=implementationDependenciesMetadata,testImplementationDependenciesMetadata +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,testImplementationDependenciesMetadata +org.jetbrains.kotlin:kotlin-stdlib:2.1.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath @@ -69,7 +83,7 @@ org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=compileClasspath,runt org.jetbrains.kotlinx:kotlinx-serialization-core:1.8.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-json-jvm:1.8.0=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.0=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -79,5 +93,7 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=runtimeClasspath,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.snakeyaml:snakeyaml-engine:2.8=runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,signatures,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-executor/gradle.lockfile b/pkl-executor/gradle.lockfile index d62231456..bf8034285 100644 --- a/pkl-executor/gradle.lockfile +++ b/pkl-executor/gradle.lockfile @@ -5,8 +5,12 @@ com.tunnelvisionlabs:antlr4-runtime:4.9.0=testRuntimeClasspath net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath diff --git a/pkl-server/api/pkl-server.api b/pkl-server/api/pkl-server.api new file mode 100644 index 000000000..719ba70ff --- /dev/null +++ b/pkl-server/api/pkl-server.api @@ -0,0 +1,204 @@ +public final class org/pkl/server/CloseEvaluator : org/pkl/core/messaging/Message$Client$OneWay { + public fun (J)V + public final fun component1 ()J + public final fun copy (J)Lorg/pkl/server/CloseEvaluator; + public static synthetic fun copy$default (Lorg/pkl/server/CloseEvaluator;JILjava/lang/Object;)Lorg/pkl/server/CloseEvaluator; + public fun equals (Ljava/lang/Object;)Z + public final fun getEvaluatorId ()J + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public fun type ()Lorg/pkl/core/messaging/Message$Type; +} + +public final class org/pkl/server/CreateEvaluatorRequest : org/pkl/core/messaging/Message$Client$Request { + public fun (JLjava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/time/Duration;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/lang/String;Lorg/pkl/server/Project;Lorg/pkl/server/Http;Ljava/util/Map;Ljava/util/Map;)V + public final fun component10 ()Ljava/nio/file/Path; + public final fun component11 ()Ljava/nio/file/Path; + public final fun component12 ()Ljava/lang/String; + public final fun component13 ()Lorg/pkl/server/Project; + public final fun component14 ()Lorg/pkl/server/Http; + public final fun component15 ()Ljava/util/Map; + public final fun component16 ()Ljava/util/Map; + public final fun component2 ()Ljava/util/List; + public final fun component3 ()Ljava/util/List; + public final fun component4 ()Ljava/util/List; + public final fun component5 ()Ljava/util/List; + public final fun component6 ()Ljava/util/List; + public final fun component7 ()Ljava/util/Map; + public final fun component8 ()Ljava/util/Map; + public final fun component9 ()Ljava/time/Duration; + public final fun copy (JLjava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/time/Duration;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/lang/String;Lorg/pkl/server/Project;Lorg/pkl/server/Http;Ljava/util/Map;Ljava/util/Map;)Lorg/pkl/server/CreateEvaluatorRequest; + public static synthetic fun copy$default (Lorg/pkl/server/CreateEvaluatorRequest;JLjava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/Map;Ljava/util/Map;Ljava/time/Duration;Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/lang/String;Lorg/pkl/server/Project;Lorg/pkl/server/Http;Ljava/util/Map;Ljava/util/Map;ILjava/lang/Object;)Lorg/pkl/server/CreateEvaluatorRequest; + public fun equals (Ljava/lang/Object;)Z + public final fun getAllowedModules ()Ljava/util/List; + public final fun getAllowedResources ()Ljava/util/List; + public final fun getCacheDir ()Ljava/nio/file/Path; + public final fun getClientModuleReaders ()Ljava/util/List; + public final fun getClientResourceReaders ()Ljava/util/List; + public final fun getEnv ()Ljava/util/Map; + public final fun getExternalModuleReaders ()Ljava/util/Map; + public final fun getExternalResourceReaders ()Ljava/util/Map; + public final fun getHttp ()Lorg/pkl/server/Http; + public final fun getModulePaths ()Ljava/util/List; + public final fun getOutputFormat ()Ljava/lang/String; + public final fun getProject ()Lorg/pkl/server/Project; + public final fun getProperties ()Ljava/util/Map; + public final fun getRootDir ()Ljava/nio/file/Path; + public final fun getTimeout ()Ljava/time/Duration; + public fun hashCode ()I + public fun requestId ()J + public fun toString ()Ljava/lang/String; + public fun type ()Lorg/pkl/core/messaging/Message$Type; +} + +public final class org/pkl/server/CreateEvaluatorResponse : org/pkl/core/messaging/Message$Server$Response { + public fun (JLjava/lang/Long;Ljava/lang/String;)V + public final fun component2 ()Ljava/lang/Long; + public final fun component3 ()Ljava/lang/String; + public final fun copy (JLjava/lang/Long;Ljava/lang/String;)Lorg/pkl/server/CreateEvaluatorResponse; + public static synthetic fun copy$default (Lorg/pkl/server/CreateEvaluatorResponse;JLjava/lang/Long;Ljava/lang/String;ILjava/lang/Object;)Lorg/pkl/server/CreateEvaluatorResponse; + public fun equals (Ljava/lang/Object;)Z + public final fun getError ()Ljava/lang/String; + public final fun getEvaluatorId ()Ljava/lang/Long; + public fun hashCode ()I + public fun requestId ()J + public fun toString ()Ljava/lang/String; + public fun type ()Lorg/pkl/core/messaging/Message$Type; +} + +public abstract interface class org/pkl/server/Dependency { + public abstract fun getPackageUri ()Ljava/net/URI; + public abstract fun getType ()Lorg/pkl/server/DependencyType; +} + +public final class org/pkl/server/DependencyType : java/lang/Enum { + public static final field LOCAL Lorg/pkl/server/DependencyType; + public static final field REMOTE Lorg/pkl/server/DependencyType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public final fun getValue ()Ljava/lang/String; + public static fun valueOf (Ljava/lang/String;)Lorg/pkl/server/DependencyType; + public static fun values ()[Lorg/pkl/server/DependencyType; +} + +public final class org/pkl/server/EvaluateRequest : org/pkl/core/messaging/Message$Client$Request { + public fun (JJLjava/net/URI;Ljava/lang/String;Ljava/lang/String;)V + public final fun component2 ()J + public final fun component3 ()Ljava/net/URI; + public final fun component4 ()Ljava/lang/String; + public final fun component5 ()Ljava/lang/String; + public final fun copy (JJLjava/net/URI;Ljava/lang/String;Ljava/lang/String;)Lorg/pkl/server/EvaluateRequest; + public static synthetic fun copy$default (Lorg/pkl/server/EvaluateRequest;JJLjava/net/URI;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lorg/pkl/server/EvaluateRequest; + public fun equals (Ljava/lang/Object;)Z + public final fun getEvaluatorId ()J + public final fun getExpr ()Ljava/lang/String; + public final fun getModuleText ()Ljava/lang/String; + public final fun getModuleUri ()Ljava/net/URI; + public fun hashCode ()I + public fun requestId ()J + public fun toString ()Ljava/lang/String; + public fun type ()Lorg/pkl/core/messaging/Message$Type; +} + +public final class org/pkl/server/EvaluateResponse : org/pkl/core/messaging/Message$Server$Response { + public fun (JJ[BLjava/lang/String;)V + public final fun component2 ()J + public final fun component3 ()[B + public final fun component4 ()Ljava/lang/String; + public final fun copy (JJ[BLjava/lang/String;)Lorg/pkl/server/EvaluateResponse; + public static synthetic fun copy$default (Lorg/pkl/server/EvaluateResponse;JJ[BLjava/lang/String;ILjava/lang/Object;)Lorg/pkl/server/EvaluateResponse; + public fun equals (Ljava/lang/Object;)Z + public final fun getError ()Ljava/lang/String; + public final fun getEvaluatorId ()J + public final fun getResult ()[B + public fun hashCode ()I + public fun requestId ()J + public fun toString ()Ljava/lang/String; + public fun type ()Lorg/pkl/core/messaging/Message$Type; +} + +public final class org/pkl/server/Http { + public fun ([BLorg/pkl/core/evaluatorSettings/PklEvaluatorSettings$Proxy;)V + public final fun component1 ()[B + public final fun component2 ()Lorg/pkl/core/evaluatorSettings/PklEvaluatorSettings$Proxy; + public final fun copy ([BLorg/pkl/core/evaluatorSettings/PklEvaluatorSettings$Proxy;)Lorg/pkl/server/Http; + public static synthetic fun copy$default (Lorg/pkl/server/Http;[BLorg/pkl/core/evaluatorSettings/PklEvaluatorSettings$Proxy;ILjava/lang/Object;)Lorg/pkl/server/Http; + public fun equals (Ljava/lang/Object;)Z + public final fun getCaCertificates ()[B + public final fun getProxy ()Lorg/pkl/core/evaluatorSettings/PklEvaluatorSettings$Proxy; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/server/LogMessage : org/pkl/core/messaging/Message$Server$OneWay { + public fun (JILjava/lang/String;Ljava/lang/String;)V + public final fun component1 ()J + public final fun component2 ()I + public final fun component3 ()Ljava/lang/String; + public final fun component4 ()Ljava/lang/String; + public final fun copy (JILjava/lang/String;Ljava/lang/String;)Lorg/pkl/server/LogMessage; + public static synthetic fun copy$default (Lorg/pkl/server/LogMessage;JILjava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lorg/pkl/server/LogMessage; + public fun equals (Ljava/lang/Object;)Z + public final fun getEvaluatorId ()J + public final fun getFrameUri ()Ljava/lang/String; + public final fun getLevel ()I + public final fun getMessage ()Ljava/lang/String; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; + public fun type ()Lorg/pkl/core/messaging/Message$Type; +} + +public final class org/pkl/server/Project : org/pkl/server/Dependency { + public fun (Ljava/net/URI;Ljava/net/URI;Ljava/util/Map;)V + public final fun component1 ()Ljava/net/URI; + public final fun component2 ()Ljava/net/URI; + public final fun component3 ()Ljava/util/Map; + public final fun copy (Ljava/net/URI;Ljava/net/URI;Ljava/util/Map;)Lorg/pkl/server/Project; + public static synthetic fun copy$default (Lorg/pkl/server/Project;Ljava/net/URI;Ljava/net/URI;Ljava/util/Map;ILjava/lang/Object;)Lorg/pkl/server/Project; + public fun equals (Ljava/lang/Object;)Z + public final fun getDependencies ()Ljava/util/Map; + public fun getPackageUri ()Ljava/net/URI; + public final fun getProjectFileUri ()Ljava/net/URI; + public fun getType ()Lorg/pkl/server/DependencyType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/server/RemoteDependency : org/pkl/server/Dependency { + public fun (Ljava/net/URI;Lorg/pkl/core/packages/Checksums;)V + public final fun component1 ()Ljava/net/URI; + public final fun component2 ()Lorg/pkl/core/packages/Checksums; + public final fun copy (Ljava/net/URI;Lorg/pkl/core/packages/Checksums;)Lorg/pkl/server/RemoteDependency; + public static synthetic fun copy$default (Lorg/pkl/server/RemoteDependency;Ljava/net/URI;Lorg/pkl/core/packages/Checksums;ILjava/lang/Object;)Lorg/pkl/server/RemoteDependency; + public fun equals (Ljava/lang/Object;)Z + public final fun getChecksums ()Lorg/pkl/core/packages/Checksums; + public fun getPackageUri ()Ljava/net/URI; + public fun getType ()Lorg/pkl/server/DependencyType; + public fun hashCode ()I + public fun toString ()Ljava/lang/String; +} + +public final class org/pkl/server/Server : java/lang/AutoCloseable { + public static final field Companion Lorg/pkl/server/Server$Companion; + public fun (Lorg/pkl/core/messaging/MessageTransport;)V + public fun close ()V + public final fun start ()V +} + +public final class org/pkl/server/Server$Companion { + public final fun stream (Ljava/io/InputStream;Ljava/io/OutputStream;)Lorg/pkl/server/Server; +} + +public final class org/pkl/server/ServerMessagePackDecoder : org/pkl/core/messaging/BaseMessagePackDecoder { + public fun (Ljava/io/InputStream;)V + public fun (Lorg/msgpack/core/MessageUnpacker;)V +} + +public final class org/pkl/server/ServerMessagePackEncoder : org/pkl/core/messaging/BaseMessagePackEncoder { + public fun (Ljava/io/OutputStream;)V + public fun (Lorg/msgpack/core/MessagePacker;)V +} + +public final class org/pkl/server/UtilsKt { + public static final fun getUnderlying (Ljava/util/concurrent/Future;)Ljava/lang/Object; +} + diff --git a/pkl-server/gradle.lockfile b/pkl-server/gradle.lockfile index 314693dcc..bb6cadda5 100644 --- a/pkl-server/gradle.lockfile +++ b/pkl-server/gradle.lockfile @@ -5,8 +5,12 @@ com.tunnelvisionlabs:antlr4-runtime:4.9.0=compileClasspath,implementationDepende net.bytebuddy:byte-buddy:1.15.11=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.apiguardian:apiguardian-api:1.1.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeOnlyDependenciesMetadata org.assertj:assertj-core:3.27.2=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.intellij.deps:trove4j:1.0.20200330=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-build-common:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-build-tools-api:2.0.21=kotlinBuildToolsApiClasspath @@ -16,6 +20,7 @@ org.jetbrains.kotlin:kotlin-compiler-runner:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-client:2.0.21=kotlinBuildToolsApiClasspath org.jetbrains.kotlin:kotlin-daemon-embeddable:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable:2.0.21=kotlinKlibCommonizerClasspath +org.jetbrains.kotlin:kotlin-metadata-jvm:2.0.21=bcv-rt-jvm-cp-resolver org.jetbrains.kotlin:kotlin-native-prebuilt:2.0.21=kotlinNativeBundleConfiguration org.jetbrains.kotlin:kotlin-reflect:1.6.10=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath org.jetbrains.kotlin:kotlin-script-runtime:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath @@ -25,9 +30,9 @@ org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable:2.0.21=kotlinBuil org.jetbrains.kotlin:kotlin-scripting-jvm:2.0.21=kotlinBuildToolsApiClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=apiDependenciesMetadata,bcv-rt-jvm-cp-resolver,compileClasspath,implementationDependenciesMetadata,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.6.4=kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinKlibCommonizerClasspath -org.jetbrains:annotations:13.0=compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains:annotations:13.0=bcv-rt-jvm-cp-resolver,compileClasspath,kotlinBuildToolsApiClasspath,kotlinCompilerClasspath,kotlinCompilerPluginClasspathMain,kotlinCompilerPluginClasspathTest,kotlinKlibCommonizerClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.junit.jupiter:junit-jupiter-api:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-engine:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.junit.jupiter:junit-jupiter-params:5.11.4=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath @@ -37,5 +42,7 @@ org.junit:junit-bom:5.11.4=testCompileClasspath,testImplementationDependenciesMe org.msgpack:msgpack-core:0.9.8=compileClasspath,implementationDependenciesMetadata,runtimeClasspath,testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath org.opentest4j:opentest4j:1.3.0=testCompileClasspath,testImplementationDependenciesMetadata,testRuntimeClasspath,testRuntimeOnlyDependenciesMetadata org.organicdesign:Paguro:3.10.3=runtimeClasspath,testRuntimeClasspath +org.ow2.asm:asm-tree:9.6=bcv-rt-jvm-cp-resolver +org.ow2.asm:asm:9.6=bcv-rt-jvm-cp-resolver org.snakeyaml:snakeyaml-engine:2.8=runtimeClasspath,testRuntimeClasspath empty=annotationProcessor,compileOnlyDependenciesMetadata,intransitiveDependenciesMetadata,kotlinCompilerPluginClasspath,kotlinNativeCompilerPluginClasspath,kotlinScriptDef,kotlinScriptDefExtensions,runtimeOnlyDependenciesMetadata,sourcesJar,testAnnotationProcessor,testApiDependenciesMetadata,testCompileOnlyDependenciesMetadata,testIntransitiveDependenciesMetadata,testKotlinScriptDef,testKotlinScriptDefExtensions diff --git a/pkl-server/pkl-server.gradle.kts b/pkl-server/pkl-server.gradle.kts index 147667e75..66a91ba89 100644 --- a/pkl-server/pkl-server.gradle.kts +++ b/pkl-server/pkl-server.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -107,3 +107,8 @@ testNative { } } } + +tasks.withType(Test::class).configureEach { + // Disable multi-JDK testing for pkl-server. + enabled = !name.lowercase().contains("jdk") +} diff --git a/pkl-tools/gradle.lockfile b/pkl-tools/gradle.lockfile index 6c205ae2c..2ed7e30b6 100644 --- a/pkl-tools/gradle.lockfile +++ b/pkl-tools/gradle.lockfile @@ -10,13 +10,22 @@ io.leangen.geantyref:geantyref:1.3.16=runtimeClasspath,testRuntimeClasspath org.commonmark:commonmark-ext-gfm-tables:0.24.0=runtimeClasspath,testRuntimeClasspath org.commonmark:commonmark:0.24.0=runtimeClasspath,testRuntimeClasspath org.fusesource.jansi:jansi:2.4.1=runtimeClasspath,testRuntimeClasspath -org.graalvm.sdk:graal-sdk:23.0.6=runtimeClasspath,testRuntimeClasspath -org.graalvm.truffle:truffle-api:23.0.6=runtimeClasspath,testRuntimeClasspath +org.graalvm.polyglot:polyglot:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:collections:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:graal-sdk:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:jniutils:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:nativeimage:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.sdk:word:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-api:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-compiler:24.1.2=runtimeClasspath,testRuntimeClasspath +org.graalvm.truffle:truffle-runtime:24.1.2=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-reflect:2.0.21=runtimeClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.0.21=compileClasspath,testCompileClasspath +org.jetbrains.kotlin:kotlin-stdlib-common:2.1.0=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk7:2.0.21=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath org.jetbrains.kotlin:kotlin-stdlib-jdk8:2.0.21=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.0.21=compileClasspath,testCompileClasspath +org.jetbrains.kotlin:kotlin-stdlib:2.1.0=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-bom:1.8.0=runtimeClasspath,testRuntimeClasspath org.jetbrains.kotlinx:kotlinx-serialization-core-jvm:1.8.0=runtimeClasspath,testRuntimeClasspath diff --git a/settings.gradle.kts b/settings.gradle.kts index 5f97fee35..2ba218904 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. + * Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -56,13 +56,9 @@ pluginManagement { } } -@Suppress("UnstableApiUsage") dependencyResolutionManagement { repositories { mavenCentral() } } - -val javaVersion = JavaVersion.current() +plugins { id("org.gradle.toolchains.foojay-resolver-convention") version ("0.8.0") } -require(javaVersion.isCompatibleWith(JavaVersion.VERSION_17)) { - "Project requires Java 17 or higher, but found ${javaVersion.majorVersion}." -} +@Suppress("UnstableApiUsage") dependencyResolutionManagement { repositories { mavenCentral() } } if ( gradle.startParameter.taskNames.contains("updateDependencyLocks") ||