Compare commits

...

143 Commits

Author SHA1 Message Date
Jen Basch 71948d69c4 Upgrade to GraalVM 25.1.3, drop macOS Intel builds (#1769) 2026-07-13 15:52:02 -07:00
Daniel Chao 60b0d86b5f Fix eval -x of local members (#1760)
This fixes a regression where local members cannot be seen by the
expression evaluator.

Because variable are now parse-time resolved, this builds a truffle node
by first constructing a synthetic module of all defined local members,
and calls AstBuilder on this synthetic module first.
2026-07-11 00:03:15 +00:00
dependabot[bot] b4ca82bf36 Bump kotlinToolchain from 2.3.21 to 2.4.0 (#1678)
Bumps `kotlinToolchain` from 2.3.21 to 2.4.0.

Updates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 2.3.21 to 2.4.0
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.0)

Updates `org.jetbrains.kotlin.plugin.serialization` from 2.3.21 to 2.4.0
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin.plugin.serialization
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jetbrains.kotlin:kotlin-gradle-plugin
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 16:19:56 -07:00
dependabot[bot] 1cc47faac3 Bump junit from 6.1.0 to 6.1.1 (#1750)
Bumps `junit` from 6.1.0 to 6.1.1.

Updates `org.junit.jupiter:junit-jupiter-api` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.1)

Updates `org.junit.jupiter:junit-jupiter-engine` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.1)

Updates `org.junit.jupiter:junit-jupiter-params` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.1)

Updates `org.junit.platform:junit-platform-launcher` from 6.1.0 to 6.1.1
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r6.1.0...r6.1.1)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-api
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.junit.jupiter:junit-jupiter-params
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.junit.platform:junit-platform-launcher
  dependency-version: 6.1.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:51:53 -07:00
dependabot[bot] d6107c071b Bump com.palantir.javapoet:javapoet from 0.16.0 to 0.17.0 (#1751)
Bumps [com.palantir.javapoet:javapoet](https://github.com/palantir/javapoet) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/palantir/javapoet/releases)
- [Commits](https://github.com/palantir/javapoet/compare/0.16.0...0.17.0)

---
updated-dependencies:
- dependency-name: com.palantir.javapoet:javapoet
  dependency-version: 0.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:51:33 -07:00
dependabot[bot] f21175df9a Bump jline from 4.2.1 to 4.3.1 (#1752)
Bumps `jline` from 4.2.1 to 4.3.1.

Updates `org.jline:jline-reader` from 4.2.1 to 4.3.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)

Updates `org.jline:jline-terminal` from 4.2.1 to 4.3.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)

Updates `org.jline:jline-terminal-jni` from 4.2.1 to 4.3.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](https://github.com/jline/jline3/compare/4.2.1...4.3.1)

---
updated-dependencies:
- dependency-name: org.jline:jline-reader
  dependency-version: 4.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jline:jline-terminal
  dependency-version: 4.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jline:jline-terminal-jni
  dependency-version: 4.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:51:11 -07:00
dependabot[bot] a59fd9d2ad Bump the codeql group with 2 updates (#1757)
Bumps the codeql group with 2 updates: [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/init](https://github.com/github/codeql-action).


Updates `github/codeql-action/analyze` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

Updates `github/codeql-action/init` from 4.36.2 to 4.36.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/8aad20d150bbac5944a9f9d289da16a4b0d87c1e...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql
- dependency-name: github/codeql-action/init
  dependency-version: 4.36.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:09:48 -07:00
Jen Basch ed1d600779 Bump pkl.impl.ghactions to version 1.8.2 (#1756) 2026-07-09 13:50:20 -07:00
Daniel Chao 7a7f3abc50 Migrate Gradle deprecations (#1745) 2026-07-08 12:05:19 -07:00
Dan Chao 25d86db416 Update changelog with release notes link 2026-07-08 10:29:48 -07:00
Dan Chao 997cfc9ae2 Start next dev iteration 2026-07-08 10:29:48 -07:00
Dan Chao 9916c23cfc Prepare 0.32.0 release 2026-07-08 10:29:48 -07:00
Daniel Chao c3d570c769 Fix docsite (#1740) 2026-07-08 09:45:07 -07:00
Daniel Chao 7499a89d83 Add 0.32 release notes (#1699)
This adds release notes for the 0.32 release
2026-07-08 09:38:37 -07:00
Daniel Chao 010d971af0 Add tests for empty IntSeq iteration (#1739) 2026-07-08 06:37:56 -07:00
Daniel Chao bd83e29641 Normalize asset paths in local dependencies (#1737)
This changes local asset path resolution so that `..` segments at the
dependency root just resolves to the dependency root.

This makes import resolution work the same between local and remote dependencies.
2026-07-08 05:43:36 -07:00
Daniel Chao 2ec62c99a7 Enforce stricter rules on reference access (#1718)
This changes the following:

1. If given a union type, the member must exist on each member of that type
2. If accessing a member off `Reference<D, Null>`, give a `Reference<D, Null>`

Also:
* Improve error messages thrown during member access.
* Add test around accessing members off of a function type
2026-07-06 19:24:14 -07:00
Daniel Chao 3fc97d8dad Allow projectpackage: resource reads by default in Gradle plugin (#1735)
Fix an inconsistency: they are allowed as imports, but not reads.
2026-07-06 14:41:52 -07:00
Daniel Chao eaf73af247 Improve thread safety for pkl:base (#1719)
Stdlib modules are singletons that are shared across multiple evaluators.
This improves thread safety by evaluating its `output.bytes` during
initialization, which initializes truffle nodes (e.g. TypeTestNode),
and also initializes the member cache of the module output of `pkl:base`
2026-07-06 11:19:29 -07:00
Daniel Chao 2ec83198f5 Fix replacements of types nested within nested constraints (#1731)
Also, adjust tests
2026-07-06 08:58:56 -07:00
dependabot[bot] 26c115aea6 Bump gradle-wrapper from 9.5.1 to 9.6.0 (#1727)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.1 to 9.6.0.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.5.1...v9.6.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-02 22:19:24 +00:00
Jen Basch 6a4d3acf21 Fix incorrect isNoopTypeCheck() calls (#1717)
`isNoopTypeCheck()` is not reliable when inside a TypeNode's constructor. This defers these calls to node execution time.
2026-07-02 14:24:55 -07:00
dependabot[bot] 08b0975af9 Bump actions/setup-java from 5.3.0 to 5.4.0 (#1726)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/ad2b38190b15e4d6bdf0c97fb4fca8412226d287...1bcf9fb12cf4aa7d266a90ae39939e61372fe520)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-02 11:29:36 -07:00
dependabot[bot] 1ad63d32b3 Bump nu.validator:validator from 26.5.29 to 26.6.24 (#1725)
Bumps [nu.validator:validator](https://github.com/validator/validator) from 26.5.29 to 26.6.24.
- [Release notes](https://github.com/validator/validator/releases)
- [Commits](https://github.com/validator/validator/compare/26.5.29...26.6.24)

---
updated-dependencies:
- dependency-name: nu.validator:validator
  dependency-version: 26.6.24
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-02 11:29:14 -07:00
dependabot[bot] f44ff9904d Bump commonMark from 0.28.0 to 0.29.0 (#1724)
Bumps `commonMark` from 0.28.0 to 0.29.0.

Updates `org.commonmark:commonmark` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases)
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.28.0...commonmark-parent-0.29.0)

Updates `org.commonmark:commonmark-ext-gfm-tables` from 0.28.0 to 0.29.0
- [Release notes](https://github.com/commonmark/commonmark-java/releases)
- [Changelog](https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/commonmark/commonmark-java/compare/commonmark-parent-0.28.0...commonmark-parent-0.29.0)

---
updated-dependencies:
- dependency-name: org.commonmark:commonmark
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.commonmark:commonmark-ext-gfm-tables
  dependency-version: 0.29.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-02 11:28:45 -07:00
Daniel Chao 45912c504f Fix incorrect member links (#1723)
This fixes various incorrect member links in the stdlib.
2026-07-02 11:04:01 -07:00
adityabagchi24 1c1a39e37f Fix type argument lost in constraint expressions within generic typealiases (#1709)
Co-authored-by: Daniel Chao <daniel.h.chao@gmail.com>
2026-07-01 10:10:03 -07:00
Jen Basch bfa6a989be Generalize TypeNode validation (#1715) 2026-06-30 08:50:35 -07:00
Jen Basch 70fc1d4ba3 Correctly handle type aliases with a type variable as the root (#1714) 2026-06-30 06:49:21 +00:00
Daniel Chao 139d1ae8ec Fix many editor diagnostics (#1707)
This addresses many IDE warnings resulting from the switch to JSpecify.

Also, this changes the behavior of exporting VmObject; there's no place
in our code that does not force a VmObject prior to export, so
the existing logic around handling nullable values has been removed.
2026-06-29 16:22:19 +00:00
Daniel Chao 742a8e88da Fix for-generator variable resolution in nested eager scope (#1706)
Fixes an issue around resolving for-generator variables in some cases
2026-06-29 09:07:51 -07:00
Islon Scherer 6239981869 Improve error message for aliased references (#1695) 2026-06-29 18:06:34 +02:00
dependabot[bot] f470903389 Bump EnricoMi/publish-unit-test-result-action from 2.23.0 to 2.24.0 (#1700)
Bumps [EnricoMi/publish-unit-test-result-action](https://github.com/enricomi/publish-unit-test-result-action) from 2.23.0 to 2.24.0.
- [Release notes](https://github.com/enricomi/publish-unit-test-result-action/releases)
- [Commits](https://github.com/enricomi/publish-unit-test-result-action/compare/c950f6fb443cb5af20a377fd0dfaa78838901040...d0a4676d0e0b938bc201470d88276b7c74c712b3)

---
updated-dependencies:
- dependency-name: EnricoMi/publish-unit-test-result-action
  dependency-version: 2.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-26 09:51:24 -07:00
Daniel Chao 158f709ed4 Adjust doc comments on ref.pkl (#1693)
This adjusts the doc comments in ref.pkl

* Fix incorrect code snippets
* Clean up examples
* Remove some sections
* Make phrasing consistent with the rest of the stdlib
2026-06-25 21:31:54 +00:00
dependabot[bot] 601a8f424c Bump jline from 4.1.3 to 4.2.1 (#1702)
Bumps `jline` from 4.1.3 to 4.2.1.

Updates `org.jline:jline-reader` from 4.1.3 to 4.2.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](https://github.com/jline/jline3/compare/4.1.3...4.2.1)

Updates `org.jline:jline-terminal` from 4.1.3 to 4.2.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](https://github.com/jline/jline3/compare/4.1.3...4.2.1)

Updates `org.jline:jline-terminal-jni` from 4.1.3 to 4.2.1
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](https://github.com/jline/jline3/compare/4.1.3...4.2.1)

---
updated-dependencies:
- dependency-name: org.jline:jline-reader
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jline:jline-terminal
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.jline:jline-terminal-jni
  dependency-version: 4.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 14:13:41 -07:00
dependabot[bot] 34c58efe4c Bump actions/setup-java from 5.2.0 to 5.3.0 (#1701)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/be666c2fcd27ec809703dec50e508c2fdc7f6654...ad2b38190b15e4d6bdf0c97fb4fca8412226d287)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: 5.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 13:51:17 -07:00
dependabot[bot] 7903a072ea Bump com.diffplug.spotless:spotless-plugin-gradle from 8.6.0 to 8.7.0 (#1704)
Bumps [com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless) from 8.6.0 to 8.7.0.
- [Release notes](https://github.com/diffplug/spotless/releases)
- [Changelog](https://github.com/diffplug/spotless/blob/main/CHANGES.md)
- [Commits](https://github.com/diffplug/spotless/compare/gradle/8.6.0...gradle/8.7.0)

---
updated-dependencies:
- dependency-name: com.diffplug.spotless:spotless-plugin-gradle
  dependency-version: 8.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 13:50:50 -07:00
dependabot[bot] bda36f0c32 Bump com.uber.nullaway:nullaway from 0.13.6 to 0.13.7 (#1703)
Bumps [com.uber.nullaway:nullaway](https://github.com/uber/NullAway) from 0.13.6 to 0.13.7.
- [Release notes](https://github.com/uber/NullAway/releases)
- [Changelog](https://github.com/uber/NullAway/blob/master/CHANGELOG.md)
- [Commits](https://github.com/uber/NullAway/compare/v0.13.6...v0.13.7)

---
updated-dependencies:
- dependency-name: com.uber.nullaway:nullaway
  dependency-version: 0.13.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 13:50:28 -07:00
Islon Scherer d42e199da3 Fix wrong error key in ReflectNodes (#1694) 2026-06-25 09:21:03 +02:00
Daniel Chao f61a5cf541 Check if receiver is a module object in relativePathTo (#1650)
Closes #1649
2026-06-24 11:48:57 +02:00
Islon Scherer dd6939ab3f Add equals and hashcode to PType (#1691) 2026-06-24 11:31:11 +02:00
Minh Vu f7cac257ad Fix Windows GraalVM installation (#1687)
## What changed

This updates the GraalVM install task so Windows installs use ZIP extraction instead of the Unix tar path. Windows now publishes the extracted directory by moving it into place, while macOS and Linux keep the existing tar extraction and symlink-based install flow.

## Why

BuildInfo.GraalVm downloads .zip archives on Windows, but InstallGraalVm always ran tar --strip-components=1 -xzf and then tried to install by creating a symbolic link. That combination is fragile on Windows: the archive format does not match the extraction command, and symlink creation can require special privileges.
2026-06-23 15:36:01 -07:00
Daniel Chao 1bf00b84ea Revert "Reject abstract members in non-abstract classes" (#1688)
The changes made in this commit are good, but we're going to kick this out
to the next release.
This is because:

1. There's a couple more issues around the `abstract` modifier that is not
implemented yet, and need design considerations
2. These are breaking changes, and we want to minimize the amount of breakages
for users.
3. The main branch is still the develop branch for Pkl 0.32

We will apply a re-revert of this commit after Pkl 0.32 is released.
2026-06-23 09:46:14 -07:00
Daniel Chao 15f089b275 Implement toString() on VmReference (#1692)
This is still needed right now, because some methods call through to
`toString()`.
2026-06-23 09:45:13 -07:00
Jen Basch 8a43e51e6b SPICE-0020: Deferred, type-safe references (#1354) 2026-06-23 15:26:06 +02:00
Vladimir Matveev b3015a09cc Catching exceptions during property evaluation (#1684)
The eval task, unlike other tasks, creates the evaluator when the property is evaluated, not just when the task is executed (in the `getEffective*` properties). The problem here is that property evaluation can and will happen before the task is executed, because Gradle needs property values for caching and sometimes task dependency information.

Therefore, if due to misconfiguration or due to intentional configuration the evaluator cannot be created - for example, when the `PklProject` module doesn't exist, but the project directory is configured - then the task will fail with an exception which looks _very_ similar to a regular execution exception, but which actually is not, because it is thrown not during task execution, but during preparation for the execution.

This distinction matters a lot when you rely on conditional task execution. If you use the `onlyIf` predicate on tasks to define a condition for the task execution, this predicate will be evaluated before the task actions are run, but *after* properties are evaluated. Thus, if property evaluation fails with an exception, it will *look* as if the `onlyIf` predicate is completely ignored and not even evaluated, and the task action is run regardless of the predicate.

This error mode is extremely confusing and is actually wrong: if I use `onlyIf` to gate the task execution, I don't want *any* of its logic to run. In fact, in my case I specifically use `onlyIf` on the evaluation task to only execute it if a prerequisite is met, and the same predicate guards a bunch of other tasks which prepare the Pkl project, so my Pkl project isn't even generated if the predicate fails. But due to this behavior of properties evaluation which are not controlled by `onlyIf`, the project is still attempted to be evaluated, and this results in a very unexpected build failure.

The solution is to ignore the evaluation exception, because for all intents and purposes, if the project can't be properly evaluated, it will fail during the task execution as it should, so the values of output properties don't really matter as the task will never be run.
2026-06-22 14:30:27 -07:00
dependabot[bot] ffc755f9c1 Bump errorProne from 2.49.0 to 2.50.0 (#1685)
Bumps `errorProne` from 2.49.0 to 2.50.0.

Updates `com.google.errorprone:error_prone_core` from 2.49.0 to 2.50.0
- [Release notes](https://github.com/google/error-prone/releases)
- [Commits](https://github.com/google/error-prone/compare/v2.49.0...v2.50.0)

Updates `com.google.errorprone:error_prone_annotations` from 2.49.0 to 2.50.0
- [Release notes](https://github.com/google/error-prone/releases)
- [Commits](https://github.com/google/error-prone/compare/v2.49.0...v2.50.0)

---
updated-dependencies:
- dependency-name: com.google.errorprone:error_prone_core
  dependency-version: 2.50.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: com.google.errorprone:error_prone_annotations
  dependency-version: 2.50.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-22 10:33:28 -07:00
dependabot[bot] 112a89468f Bump com.uber.nullaway:nullaway from 0.13.4 to 0.13.6 (#1686)
Bumps [com.uber.nullaway:nullaway](https://github.com/uber/NullAway) from 0.13.4 to 0.13.6.
- [Release notes](https://github.com/uber/NullAway/releases)
- [Changelog](https://github.com/uber/NullAway/blob/master/CHANGELOG.md)
- [Commits](uber/NullAway@v0.13.4...v0.13.6)

---
updated-dependencies:
- dependency-name: com.uber.nullaway:nullaway
  dependency-version: 0.13.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-22 10:31:12 -07:00
Islon Scherer bfac0d66ed Reject relative package URIs (#1683) 2026-06-17 15:39:03 +02:00
Daniel Chao fc8fe86e5a Remove incorrectly placed index methods on Collection (#1681)
These methods aren't implemented in `Set`, and don't really make sense because `Set` types can't be accessed by index.

Note: although this removes methods, this actually isn't a breaking change:
1. Calling `Set.findIndex()` currently throws an error around "cannot invoke abstract method"
2. `List` and `Set` are the only subclasses of `Collection`.

The following code isn't breaking at runtime, although static analysis tooling (like our IDE plugins) will now flag this as an error:

```pkl
myCollection: Collection

idx = myCollection.indexOf(1)
```
2026-06-15 08:56:55 -07:00
Aditya Singh a9c98e4396 Fix incorrect Facts in pkl:base doc comments (#1669)
Several `Facts:` examples in the `pkl:base` standard library docs assert
statements that are false when evaluated. Since these examples are not
run by any test, the mistakes went unnoticed and are rendered verbatim
into the generated API docs, where they mislead readers.

The corrected examples:

- `String.isNotBlank`: `"\t\n\r".isNotBlank` was listed as holding, but
a string of only whitespace is blank, so it is false. Negated it to
match the neighboring `!"".isNotBlank` and `!" ".isNotBlank` examples.
- `DataSize.toBinaryUnit` / `toDecimalUnit`: the `mb`/`mib` lines
mirrored the `kb`/`kib` lines, but the identity only holds for adjacent
units. `1024.kb == 1000.kib` (both 1,024,000 b), whereas `1024.mb` is
1,024,000,000 b and `1000.mib` is 1,048,576,000 b, so they are not
equal. There is no clean round-number equivalent at this magnitude, so I
removed the two false lines; the remaining examples still demonstrate
the conversion.
- `Collection.any`: `!List(1, 2, 3).any((n) -> n.isEven)` is false
because 2 is even. Changed the list to `List(1, 3, 5)` so the negation
holds.
- `IntSeq.end`: the example read `IntSeq(2, 5).start == 5`, which
documents the wrong property and is false (`start` is 2). Corrected it
to `IntSeq(2, 5).end == 5`.
- `List.isDistinctBy` / `distinctBy`: `List("a", "b", "abc")` is not
distinct by length, since `"a"` and `"b"` both have length 1. Switched
to `List("a", "bb", "ccc")` so the distinctness examples hold.
- `Map`: `Map(...).values` returns a `List`, not a `Set`. Corrected the
expected type.

I verified that each corrected example evaluates to `true`, and that the
neighboring examples I kept still pass, using the released Pkl 0.31.1
binary. The changes are confined to doc-comment text, so formatting is
unaffected.

---------

Signed-off-by: Aditya Singh <adisin650@gmail.com>
2026-06-11 17:10:14 +00:00
dependabot[bot] 8be37ae606 Bump github/codeql-action from 4.36.0 to 4.36.2 (#1676)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.36.0 to 4.36.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@7211b7c...8aad20d)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.36.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-11 16:06:18 +00:00
dependabot[bot] e012266372 Bump actions/checkout from 6.0.2 to 6.0.3 (#1677)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.2 to 6.0.3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@de0fac2...df4cb1c)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-11 08:52:25 -07:00
dependabot[bot] b3a12cb138 Bump nu.validator:validator from 26.5.22 to 26.5.29 (#1679)
Bumps [nu.validator:validator](https://github.com/validator/validator) from 26.5.22 to 26.5.29.
- [Release notes](https://github.com/validator/validator/releases)
- [Commits](validator/validator@26.5.22...26.5.29)

---
updated-dependencies:
- dependency-name: nu.validator:validator
  dependency-version: 26.5.29
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-11 08:51:45 -07:00
dependabot[bot] 1fa4e5e761 Bump com.palantir.javapoet:javapoet from 0.15.0 to 0.16.0 (#1680)
Bumps [com.palantir.javapoet:javapoet](https://github.com/palantir/javapoet) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/palantir/javapoet/releases)
- [Commits](palantir/javapoet@0.15.0...0.16.0)

---
updated-dependencies:
- dependency-name: com.palantir.javapoet:javapoet
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-11 08:50:46 -07:00
Daniel Chao 84d2c32d10 Improve handling of frame slots (#1634)
This makes various improvements to the handling of frame slot vars, and
includes some bug fixes introduced by
https://github.com/apple/pkl/pull/1622

* Refactor SymbolTable to track for-generator and parameter slots in
each scope
* Execute let expressions in their own root node in some places
* Unify how frame slots are managed; they are all represented as
`FrameSlotVariable`, created in `AstBuilder`, and passed into
`SymbolTable`.
* Fix how let expressions are executed in custom this scopes (introduce
a new root node when needed)
2026-06-11 03:02:42 +00:00
Daniel Chao 27fe06c796 Fix errors around strings with lone high or low surrogates (#1673)
This fixes some errors around treatment of strings with lone high/low
surrogates.
2026-06-10 08:35:22 -07:00
Daniel Chao 1a1e1cfea9 Fix String.padStart/padEnd (#1672)
Fixes the following two bugs:

* Pads to incorrect string length
* Does not append full code point
2026-06-10 08:34:50 -07:00
Daniel Chao 44f8706616 Fix visiting element type node of Collection (#1675)
This is a bug in the visitor logic, but currently doesn't impact any
language behavior.
2026-06-10 06:53:26 -07:00
Daniel Chao ac822f11eb Improve handling of evaluator in multi-file output (#1670)
* Re-use same evaluator across output dirs
* Close evaluator after all files are written
2026-06-10 06:52:47 -07:00
Daniel Chao f6e3f5e00b Fix VmIntSeq.length (#1666)
This fixes an internal optimization.

No language-observable change results from this fix, so no tests are
introduced.
2026-06-10 06:52:25 -07:00
Vinayak Joshi ce0383837a Reject abstract members in non-abstract classes (#1647)
Fixes #1614.

## Context

A non-abstract `class` (or `module`) was allowed to declare `abstract`
properties and methods.
Because such an enclosing type is instantiable, an `abstract` member
there can never be guaranteed
an implementation — so the contradiction surfaced only as a runtime
error when the member was
accessed (`Cannot invoke abstract method`), or not at all.

This makes it a compile-time error to declare an `abstract` member
unless its enclosing class or
module is also `abstract`. This is consistent with how Pkl already
rejects instantiating an abstract
class, and mirrors how Java and Kotlin treat abstract members.

## Before

```pkl
class Foo {
  abstract bar: Int
}
res = new Foo { bar = 5 }   // evaluated successfully (should fail)
```

```pkl
class Foo {
  abstract function bar(): Int
}
res = new Foo {}            // evaluated successfully; res.bar() failed only at runtime
```

## After

```
–– Pkl Error ––
Cannot define an abstract member in a non-abstract class.

2 | abstract bar: Int
    ^^^^^^^^
at Foo

A member can only be `abstract` if its enclosing class is also `abstract`.
```

## Implementation

- `AstBuilder` now validates, while building the AST, that a
non-abstract class/module declares no
`abstract` members. The check runs in both `visitClass` and
`visitModule`, and the error points at
  the `abstract` keyword.
- Adds the `abstractMemberInNonAbstractClass` error message.

## Scope: classes and modules

The issue describes classes; I applied the same rule to modules as well,
since a module is a class
in Pkl and a non-abstract module is likewise directly evaluatable. Happy
to narrow this to classes
only if you'd prefer — it's a one-line change either way.

The `moduleMethodModifiers` pkl-doc test fixture declared an abstract
method at non-abstract module
level (relying on the old behavior); it's updated to an `abstract
module`, and its expected
documentation output is regenerated.

## Tests

- New `LanguageSnippetTests` error cases: abstract property in a class,
abstract method in a class,
  and abstract member in a module.
- `./gradlew build` passes (`pkl-core` and `pkl-doc` included).

---------

Co-authored-by: Vinayak <vinayak@vama.app>
Co-authored-by: Daniel Chao <daniel.h.chao@gmail.com>
2026-06-10 10:36:40 +02:00
Daniel Chao 16a640ed80 Bump pkl.impl.ghactions to version 1.8.1 (#1668)
Updates pkl.impl.ghactions package to version 1.8.1
2026-06-09 09:28:22 +02:00
Daniel Chao 391329c1fa Fix test (#1667)
The previous PR (https://github.com/apple/pkl/pull/1637) got auto-merged
by mistake; there's a failing test here
2026-06-08 16:11:49 -05:00
Daniel Chao d012285f7d Improve HTTP redirect following (#1637)
This implements HTTP redirect following ourselves.

The goal is:

1. All I/O is checked against `--allowed-resources` and
`--allowed-modules`, including HTTP redirects
2. HTTP rewrite rules can affect redirect following
3. HTTP headers can affect redirect following

---------

Co-authored-by: Islon Scherer <islonscherer@gmail.com>
2026-06-08 18:13:48 +00:00
Daniel Chao b993cc3bb1 Fix doIsEquivalentTo for IntMaskSlotTypeNode (#1664)
This fixes an internal optimization; doesn't result in a
language-observable change, so no test case is introduced.
2026-06-07 12:51:31 -07:00
Daniel Chao 1cc20b611f Revert configuration cache (#1659)
This reverts the commits that enabled Gradle's configuration cache
feature.

IMO: this feature is too hard to use. We don't know if a task is valid
for the configuration cache until it runs, and it's very hard to tell if
something is safe when authoring Gradle code.
For example, our publish tasks are currently failing; I don't know how I
would fix this without running the publish task again on my dev machine.

Also, some of our build scripts become more brittle because of this; for
example, see
https://github.com/apple/pkl/blob/bb07589eae0b3195a589559a3245cbc12c29b394/build-logic/src/main/kotlin/BuildInfo.kt#L291-L296
2026-06-05 23:31:40 +00:00
Daniel Chao bb07589eae Fix gradle configuration cache issues for gradle-compatibility (#1658) 2026-06-05 14:17:06 -07:00
Daniel Chao 01f8fcae7b Catch correct exception type in MultiplicationNode (#1652)
Closes #1651
2026-06-05 12:55:27 -07:00
Daniel Chao 41e012a0f0 Fix toRadixString on math.minInt (#1656)
Closes #1655
2026-06-05 18:27:03 +00:00
Daniel Chao aa01241068 Fix eager typecheck of Map (#1654)
Closes #1653
2026-06-05 11:24:00 -07:00
Daniel Chao 87ec8ee730 Enable Gradle configuration cache (#1646)
Enable the configuration cache feature in Gradle, and adjust various
pieces of build logic that aren't configuration cache compatible.
2026-06-05 11:05:19 -07:00
Jen Basch 74eae0388e Fix error rendering @ConvertProperty annotations during error reporting (#1648)
The added snippet test originally produced error "A value of type
`Function2` cannot be exported."

This PR actually fixes the bug twice:
* By marking `ConvertProperty.render` as `hidden` so that it is skipped
when the enclosing object is exported. This broke any attempts to obtain
the module schema because this requires exporting all annotations on all
class properties.
* By changing the way that `VmUndefinedValueException.fillInHint()`
obtains the module URI to avoid obtaining the module schema (and
triggering the more expensive module schema generation process).

It also makes function-typed annotation properties in `pkl:Command` hidden to avoid similar issues there.
2026-06-05 16:50:34 +00:00
dependabot[bot] 8b6b90d889 Bump jline from 4.0.14 to 4.1.3 (#1640)
Bumps `jline` from 4.0.14 to 4.1.3.
Updates `org.jline:jline-reader` from 4.0.14 to 4.1.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jline/jline3/releases">org.jline:jline-reader's
releases</a>.</em></p>
<blockquote>
<p>JLine 4.1.3 is a patch release with important fixes for terminal
close handling, raw mode signal behavior, FFM memory management, and
shell command argument parsing.</p>
<h2>Bug Fixes</h2>
<ul>
<li>fix: terminal.close() blocks when pump thread is reading stdin (<a
href="https://redirect.github.com/jline/jline3/pull/1911">#1911</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1909">#1909</a>)</li>
<li>fix: clear ISIG in enterRawMode so Ctrl+C reaches raw-mode readers
(<a
href="https://redirect.github.com/jline/jline3/pull/1912">#1912</a>)</li>
<li>fix: use confined arenas instead of auto arenas in FFM CLibrary (<a
href="https://redirect.github.com/jline/jline3/pull/1913">#1913</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1872">#1872</a>)</li>
<li>fix: swap rows/columns in openpty winsize constructor call (<a
href="https://redirect.github.com/jline/jline3/pull/1914">#1914</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1910">#1910</a>)</li>
<li>fix: fix command argument parsing in DefaultCommandDispatcher (<a
href="https://redirect.github.com/jline/jline3/pull/1924">#1924</a>)</li>
</ul>
<h2>Chores</h2>
<ul>
<li>chore: add OSS AI helper rules for project conventions (<a
href="https://redirect.github.com/jline/jline3/pull/1917">#1917</a>)</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.0 to
1.1.1 (<a
href="https://redirect.github.com/jline/jline3/pull/1915">#1915</a>)</li>
<li>chore: Bump org.apache.maven.plugins:maven-surefire-plugin from
3.5.5 to 3.5.6 (<a
href="https://redirect.github.com/jline/jline3/pull/1918">#1918</a>)</li>
<li>chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.5.1
to 3.6.0 (<a
href="https://redirect.github.com/jline/jline3/pull/1919">#1919</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jline/jline3/compare/4.1.2...4.1.3">https://github.com/jline/jline3/compare/4.1.2...4.1.3</a></p>
<p>JLine 4.1.2 is a patch release focused on correctness fixes across
the parser, terminal I/O, and shell modules.</p>
<h2>Bug Fixes</h2>
<ul>
<li>fix: echo preserves backslash before unrecognised escape sequences
(<a
href="https://redirect.github.com/jline/jline3/issues/1901">#1901</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1863">#1863</a>)</li>
<li>fix: DefaultParser preserves backslashes inside quotes (<a
href="https://redirect.github.com/jline/jline3/issues/1902">#1902</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1877">#1877</a>)</li>
<li>fix: NonBlockingInputStream keeps thread alive after EOF (<a
href="https://redirect.github.com/jline/jline3/issues/1903">#1903</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1879">#1879</a>)</li>
<li>fix: ensure cursor position after alternate screen init (<a
href="https://redirect.github.com/jline/jline3/issues/1904">#1904</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1883">#1883</a>)</li>
<li>fix: use parser for command argument splitting (<a
href="https://redirect.github.com/jline/jline3/issues/1907">#1907</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1876">#1876</a>)</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>chore: Bump eu.maveniverse.maven.nisse:extension from 0.9.1 to 0.9.2
(<a
href="https://redirect.github.com/jline/jline3/issues/1905">#1905</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jline/jline3/compare/4.1.1...4.1.2">https://github.com/jline/jline3/compare/4.1.1...4.1.2</a></p>
<p>JLine 4.1.1 is a patch release focused on stability fixes. The most
notable change corrects the POSIX raw mode defaults (VMIN/VTIME) in
<code>enterRawMode</code>, which could cause shell REPL sessions to hang
or malfunction on certain platforms. This release also fixes a Display
bug where the internal line buffer could alias or reject immutable
caller-provided lists, hardens signal registration against null returns,
and corrects alternate charset handling in ScreenTerminal.</p>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix: Fixed Display oldLines being set as possible immutable lists.
(<a href="https://redirect.github.com/jline/jline3/pull/1878">#1878</a>)
<a href="https://github.com/Elec332"><code>@​Elec332</code></a></li>
<li>fix: use POSIX cfmakeraw defaults (VMIN=1, VTIME=0) in enterRawMode
(<a href="https://redirect.github.com/jline/jline3/pull/1871">#1871</a>)
<a href="https://github.com/BryanSant"><code>@​BryanSant</code></a></li>
<li>fix: skip null returns from signal registration in
AbstractUnixSysTerminal (<a
href="https://redirect.github.com/jline/jline3/pull/1869">#1869</a>) <a
href="https://github.com/BryanSant"><code>@​BryanSant</code></a></li>
<li>fix: Fixed ScreenTerminal alt-charset (<a
href="https://redirect.github.com/jline/jline3/pull/1867">#1867</a>) <a
href="https://github.com/Elec332"><code>@​Elec332</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li>chore: Bump com.palantir.javaformat:palantir-java-format from 2.90.0
to 2.91.0 (<a
href="https://redirect.github.com/jline/jline3/pull/1898">#1898</a>) <a
href="https://github.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jline/jline3/commit/7f44a23f0da569e33fe9a632e982f94274bfb25d"><code>7f44a23</code></a>
fix: fix command argument parsing in DefaultCommandDispatcher (<a
href="https://redirect.github.com/jline/jline3/issues/1924">#1924</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/911e3d6d3101858629b9d8f74752d8b09475b65f"><code>911e3d6</code></a>
chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.5.1 to
3.6.0 (...</li>
<li><a
href="https://github.com/jline/jline3/commit/15cdac548ce65afdad84d15096d8e5183b1a8577"><code>15cdac5</code></a>
chore: Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.5 to
3.5....</li>
<li><a
href="https://github.com/jline/jline3/commit/2d3e1ffee5d895f0c407d838bf54da924640af4f"><code>2d3e1ff</code></a>
chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.0 to
1.1.1 (#...</li>
<li><a
href="https://github.com/jline/jline3/commit/0ac019ab8c44da3ae4ee47bccd216791e6ccb35d"><code>0ac019a</code></a>
fix: terminal.close() blocks when pump thread is reading stdin (<a
href="https://redirect.github.com/jline/jline3/issues/1911">#1911</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1d637408d2cdd479a5abede3ce88710be3e611ae"><code>1d63740</code></a>
fix: use confined arenas instead of auto arenas in FFM CLibrary (fixes
<a
href="https://redirect.github.com/jline/jline3/issues/1872">#1872</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1604643d04a6ae56fdd6758757c18e968c7ff59d"><code>1604643</code></a>
Merge pull request <a
href="https://redirect.github.com/jline/jline3/issues/1912">#1912</a>
from jline/dot-tarragon</li>
<li><a
href="https://github.com/jline/jline3/commit/147ee9c7024af2caed1a306e48fd236beef475df"><code>147ee9c</code></a>
chore: add OSS AI helper rules for project conventions (<a
href="https://redirect.github.com/jline/jline3/issues/1917">#1917</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1735c1f2a22808a1a3d7837db0eca9714a66f4e8"><code>1735c1f</code></a>
fix: swap rows/columns in openpty winsize constructor call (fixes <a
href="https://redirect.github.com/jline/jline3/issues/1910">#1910</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/d9f6b86589760807162862d289685ea7673f0e41"><code>d9f6b86</code></a>
fix: add PromptCancelTest from <a
href="https://redirect.github.com/jline/jline3/issues/1908">#1908</a>
with timeout and fixture patterns</li>
<li>Additional commits viewable in <a
href="https://github.com/jline/jline3/compare/4.0.14...4.1.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.jline:jline-terminal` from 4.0.14 to 4.1.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jline/jline3/releases">org.jline:jline-terminal's
releases</a>.</em></p>
<blockquote>
<p>JLine 4.1.3 is a patch release with important fixes for terminal
close handling, raw mode signal behavior, FFM memory management, and
shell command argument parsing.</p>
<h2>Bug Fixes</h2>
<ul>
<li>fix: terminal.close() blocks when pump thread is reading stdin (<a
href="https://redirect.github.com/jline/jline3/pull/1911">#1911</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1909">#1909</a>)</li>
<li>fix: clear ISIG in enterRawMode so Ctrl+C reaches raw-mode readers
(<a
href="https://redirect.github.com/jline/jline3/pull/1912">#1912</a>)</li>
<li>fix: use confined arenas instead of auto arenas in FFM CLibrary (<a
href="https://redirect.github.com/jline/jline3/pull/1913">#1913</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1872">#1872</a>)</li>
<li>fix: swap rows/columns in openpty winsize constructor call (<a
href="https://redirect.github.com/jline/jline3/pull/1914">#1914</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1910">#1910</a>)</li>
<li>fix: fix command argument parsing in DefaultCommandDispatcher (<a
href="https://redirect.github.com/jline/jline3/pull/1924">#1924</a>)</li>
</ul>
<h2>Chores</h2>
<ul>
<li>chore: add OSS AI helper rules for project conventions (<a
href="https://redirect.github.com/jline/jline3/pull/1917">#1917</a>)</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.0 to
1.1.1 (<a
href="https://redirect.github.com/jline/jline3/pull/1915">#1915</a>)</li>
<li>chore: Bump org.apache.maven.plugins:maven-surefire-plugin from
3.5.5 to 3.5.6 (<a
href="https://redirect.github.com/jline/jline3/pull/1918">#1918</a>)</li>
<li>chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.5.1
to 3.6.0 (<a
href="https://redirect.github.com/jline/jline3/pull/1919">#1919</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jline/jline3/compare/4.1.2...4.1.3">https://github.com/jline/jline3/compare/4.1.2...4.1.3</a></p>
<p>JLine 4.1.2 is a patch release focused on correctness fixes across
the parser, terminal I/O, and shell modules.</p>
<h2>Bug Fixes</h2>
<ul>
<li>fix: echo preserves backslash before unrecognised escape sequences
(<a
href="https://redirect.github.com/jline/jline3/issues/1901">#1901</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1863">#1863</a>)</li>
<li>fix: DefaultParser preserves backslashes inside quotes (<a
href="https://redirect.github.com/jline/jline3/issues/1902">#1902</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1877">#1877</a>)</li>
<li>fix: NonBlockingInputStream keeps thread alive after EOF (<a
href="https://redirect.github.com/jline/jline3/issues/1903">#1903</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1879">#1879</a>)</li>
<li>fix: ensure cursor position after alternate screen init (<a
href="https://redirect.github.com/jline/jline3/issues/1904">#1904</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1883">#1883</a>)</li>
<li>fix: use parser for command argument splitting (<a
href="https://redirect.github.com/jline/jline3/issues/1907">#1907</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1876">#1876</a>)</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>chore: Bump eu.maveniverse.maven.nisse:extension from 0.9.1 to 0.9.2
(<a
href="https://redirect.github.com/jline/jline3/issues/1905">#1905</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jline/jline3/compare/4.1.1...4.1.2">https://github.com/jline/jline3/compare/4.1.1...4.1.2</a></p>
<p>JLine 4.1.1 is a patch release focused on stability fixes. The most
notable change corrects the POSIX raw mode defaults (VMIN/VTIME) in
<code>enterRawMode</code>, which could cause shell REPL sessions to hang
or malfunction on certain platforms. This release also fixes a Display
bug where the internal line buffer could alias or reject immutable
caller-provided lists, hardens signal registration against null returns,
and corrects alternate charset handling in ScreenTerminal.</p>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix: Fixed Display oldLines being set as possible immutable lists.
(<a href="https://redirect.github.com/jline/jline3/pull/1878">#1878</a>)
<a href="https://github.com/Elec332"><code>@​Elec332</code></a></li>
<li>fix: use POSIX cfmakeraw defaults (VMIN=1, VTIME=0) in enterRawMode
(<a href="https://redirect.github.com/jline/jline3/pull/1871">#1871</a>)
<a href="https://github.com/BryanSant"><code>@​BryanSant</code></a></li>
<li>fix: skip null returns from signal registration in
AbstractUnixSysTerminal (<a
href="https://redirect.github.com/jline/jline3/pull/1869">#1869</a>) <a
href="https://github.com/BryanSant"><code>@​BryanSant</code></a></li>
<li>fix: Fixed ScreenTerminal alt-charset (<a
href="https://redirect.github.com/jline/jline3/pull/1867">#1867</a>) <a
href="https://github.com/Elec332"><code>@​Elec332</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li>chore: Bump com.palantir.javaformat:palantir-java-format from 2.90.0
to 2.91.0 (<a
href="https://redirect.github.com/jline/jline3/pull/1898">#1898</a>) <a
href="https://github.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jline/jline3/commit/7f44a23f0da569e33fe9a632e982f94274bfb25d"><code>7f44a23</code></a>
fix: fix command argument parsing in DefaultCommandDispatcher (<a
href="https://redirect.github.com/jline/jline3/issues/1924">#1924</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/911e3d6d3101858629b9d8f74752d8b09475b65f"><code>911e3d6</code></a>
chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.5.1 to
3.6.0 (...</li>
<li><a
href="https://github.com/jline/jline3/commit/15cdac548ce65afdad84d15096d8e5183b1a8577"><code>15cdac5</code></a>
chore: Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.5 to
3.5....</li>
<li><a
href="https://github.com/jline/jline3/commit/2d3e1ffee5d895f0c407d838bf54da924640af4f"><code>2d3e1ff</code></a>
chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.0 to
1.1.1 (#...</li>
<li><a
href="https://github.com/jline/jline3/commit/0ac019ab8c44da3ae4ee47bccd216791e6ccb35d"><code>0ac019a</code></a>
fix: terminal.close() blocks when pump thread is reading stdin (<a
href="https://redirect.github.com/jline/jline3/issues/1911">#1911</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1d637408d2cdd479a5abede3ce88710be3e611ae"><code>1d63740</code></a>
fix: use confined arenas instead of auto arenas in FFM CLibrary (fixes
<a
href="https://redirect.github.com/jline/jline3/issues/1872">#1872</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1604643d04a6ae56fdd6758757c18e968c7ff59d"><code>1604643</code></a>
Merge pull request <a
href="https://redirect.github.com/jline/jline3/issues/1912">#1912</a>
from jline/dot-tarragon</li>
<li><a
href="https://github.com/jline/jline3/commit/147ee9c7024af2caed1a306e48fd236beef475df"><code>147ee9c</code></a>
chore: add OSS AI helper rules for project conventions (<a
href="https://redirect.github.com/jline/jline3/issues/1917">#1917</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1735c1f2a22808a1a3d7837db0eca9714a66f4e8"><code>1735c1f</code></a>
fix: swap rows/columns in openpty winsize constructor call (fixes <a
href="https://redirect.github.com/jline/jline3/issues/1910">#1910</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/d9f6b86589760807162862d289685ea7673f0e41"><code>d9f6b86</code></a>
fix: add PromptCancelTest from <a
href="https://redirect.github.com/jline/jline3/issues/1908">#1908</a>
with timeout and fixture patterns</li>
<li>Additional commits viewable in <a
href="https://github.com/jline/jline3/compare/4.0.14...4.1.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.jline:jline-terminal-jni` from 4.0.14 to 4.1.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/jline/jline3/releases">org.jline:jline-terminal-jni's
releases</a>.</em></p>
<blockquote>
<p>JLine 4.1.3 is a patch release with important fixes for terminal
close handling, raw mode signal behavior, FFM memory management, and
shell command argument parsing.</p>
<h2>Bug Fixes</h2>
<ul>
<li>fix: terminal.close() blocks when pump thread is reading stdin (<a
href="https://redirect.github.com/jline/jline3/pull/1911">#1911</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1909">#1909</a>)</li>
<li>fix: clear ISIG in enterRawMode so Ctrl+C reaches raw-mode readers
(<a
href="https://redirect.github.com/jline/jline3/pull/1912">#1912</a>)</li>
<li>fix: use confined arenas instead of auto arenas in FFM CLibrary (<a
href="https://redirect.github.com/jline/jline3/pull/1913">#1913</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1872">#1872</a>)</li>
<li>fix: swap rows/columns in openpty winsize constructor call (<a
href="https://redirect.github.com/jline/jline3/pull/1914">#1914</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1910">#1910</a>)</li>
<li>fix: fix command argument parsing in DefaultCommandDispatcher (<a
href="https://redirect.github.com/jline/jline3/pull/1924">#1924</a>)</li>
</ul>
<h2>Chores</h2>
<ul>
<li>chore: add OSS AI helper rules for project conventions (<a
href="https://redirect.github.com/jline/jline3/pull/1917">#1917</a>)</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.0 to
1.1.1 (<a
href="https://redirect.github.com/jline/jline3/pull/1915">#1915</a>)</li>
<li>chore: Bump org.apache.maven.plugins:maven-surefire-plugin from
3.5.5 to 3.5.6 (<a
href="https://redirect.github.com/jline/jline3/pull/1918">#1918</a>)</li>
<li>chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.5.1
to 3.6.0 (<a
href="https://redirect.github.com/jline/jline3/pull/1919">#1919</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jline/jline3/compare/4.1.2...4.1.3">https://github.com/jline/jline3/compare/4.1.2...4.1.3</a></p>
<p>JLine 4.1.2 is a patch release focused on correctness fixes across
the parser, terminal I/O, and shell modules.</p>
<h2>Bug Fixes</h2>
<ul>
<li>fix: echo preserves backslash before unrecognised escape sequences
(<a
href="https://redirect.github.com/jline/jline3/issues/1901">#1901</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1863">#1863</a>)</li>
<li>fix: DefaultParser preserves backslashes inside quotes (<a
href="https://redirect.github.com/jline/jline3/issues/1902">#1902</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1877">#1877</a>)</li>
<li>fix: NonBlockingInputStream keeps thread alive after EOF (<a
href="https://redirect.github.com/jline/jline3/issues/1903">#1903</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1879">#1879</a>)</li>
<li>fix: ensure cursor position after alternate screen init (<a
href="https://redirect.github.com/jline/jline3/issues/1904">#1904</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1883">#1883</a>)</li>
<li>fix: use parser for command argument splitting (<a
href="https://redirect.github.com/jline/jline3/issues/1907">#1907</a>,
fixes <a
href="https://redirect.github.com/jline/jline3/issues/1876">#1876</a>)</li>
</ul>
<h2>Dependencies</h2>
<ul>
<li>chore: Bump eu.maveniverse.maven.nisse:extension from 0.9.1 to 0.9.2
(<a
href="https://redirect.github.com/jline/jline3/issues/1905">#1905</a>)</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/jline/jline3/compare/4.1.1...4.1.2">https://github.com/jline/jline3/compare/4.1.1...4.1.2</a></p>
<p>JLine 4.1.1 is a patch release focused on stability fixes. The most
notable change corrects the POSIX raw mode defaults (VMIN/VTIME) in
<code>enterRawMode</code>, which could cause shell REPL sessions to hang
or malfunction on certain platforms. This release also fixes a Display
bug where the internal line buffer could alias or reject immutable
caller-provided lists, hardens signal registration against null returns,
and corrects alternate charset handling in ScreenTerminal.</p>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>fix: Fixed Display oldLines being set as possible immutable lists.
(<a href="https://redirect.github.com/jline/jline3/pull/1878">#1878</a>)
<a href="https://github.com/Elec332"><code>@​Elec332</code></a></li>
<li>fix: use POSIX cfmakeraw defaults (VMIN=1, VTIME=0) in enterRawMode
(<a href="https://redirect.github.com/jline/jline3/pull/1871">#1871</a>)
<a href="https://github.com/BryanSant"><code>@​BryanSant</code></a></li>
<li>fix: skip null returns from signal registration in
AbstractUnixSysTerminal (<a
href="https://redirect.github.com/jline/jline3/pull/1869">#1869</a>) <a
href="https://github.com/BryanSant"><code>@​BryanSant</code></a></li>
<li>fix: Fixed ScreenTerminal alt-charset (<a
href="https://redirect.github.com/jline/jline3/pull/1867">#1867</a>) <a
href="https://github.com/Elec332"><code>@​Elec332</code></a></li>
</ul>
<h2>📦 Dependency updates</h2>
<ul>
<li>chore: Bump com.palantir.javaformat:palantir-java-format from 2.90.0
to 2.91.0 (<a
href="https://redirect.github.com/jline/jline3/pull/1898">#1898</a>) <a
href="https://github.com/dependabot"><code>@​dependabot</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jline/jline3/commit/7f44a23f0da569e33fe9a632e982f94274bfb25d"><code>7f44a23</code></a>
fix: fix command argument parsing in DefaultCommandDispatcher (<a
href="https://redirect.github.com/jline/jline3/issues/1924">#1924</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/911e3d6d3101858629b9d8f74752d8b09475b65f"><code>911e3d6</code></a>
chore: Bump com.diffplug.spotless:spotless-maven-plugin from 3.5.1 to
3.6.0 (...</li>
<li><a
href="https://github.com/jline/jline3/commit/15cdac548ce65afdad84d15096d8e5183b1a8577"><code>15cdac5</code></a>
chore: Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.5 to
3.5....</li>
<li><a
href="https://github.com/jline/jline3/commit/2d3e1ffee5d895f0c407d838bf54da924640af4f"><code>2d3e1ff</code></a>
chore: Bump org.graalvm.buildtools:native-maven-plugin from 1.1.0 to
1.1.1 (#...</li>
<li><a
href="https://github.com/jline/jline3/commit/0ac019ab8c44da3ae4ee47bccd216791e6ccb35d"><code>0ac019a</code></a>
fix: terminal.close() blocks when pump thread is reading stdin (<a
href="https://redirect.github.com/jline/jline3/issues/1911">#1911</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1d637408d2cdd479a5abede3ce88710be3e611ae"><code>1d63740</code></a>
fix: use confined arenas instead of auto arenas in FFM CLibrary (fixes
<a
href="https://redirect.github.com/jline/jline3/issues/1872">#1872</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1604643d04a6ae56fdd6758757c18e968c7ff59d"><code>1604643</code></a>
Merge pull request <a
href="https://redirect.github.com/jline/jline3/issues/1912">#1912</a>
from jline/dot-tarragon</li>
<li><a
href="https://github.com/jline/jline3/commit/147ee9c7024af2caed1a306e48fd236beef475df"><code>147ee9c</code></a>
chore: add OSS AI helper rules for project conventions (<a
href="https://redirect.github.com/jline/jline3/issues/1917">#1917</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/1735c1f2a22808a1a3d7837db0eca9714a66f4e8"><code>1735c1f</code></a>
fix: swap rows/columns in openpty winsize constructor call (fixes <a
href="https://redirect.github.com/jline/jline3/issues/1910">#1910</a>)</li>
<li><a
href="https://github.com/jline/jline3/commit/d9f6b86589760807162862d289685ea7673f0e41"><code>d9f6b86</code></a>
fix: add PromptCancelTest from <a
href="https://redirect.github.com/jline/jline3/issues/1908">#1908</a>
with timeout and fixture patterns</li>
<li>Additional commits viewable in <a
href="https://github.com/jline/jline3/compare/4.0.14...4.1.3">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 10:47:28 -07:00
dependabot[bot] 7cf827005d Bump nu.validator:validator from 26.5.21 to 26.5.22 (#1641)
Bumps [nu.validator:validator](https://github.com/validator/validator)
from 26.5.21 to 26.5.22.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/validator/validator/releases">nu.validator:validator's
releases</a>.</em></p>
<blockquote>
<h2>latest</h2>
<blockquote>
<p>[!IMPORTANT]
<strong>The <a
href="https://github.com/validator/validator/releases/tag/latest">release
named <em>“latest”</em></a> is “production-ready” and is the only
release you want to use.</strong> This project no longer does “major”
version-numbered releases. Release 20.6.30 (30 June 2020) was the final
such release.
For a changelog of the latest changes, see <a
href="https://github.com/validator/validator/commits/latest/">https://github.com/validator/validator/commits/latest/</a>.</p>
</blockquote>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/validator/validator/commit/d3efb7d93855d9c12fdc7b764e81f873f6e47186"><code>d3efb7d</code></a>
chore(htmlparser): Remove some things the HTML checker doesn’t need</li>
<li><a
href="https://github.com/validator/validator/commit/058d0e74743b27a34c97991bcd30d4434b3caa27"><code>058d0e7</code></a>
fix(htmlparser): Ignore inputs inside select fragment context</li>
<li><a
href="https://github.com/validator/validator/commit/8a0ec92fa6258e5831e18d55a897889d6dc2f3c9"><code>8a0ec92</code></a>
feat(htmlparser): Add NS_NewHTMLSelectedContentElement content
creator</li>
<li><a
href="https://github.com/validator/validator/commit/a41fe4e78b13f65119f099c936c8e3a49459d44a"><code>a41fe4e</code></a>
fix(npm): Make the Java auto-installer survive download failures</li>
<li>See full diff in <a
href="https://github.com/validator/validator/compare/26.5.21...26.5.22">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nu.validator:validator&package-manager=gradle&previous-version=26.5.21&new-version=26.5.22)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 08:57:50 -07:00
dependabot[bot] 1f89f49caf Bump shadowPlugin from 9.4.1 to 9.4.2 (#1642)
Bumps `shadowPlugin` from 9.4.1 to 9.4.2.
Updates `com.gradleup.shadow:com.gradleup.shadow.gradle.plugin` from
9.4.1 to 9.4.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/GradleUp/shadow/releases">com.gradleup.shadow:com.gradleup.shadow.gradle.plugin's
releases</a>.</em></p>
<blockquote>
<h2>9.4.2</h2>
<h3>Changed</h3>
<ul>
<li>Update jdependency to support Java 27. (<a
href="https://redirect.github.com/GradleUp/shadow/pull/2033">#2033</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/GradleUp/shadow/commit/29c432a7b6824b6fef23d46dc067e5c14112ff90"><code>29c432a</code></a>
Prepare version 9.4.2</li>
<li><a
href="https://github.com/GradleUp/shadow/commit/8aa8e6c1fb2ac0c17f0ff77e521cbe599cf64245"><code>8aa8e6c</code></a>
Update dependency org.vafer:jdependency to v2.16 (<a
href="https://redirect.github.com/GradleUp/shadow/issues/2033">#2033</a>)</li>
<li>See full diff in <a
href="https://github.com/GradleUp/shadow/compare/9.4.1...9.4.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `com.gradleup.shadow` from 9.4.1 to 9.4.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/GradleUp/shadow/releases">com.gradleup.shadow's
releases</a>.</em></p>
<blockquote>
<h2>9.4.2</h2>
<h3>Changed</h3>
<ul>
<li>Update jdependency to support Java 27. (<a
href="https://redirect.github.com/GradleUp/shadow/pull/2033">#2033</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/GradleUp/shadow/commit/29c432a7b6824b6fef23d46dc067e5c14112ff90"><code>29c432a</code></a>
Prepare version 9.4.2</li>
<li><a
href="https://github.com/GradleUp/shadow/commit/8aa8e6c1fb2ac0c17f0ff77e521cbe599cf64245"><code>8aa8e6c</code></a>
Update dependency org.vafer:jdependency to v2.16 (<a
href="https://redirect.github.com/GradleUp/shadow/issues/2033">#2033</a>)</li>
<li>See full diff in <a
href="https://github.com/GradleUp/shadow/compare/9.4.1...9.4.2">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 08:57:27 -07:00
dependabot[bot] 2687b431e3 Bump com.diffplug.spotless:spotless-plugin-gradle from 8.5.1 to 8.6.0 (#1643)
Bumps
[com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless)
from 8.5.1 to 8.6.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/diffplug/spotless/releases">com.diffplug.spotless:spotless-plugin-gradle's
releases</a>.</em></p>
<blockquote>
<h2>Gradle Plugin v8.6.0</h2>
<h3>Added</h3>
<ul>
<li>Add <code>cacheDirectory(...)</code> to <code>eclipse()</code>,
<code>eclipseCdt()</code>, and <code>greclipse()</code>; the default P2
cache is <code>$GRADLE_USER_HOME/caches/p2-data</code>. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2944">#2944</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><code>forbidWildcardImports</code> and
<code>forbidModuleImports</code> now detect imports that have leading
whitespace (indentation/tabs). (<a
href="https://redirect.github.com/diffplug/spotless/pull/2939">#2939</a>)</li>
<li><code>versionCatalog()</code> no longer splits long inline tables
across multiple lines — Gradle's TOML 1.0 parser cannot read multi-line
inline tables. The <code>maxLineLength</code> option has been removed.
(<a
href="https://redirect.github.com/diffplug/spotless/issues/2948">#2948</a>)</li>
<li><code>EclipseJdtFormtterStep</code> now can conditionally set
compiler source/compliance options. Allows for better parsing of AST
Node for newer language features and more correct sorting; e.g. records
or seal classes. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2942">#2942</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>Improved formatting performance by eliminating redundant per-step
line-ending normalization in the core formatter loop. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2934">#2934</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/diffplug/spotless/commit/3a0f1017dcdfd49042a638119c1b6d998b28c67f"><code>3a0f101</code></a>
Published gradle/8.6.0</li>
<li><a
href="https://github.com/diffplug/spotless/commit/007e9d858177c93a3c7b6f9d1eb068937022613f"><code>007e9d8</code></a>
Published lib/4.6.2</li>
<li><a
href="https://github.com/diffplug/spotless/commit/a074d53565e0f523c3bba7f5135ba0d8f959f98b"><code>a074d53</code></a>
Allow setting the local P2 cache dir in the Spotless Gradle plugin (<a
href="https://redirect.github.com/diffplug/spotless/issues/2944">#2944</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/a266fc2b97098aed703300ecfb00a7fc6ab57467"><code>a266fc2</code></a>
Merge branch 'main' into add-cache-directory-dsl</li>
<li><a
href="https://github.com/diffplug/spotless/commit/e0d466e5c157d41208ba84f3b0c767a4ad3d4330"><code>e0d466e</code></a>
Fix: sort members treats record declarations as types (<a
href="https://redirect.github.com/diffplug/spotless/issues/2942">#2942</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/3936b6f2f9290bfe946a890c1efc791eb969c7db"><code>3936b6f</code></a>
Merge branch 'main' into main</li>
<li><a
href="https://github.com/diffplug/spotless/commit/278765fcbbdc91d9bbcd3bff41005a350746792c"><code>278765f</code></a>
fix: expandWildcardImports support pom type dependency, fix <a
href="https://redirect.github.com/diffplug/spotless/issues/2839">#2839</a>
(<a
href="https://redirect.github.com/diffplug/spotless/issues/2935">#2935</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/a18ddec9bd578c77177c9478207892d63f942826"><code>a18ddec</code></a>
Remove maxLineLength from versionCatalog step (<a
href="https://redirect.github.com/diffplug/spotless/issues/2949">#2949</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/b91ad871a69bb7c3722120c81f9dae3e1ee11836"><code>b91ad87</code></a>
Add changelog entries for versionCatalog maxLineLength removal</li>
<li><a
href="https://github.com/diffplug/spotless/commit/5408d5c42020a5a8dd1c03e7daf74703e564a867"><code>5408d5c</code></a>
Remove maxLineLength from versionCatalog step</li>
<li>Additional commits viewable in <a
href="https://github.com/diffplug/spotless/compare/gradle/8.5.1...gradle/8.6.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.diffplug.spotless:spotless-plugin-gradle&package-manager=gradle&previous-version=8.5.1&new-version=8.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 08:56:58 -07:00
dependabot[bot] 82c2c162ba Bump github/codeql-action from 4.35.5 to 4.36.0 (#1644)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 4.35.5 to 4.36.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.36.0</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.6">2.25.6</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3948">#3948</a></li>
</ul>
<h2>4.36.1 - 02 Jun 2026</h2>
<p>No user facing changes.</p>
<h2>4.36.0 - 22 May 2026</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>4.35.5 - 15 May 2026</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
<h2>4.35.4 - 07 May 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4">2.25.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3881">#3881</a></li>
</ul>
<h2>4.35.3 - 01 May 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.19.3 and earlier. These versions of
CodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise
Server 3.15, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3837">#3837</a></li>
<li>Configurations for private registries that use Cloudsmith or GCP
OIDC are now accepted. <a
href="https://redirect.github.com/github/codeql-action/pull/3850">#3850</a></li>
<li>Best-effort connection tests for private registries now use
<code>GET</code> requests instead of <code>HEAD</code> for better
compatibility with various registry implementations. For NuGet feeds,
the test is now always performed against the service index. <a
href="https://redirect.github.com/github/codeql-action/pull/3853">#3853</a></li>
<li>Fixed a bug where two diagnostics produced within the same
millisecond could overwrite each other on disk, causing one of them to
be lost. <a
href="https://redirect.github.com/github/codeql-action/pull/3852">#3852</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3">2.25.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3865">#3865</a></li>
</ul>
<h2>4.35.2 - 15 Apr 2026</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>4.35.1 - 27 Mar 2026</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>4.35.0 - 27 Mar 2026</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/7211b7c8077ea37d8641b6271f6a365a22a5fbfa"><code>7211b7c</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3927">#3927</a>
from github/update-v4.36.0-ebc2d9e2b</li>
<li><a
href="https://github.com/github/codeql-action/commit/7740f2fb21add1d46278215acea47540db22f022"><code>7740f2f</code></a>
Update changelog for v4.36.0</li>
<li><a
href="https://github.com/github/codeql-action/commit/ebc2d9e2bc247eec51bee8d4df806c4030eb0761"><code>ebc2d9e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3926">#3926</a>
from github/update-bundle/codeql-bundle-v2.25.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/d1f74b777c95c777bf4f42ce4b250bc916e745c7"><code>d1f74b7</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/2dc40cec39bdc63d3561d74fa6100cebb0418ff4"><code>2dc40ce</code></a>
Update default bundle to codeql-bundle-v2.25.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/84498526a009a99c875e83ef4821a8ba52de7c22"><code>8449852</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3910">#3910</a>
from github/henrymercer/repo-size-diff-check</li>
<li><a
href="https://github.com/github/codeql-action/commit/72ac23c6d16b29fbe801e87e3439941558c53094"><code>72ac23c</code></a>
Update excluded required check list</li>
<li><a
href="https://github.com/github/codeql-action/commit/c5297a28a2c3e6a8062041b58858bd7117cebe37"><code>c5297a2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3919">#3919</a>
from github/henrymercer/workflow-concurrency</li>
<li><a
href="https://github.com/github/codeql-action/commit/8ffeae7d05bc1b914a009d197e64e4f5c9e14503"><code>8ffeae7</code></a>
CI: Automatically cancel non-generated workflows</li>
<li><a
href="https://github.com/github/codeql-action/commit/f3f52bf568dc44a1069faafa538caa6b1fec40c9"><code>f3f52bf</code></a>
Revert <code>getErrorMessage</code> import</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/9e0d7b8d25671d64c341c19c0152d693099fb5ba...7211b7c8077ea37d8641b6271f6a365a22a5fbfa">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=4.35.5&new-version=4.36.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 08:56:24 -07:00
Jen Basch 68f7d06eed Improve error message when parsing truncated let expressions (#1639)
This previously yielded
```
Unexpected token `}`. Expected `}`.
```
Pretty confusing, no?

Now it's just
```
Unexpected token `}`.
```

Resolves #1638
2026-06-02 16:00:46 -07:00
Daniel Chao 99cac1f886 Fix native build (#1636) 2026-06-02 15:57:52 -07:00
Daniel Chao 035ef0a789 Change loading of external readers (#1394)
This introduces breaking changes for external readers are loaded:

1. In PklProject, relative paths are resolved relative to the enclosing
PklProject file (make behavior consistent with how other settings work)
2. Make CLI flags blow away any settings set on a PklProject
3. Introduce a new `workingDir` property, which defaults to the
PklProject dir

The overall goal is to make this behavior consistent with how other
settings work.
For example, relative paths for other evaluator settings are already
relative to the project directory.
Additionally, in every other case, CLI flags will overwrite any setting
set within PklProject.
2026-06-02 18:02:52 +00:00
Daniel Chao c9f3823952 Touch ups around local members (#1633)
* Add assertion if ObjectMember key in cachedValues is not local (should never happen)
* Move test to snippet tests
2026-06-02 03:47:46 +00:00
Jen Basch 18af04c2ec Correctly count regular members of Dynamic (#1632)
Previously, `VmDynamic.isHiddenOrLocalProperty` didn't correctly
identify locals whose cache key is an `ObjectMember` instead of an
`Identifier`, causing `VmDynamic. getRegularMemberCount` to return an
incorrect value. This caused some renderers to produce incorrect output.

Resolves #1631
2026-06-01 20:27:19 -07:00
Daniel Chao 7dd2bc67de Optimize let expressions as frame slot vars (#1622)
This introduces an optimization to write let expressions to frame slots
of the current frame, rather than transforming them into lambdas. As a
result, let expressions are _much_ faster to execute.
2026-06-01 16:53:30 -07:00
Islon Scherer bfda4cc8c8 Fix forcing of VmValue during error rendering (#1629) 2026-06-01 18:25:33 +02:00
Jen Basch c2652e0722 Bump pkl.impl.ghactions to version 1.8.0 (#1630)
Updates pkl.impl.ghactions package to version 1.8.0
2026-05-31 21:46:55 -07:00
dependabot[bot] 1d6ad8a0bf Bump nu.validator:validator from 26.5.7 to 26.5.21 (#1626)
Bumps [nu.validator:validator](https://github.com/validator/validator)
from 26.5.7 to 26.5.21.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/validator/validator/releases">nu.validator:validator's
releases</a>.</em></p>
<blockquote>
<h2>latest</h2>
<blockquote>
<p>[!IMPORTANT]
<strong>The <a
href="https://github.com/validator/validator/releases/tag/latest">release
named <em>“latest”</em></a> is “production-ready” and is the only
release you want to use.</strong> This project no longer does “major”
version-numbered releases. Release 20.6.30 (30 June 2020) was the final
such release.
For a changelog of the latest changes, see <a
href="https://github.com/validator/validator/commits/latest/">https://github.com/validator/validator/commits/latest/</a>.</p>
</blockquote>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/validator/validator/commit/8c3400a27fbf06611dfc0fe138975065a54bd82b"><code>8c3400a</code></a>
fix: Flag interactive descendants of more ARIA roles</li>
<li><a
href="https://github.com/validator/validator/commit/15a1cc300622b7afa59d9fbe8011a2aea6a2e8a2"><code>15a1cc3</code></a>
fix: Flag interactive descendants of role=tab</li>
<li><a
href="https://github.com/validator/validator/commit/85de7c858b5501673bd74f2c89738834fb6b27e3"><code>85de7c8</code></a>
ci: Add Java 26</li>
<li><a
href="https://github.com/validator/validator/commit/974a10df5344d240b9b3deb6c6f4c7fa846b6d75"><code>974a10d</code></a>
fix(release): GPG-sign the “latest” tag/release</li>
<li><a
href="https://github.com/validator/validator/commit/e5e95ebab05bb9d42a0a74be53e8ebc2a5e4a32a"><code>e5e95eb</code></a>
fix: Allow aria-expanded etc. on input[type=checkbox] with
role=switch</li>
<li><a
href="https://github.com/validator/validator/commit/536d9157f74074b0ff4e6be1b978131da00932d0"><code>536d915</code></a>
fix: Require href when area has hreflang, type, target, ping, rel, or
download</li>
<li><a
href="https://github.com/validator/validator/commit/55e52510a2ee891665ab4e57c7974d7a9952a725"><code>55e5251</code></a>
feat: Allow hreflang and type attributes on the area element</li>
<li><a
href="https://github.com/validator/validator/commit/ffe40e0100a33b25471f14f016cd974b4c171e10"><code>ffe40e0</code></a>
fix: Flag interactive descendants of role=option (issue 2099)</li>
<li><a
href="https://github.com/validator/validator/commit/4c0e326edd7cf30a4408a0e1fe13503bdc1bc5f0"><code>4c0e326</code></a>
fix: Allow role=group as a child of role=listitem (issue 2097)</li>
<li><a
href="https://github.com/validator/validator/commit/02621f3dcc86658eba4aa139539b7bd0de292900"><code>02621f3</code></a>
feat(htmlparser): Ensure mode is always set to INITIAL during
startTokenization</li>
<li>Additional commits viewable in <a
href="https://github.com/validator/validator/compare/26.5.7...26.5.21">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=nu.validator:validator&package-manager=gradle&previous-version=26.5.7&new-version=26.5.21)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 10:43:43 -07:00
dependabot[bot] ad02b2a099 Bump com.diffplug.spotless:spotless-plugin-gradle from 8.4.0 to 8.5.1 (#1628)
Bumps
[com.diffplug.spotless:spotless-plugin-gradle](https://github.com/diffplug/spotless)
from 8.4.0 to 8.5.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/diffplug/spotless/releases">com.diffplug.spotless:spotless-plugin-gradle's
releases</a>.</em></p>
<blockquote>
<h2>Gradle Plugin v8.5.1</h2>
<h3>Fixed</h3>
<ul>
<li><code>licenseHeader</code> with
<code>setLicenseHeaderYearsFromGitHistory()</code> no longer runs
<code>git log</code> through a shell, eliminating a shell-injection
vector when formatting files whose names contain shell
metacharacters.</li>
</ul>
<h2>Gradle Plugin v8.5.0</h2>
<h3>Added</h3>
<ul>
<li><code>scalafmt()</code> now reads the version from the
<code>version</code> field in the scalafmt config file when no version
is explicitly set in the plugin config, falling back to the built-in
default only if neither is available. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2922">#2922</a>)</li>
<li>Add <code>toml</code> format type with <code>versionCatalog()</code>
step for formatting and sorting Gradle version catalog files. (<a
href="https://redirect.github.com/diffplug/spotless/issues/2916">#2916</a>)</li>
<li>Add <code>withIndentStyle</code> and <code>withIndentSize</code>
configuration to <code>tableTestFormatter</code> for setting the
fallback indent when no <code>.editorconfig</code> is found. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2893">#2893</a>)</li>
<li>Add <code>javaparserVersion(...)</code> to <code>cleanthat</code>,
allowing users to override the JavaParser version pulled in transitively
by Cleanthat. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2903">#2903</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix <code>tableTestFormatter</code> editorconfig cache not honoring
<code>.editorconfig</code> changes across Gradle daemon runs due to a
shared static <code>EditorConfigProvider</code>. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2893">#2893</a>)</li>
<li>Preserve case of JDBI named bind params that collide with SQL
keywords (e.g. <code>:limit</code>, <code>:offset</code>) in the DBeaver
SQL formatter. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2899">#2899</a>)</li>
<li>Fix non-idempotent formatting when <code>importOrder()</code> is
combined with <code>greclipse()</code>: a single catch-all group no
longer strips blank lines that <code>greclipse()</code> independently
inserted between import groups. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2914">#2914</a>)</li>
<li>Fix <code>predeclareDepsFromBuildscript()</code> on Gradle 9 by
avoiding mutation of the root buildscript configuration container. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2929">#2929</a>,
fixes <a
href="https://redirect.github.com/diffplug/spotless/issues/2599">#2599</a>)</li>
</ul>
<h3>Changes</h3>
<ul>
<li>Fix <code>expandWildcardImports</code> failing on JDK XML types such
as <code>org.xml.sax.InputSource</code>. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2921">#2921</a>)</li>
<li>Use Eclipse JDT's collator-based comparison when sorting Java
members to better match Eclipse save actions. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2920">#2920</a>)</li>
<li>Bump default <code>cleanthat</code> version <code>2.24</code> -&gt;
<code>2.25</code>. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2903">#2903</a>)</li>
<li>Bump default <code>eclipse-jdt</code> version from <code>4.35</code>
to <code>4.39</code>. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2912">#2912</a>)</li>
<li>Make <code>spotlessPredeclare</code> visible to Gradle Kotlin DSL
type-safe accessors. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2925">#2925</a>)</li>
<li>Allow <code>spotlessPredeclare</code> to be used directly without
enabling it first in spotless extension. (<a
href="https://redirect.github.com/diffplug/spotless/pull/2925">#2925</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/diffplug/spotless/commit/c1595c815d5fdd344505792aa4df588f467f0ca9"><code>c1595c8</code></a>
Published gradle/8.5.1</li>
<li><a
href="https://github.com/diffplug/spotless/commit/b26b570f7eba32554061b036206f675180cd2384"><code>b26b570</code></a>
Published lib/4.6.1</li>
<li><a
href="https://github.com/diffplug/spotless/commit/ac3f6f14a2e007c2d36223335df96a2c9ba92719"><code>ac3f6f1</code></a>
Bump plexus-utils to 4.0.3 to address CVE-2025-67030 (<a
href="https://redirect.github.com/diffplug/spotless/issues/2932">#2932</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/f5039f633d436a8831d09a934a3490d68968d684"><code>f5039f6</code></a>
Bump plexus-utils to 4.0.3 to address CVE-2025-67030</li>
<li><a
href="https://github.com/diffplug/spotless/commit/0e77837d4789cb43b83c21d566fe4185adc4ae2b"><code>0e77837</code></a>
Fix shell-injection in LicenseHeaderStep SET_FROM_GIT mode (<a
href="https://redirect.github.com/diffplug/spotless/issues/2931">#2931</a>)</li>
<li><a
href="https://github.com/diffplug/spotless/commit/84f642329de804615ff16f34d12a2249f1890850"><code>84f6423</code></a>
Fix shell-injection in LicenseHeaderStep SET_FROM_GIT mode</li>
<li><a
href="https://github.com/diffplug/spotless/commit/b87eb75efe54e94a7248ff5e2d07231bcc3a1b55"><code>b87eb75</code></a>
Published maven/3.5.0</li>
<li><a
href="https://github.com/diffplug/spotless/commit/97c3baf34b79d0028a343776bb2c2fb223930355"><code>97c3baf</code></a>
Published gradle/8.5.0</li>
<li><a
href="https://github.com/diffplug/spotless/commit/3dd1a9690270e7191f2c7db8314a9079b127ee76"><code>3dd1a96</code></a>
Published lib/4.6.0</li>
<li><a
href="https://github.com/diffplug/spotless/commit/05d89540ea573eae5c937ca1e9b015b78df83d9f"><code>05d8954</code></a>
Feature maven expand wildcard import (<a
href="https://redirect.github.com/diffplug/spotless/issues/2930">#2930</a>
fixes <a
href="https://redirect.github.com/diffplug/spotless/issues/2829">#2829</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/diffplug/spotless/compare/gradle/8.4.0...gradle/8.5.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.diffplug.spotless:spotless-plugin-gradle&package-manager=gradle&previous-version=8.4.0&new-version=8.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 10:41:59 -07:00
dependabot[bot] 929688ba37 Bump org.jetbrains.kotlinx:kotlinx-coroutines-core from 1.10.2 to 1.11.0 (#1625)
Bumps
[org.jetbrains.kotlinx:kotlinx-coroutines-core](https://github.com/Kotlin/kotlinx.coroutines)
from 1.10.2 to 1.11.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Kotlin/kotlinx.coroutines/releases">org.jetbrains.kotlinx:kotlinx-coroutines-core's
releases</a>.</em></p>
<blockquote>
<h2>1.11.0</h2>
<h3>Various</h3>
<ul>
<li>Kotlin was updated to 2.2.20 (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545">#4545</a>).</li>
<li>Improved the published jar files (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842">#3842</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599">#4599</a>).</li>
<li>Various documentation improvements, including complete rewrites of
structured concurrency and error handling-related KDoc (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433">#4433</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596">#4596</a>).</li>
</ul>
<h3>Breaking changes and deprecations</h3>
<ul>
<li>Moved <code>Promise</code>-related functions from JS and Wasm/JS to
the new <code>web</code> target. On Wasm/JS, this is a breaking change.
Before the change, <code>Promise</code> on Wasm/JS could work with
arbitrary Kotlin types, but now, only <code>JsAny</code> subtypes are
accepted (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563">#4563</a>).</li>
<li>Changed handling of coroutine exceptions that can't be propagated on
JS and Wasm/JS. B
efore, exceptions were logged, but now, they are reported to the JS
runtime (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451">#4451</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631">#4631</a>).</li>
<li>Deprecated using <code>CoroutineDispatcher</code> as the coroutine
context key; now, <code>ContinuationInterceptor</code> has to be used
instead (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333">#4333</a>).</li>
<li>Advanced the deprecation levels on
<code>kotlinx-coroutines-test</code> APIs (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604">#4604</a>).</li>
<li>Added lint functions that mark passing a <code>Job</code> to
coroutine builders as deprecated (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435">#4435</a>).</li>
</ul>
<h3>Bug fixes and improvements</h3>
<ul>
<li>Added a <code>callsInPlace(EXACTLY_ONCE)</code> contract to
<code>runBlocking</code> in code shared between JVM and Native (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368">#4368</a>).</li>
<li>Added a <code>callsInPlace(EXACTLY_ONCE)</code> contract to
<code>suspendCancellableCoroutine</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574">#4574</a>).</li>
<li>Fixed <code>flowOn</code> incorrectly handling
<code>ThreadContextElement</code> updates (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403">#4403</a>).</li>
<li>Fixed exceptions in user-supplied
<code>Thread.UncaughtExceptionHandler</code> instances causing the
internal coroutines machinery to fail (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516">#4516</a>).</li>
<li>Fixed <code>CoroutineDispatcher.asScheduler</code> in the RxJava
integration not cancelling outstanding work when a <code>Worker</code>
gets cancelled, which led to memory leaks in some scenarios (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615">#4615</a>).</li>
<li>Fixed <code>SharedFlow</code> entering an invalid state when a
subscriber and an emitter are cancelled simultaneously (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583">#4583</a>).</li>
<li>Fixed an R8 optimization leading to
<code>shareIn</code>/<code>stateIn</code> coroutines getting
garbage-collected (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646">#4646</a>).
Thanks, <a
href="https://github.com/solevic"><code>@​solevic</code></a>!</li>
</ul>
<h3>Small additions</h3>
<ul>
<li>Added <code>CompletableDeferred.asDeferred</code> for obtaining a
read-only <code>Deferred</code> view (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408">#4408</a>).</li>
<li>Added <code>SharedFlow.asFlow</code> for obtaining a
<code>Flow</code> view with hidden hot flow semantics (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530">#4530</a>).
Thanks, <a
href="https://github.com/g000sha256"><code>@​g000sha256</code></a>!</li>
<li>Added a <code>StateFlow.collectLatest</code> overload returning
<code>Nothing</code> to assist with finding unreachable code (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454">#4454</a>).</li>
<li>Added <code>ReceiveChannel.consumeTo</code> for consuming a
<code>ReceiveChannel</code> into a <code>MutableCollection</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520">#4520</a>).</li>
<li>Added a <code>StateFlow&lt;T&gt;.onSubscription</code> overload
returning a <code>StateFlow&lt;T&gt;</code>, similar to
<code>SharedFlow&lt;T&gt;.onSubscription</code> returning
<code>SharedFlow&lt;T&gt;</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275">#4275</a>).
Thanks, <a
href="https://github.com/xit0c"><code>@​xit0c</code></a>!</li>
<li>Added terminal <code>Flow</code> operators for collecting a
<code>Flow</code> to a <code>Map</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541">#1541</a>).</li>
</ul>
<h3>Changelog relative to version 1.11.0</h3>
<p>No changes, only the version is increased.</p>
<h2>1.11.0-rc02</h2>
<p>Restored binary compatibility with 1.10.2 and older versions on
Wasm/JS for usages of <code>Promise</code>-related functions (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661">#4661</a>).</p>
<h2>1.11.0-rc01</h2>
<h3>Various</h3>
<ul>
<li>Kotlin was updated to 2.2.20 (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545">#4545</a>).</li>
<li>Improved the published jar files (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842">#3842</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599">#4599</a>).</li>
<li>Various documentation improvements, including complete rewrites of
structured concurrency and error handling-related KDoc (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433">#4433</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596">#4596</a>).</li>
</ul>
<h3>Breaking changes and deprecations</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md">org.jetbrains.kotlinx:kotlinx-coroutines-core's
changelog</a>.</em></p>
<blockquote>
<h2>Version 1.11.0</h2>
<h3>Various</h3>
<ul>
<li>Kotlin was updated to 2.2.20 (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545">#4545</a>).</li>
<li>Improved the published jar files (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842">#3842</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599">#4599</a>).</li>
<li>Various documentation improvements, including complete rewrites of
structured concurrency and error handling-related KDoc (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433">#4433</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596">#4596</a>).</li>
</ul>
<h3>Breaking changes and deprecations</h3>
<ul>
<li>Moved <code>Promise</code>-related functions from JS and Wasm/JS to
the new <code>web</code> target. On Wasm/JS, this is a breaking change.
Before the change, <code>Promise</code> on Wasm/JS could work with
arbitrary Kotlin types, but now, only <code>JsAny</code> subtypes are
accepted (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563">#4563</a>).</li>
<li>Changed handling of coroutine exceptions that can't be propagated on
JS and Wasm/JS. Before, exceptions were logged, but now, they are
reported to the JS runtime (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451">#4451</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631">#4631</a>).</li>
<li>Deprecated using <code>CoroutineDispatcher</code> as the coroutine
context key; now, <code>ContinuationInterceptor</code> has to be used
instead (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333">#4333</a>).</li>
<li>Advanced the deprecation levels on
<code>kotlinx-coroutines-test</code> APIs (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604">#4604</a>).</li>
<li>Added lint functions that mark passing a <code>Job</code> to
coroutine builders as deprecated (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435">#4435</a>).</li>
</ul>
<h3>Bug fixes and improvements</h3>
<ul>
<li>Added a <code>callsInPlace(EXACTLY_ONCE)</code> contract to
<code>runBlocking</code> in code shared between JVM and Native (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368">#4368</a>).</li>
<li>Added a <code>callsInPlace(EXACTLY_ONCE)</code> contract to
<code>suspendCancellableCoroutine</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574">#4574</a>).</li>
<li>Fixed <code>flowOn</code> incorrectly handling
<code>ThreadContextElement</code> updates (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403">#4403</a>).</li>
<li>Fixed exceptions in user-supplied
<code>Thread.UncaughtExceptionHandler</code> instances causing the
internal coroutines machinery to fail (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516">#4516</a>).</li>
<li>Fixed <code>CoroutineDispatcher.asScheduler</code> in the RxJava
integration not cancelling outstanding work when a <code>Worker</code>
gets cancelled, which led to memory leaks in some scenarios (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615">#4615</a>).</li>
<li>Fixed <code>SharedFlow</code> entering an invalid state when a
subscriber and an emitter are cancelled simultaneously (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583">#4583</a>).</li>
<li>Fixed an R8 optimization leading to
<code>shareIn</code>/<code>stateIn</code> coroutines getting
garbage-collected (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646">#4646</a>).
Thanks, <a
href="https://github.com/solevic"><code>@​solevic</code></a>!</li>
</ul>
<h3>Small additions</h3>
<ul>
<li>Added <code>CompletableDeferred.asDeferred</code> for obtaining a
read-only <code>Deferred</code> view (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408">#4408</a>).</li>
<li>Added <code>SharedFlow.asFlow</code> for obtaining a
<code>Flow</code> view with hidden hot flow semantics (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530">#4530</a>).
Thanks, <a
href="https://github.com/g000sha256"><code>@​g000sha256</code></a>!</li>
<li>Added a <code>StateFlow.collectLatest</code> overload returning
<code>Nothing</code> to assist with finding unreachable code (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454">#4454</a>).</li>
<li>Added <code>ReceiveChannel.consumeTo</code> for consuming a
<code>ReceiveChannel</code> into a <code>MutableCollection</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520">#4520</a>).</li>
<li>Added a <code>StateFlow&lt;T&gt;.onSubscription</code> overload
returning a <code>StateFlow&lt;T&gt;</code>, similar to
<code>SharedFlow&lt;T&gt;.onSubscription</code> returning
<code>SharedFlow&lt;T&gt;</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275">#4275</a>).
Thanks, <a
href="https://github.com/xit0c"><code>@​xit0c</code></a>!</li>
<li>Added terminal <code>Flow</code> operators for collecting a
<code>Flow</code> to a <code>Map</code> (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541">#1541</a>).</li>
</ul>
<h3>Changelog relative to version 1.11.0</h3>
<p>No changes, only the version is increased.</p>
<h2>Version 1.11.0-rc02</h2>
<p>Restored binary compatibility with 1.10.2 and older versions on
Wasm/JS for usages of <code>Promise</code>-related functions (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661">#4661</a>).</p>
<h2>Version 1.11.0-rc01</h2>
<h3>Various</h3>
<ul>
<li>Kotlin was updated to 2.2.20 (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545">#4545</a>).</li>
<li>Improved the published jar files (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842">#3842</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599">#4599</a>).</li>
<li>Various documentation improvements, including complete rewrites of
structured concurrency and error handling-related KDoc (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433">#4433</a>,
<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596">#4596</a>).</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/8564f65764d3d05893cec026c6e94250e2b23874"><code>8564f65</code></a>
Version 1.11.0</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/a4c6af96c15fe30f5d4e8b810ea74f8babd5805c"><code>a4c6af9</code></a>
Merge remote-tracking branch 'origin/master' into develop</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/ef917b460aa741691fbf991ee1b813049cae18c9"><code>ef917b4</code></a>
KT-84955: mark apple x64 tagets as deprecated error (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4645">#4645</a>)</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/5ebc421e341bf2ddce734d369da87df1985e80bd"><code>5ebc421</code></a>
Update the release procedure description (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4670">#4670</a>)</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/95f46a073bc4a1230352108cea1835fd22219a80"><code>95f46a0</code></a>
Remove old maven repository settings (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4672">#4672</a>)</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/b4f4f0aa6acb692f3fbcadd70e4958e3e9d370fc"><code>b4f4f0a</code></a>
Fix package name of <code>ToMapCollectionSamplesTest</code>. (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4674">#4674</a>)</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/86738dca7dc9ac82249abc8206263fa0065ee631"><code>86738dc</code></a>
Added templates to the issue creation wizard (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4654">#4654</a>)</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/330fcc221fb583f0b119f34191f735a73b827378"><code>330fcc2</code></a>
Version 1.11.0-rc02</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/e31cef6e9f2d26794be7d75ecbf3033b6432d582"><code>e31cef6</code></a>
Merge remote-tracking branch 'origin/master' into develop</li>
<li><a
href="https://github.com/Kotlin/kotlinx.coroutines/commit/dc6e9f61eaf3a67f4bf474a7987aedc3f16cef37"><code>dc6e9f6</code></a>
Restore Promise-related functions on Wasm/JS as HIDDEN (<a
href="https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4661">#4661</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Kotlin/kotlinx.coroutines/compare/1.10.2...1.11.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.jetbrains.kotlinx:kotlinx-coroutines-core&package-manager=gradle&previous-version=1.10.2&new-version=1.11.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 10:35:51 -07:00
dependabot[bot] e408cee7d0 Bump junit from 6.0.3 to 6.1.0 (#1627)
Bumps `junit` from 6.0.3 to 6.1.0.
Updates `org.junit.jupiter:junit-jupiter-api` from 6.0.3 to 6.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/junit-team/junit-framework/releases">org.junit.jupiter:junit-jupiter-api's
releases</a>.</em></p>
<blockquote>
<p>JUnit 6.1.0 = Platform 6.1.0 + Jupiter 6.1.0 + Vintage 6.1.0</p>
<p>See <a href="https://docs.junit.org/6.1.0/release-notes.html">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/JarvisCraft"><code>@​JarvisCraft</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5633">junit-team/junit-framework#5633</a></li>
<li><a href="https://github.com/Maran23"><code>@​Maran23</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5644">junit-team/junit-framework#5644</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0</a></p>
<p>JUnit 6.1.0-RC1 = Platform 6.1.0-RC1 + Jupiter 6.1.0-RC1 + Vintage
6.1.0-RC1</p>
<p>See <a href="https://docs.junit.org/6.1.0-RC1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mariokhoury4"><code>@​mariokhoury4</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/4574">junit-team/junit-framework#4574</a></li>
<li><a href="https://github.com/Ogu1208"><code>@​Ogu1208</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5145">junit-team/junit-framework#5145</a></li>
<li><a
href="https://github.com/HyungGeun94"><code>@​HyungGeun94</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5271">junit-team/junit-framework#5271</a></li>
<li><a
href="https://github.com/yalishevant"><code>@​yalishevant</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5316">junit-team/junit-framework#5316</a></li>
<li><a
href="https://github.com/JINU-CHANG"><code>@​JINU-CHANG</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5290">junit-team/junit-framework#5290</a></li>
<li><a href="https://github.com/jaschdoc"><code>@​jaschdoc</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5427">junit-team/junit-framework#5427</a></li>
<li><a
href="https://github.com/kawshikbuet17"><code>@​kawshikbuet17</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5561">junit-team/junit-framework#5561</a></li>
<li><a href="https://github.com/msridhar"><code>@​msridhar</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5602">junit-team/junit-framework#5602</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1">https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1</a></p>
<p>JUnit 6.1.0-M1 = Platform 6.1.0-M1 + Jupiter 6.1.0-M1 + Vintage
6.1.0-M1</p>
<p>See <a href="https://docs.junit.org/6.1.0-M1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vy"><code>@​vy</code></a> made their
first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5041">junit-team/junit-framework#5041</a></li>
<li><a href="https://github.com/Pankraz76"><code>@​Pankraz76</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5006">junit-team/junit-framework#5006</a></li>
<li><a href="https://github.com/arukiidou"><code>@​arukiidou</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5066">junit-team/junit-framework#5066</a></li>
<li><a href="https://github.com/laeubi"><code>@​laeubi</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5092">junit-team/junit-framework#5092</a></li>
<li><a href="https://github.com/jihun4452"><code>@​jihun4452</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5088">junit-team/junit-framework#5088</a></li>
<li><a
href="https://github.com/TWiStErRob"><code>@​TWiStErRob</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5133">junit-team/junit-framework#5133</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1">https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0dc3af1cb1973d257b5bc75d81e02454d5e4e556"><code>0dc3af1</code></a>
Release 6.1.0</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/1d130020c85170edcb46ce7ed1f7f78824e37c04"><code>1d13002</code></a>
Prepare 6.1.0 release notes</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/072b2175bbd7b0b3b26f5d928550ec7a21e68268"><code>072b217</code></a>
Update plugin spotless to v8.5.0 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5668">#5668</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/3a53480218f4b752a9ca77506e10632cd483c0f8"><code>3a53480</code></a>
Update Gradle to v9.5.1 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5666">#5666</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0e18a20a9f98d063ae02b3ba19329143f5c7f034"><code>0e18a20</code></a>
Update zizmorcore/zizmor-action action to v0.5.4 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5669">#5669</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0a2634fb9cbbd057b02cf629d7d272c16d62be4b"><code>0a2634f</code></a>
Update github/codeql-action action to v4.35.5 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5671">#5671</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/4dbd5561b00ac761a62c516bfaec51c212a2d60c"><code>4dbd556</code></a>
Restructure workflows to have single &quot;status&quot; job (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5670">#5670</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/f2194cebe377512cb0ade388c62a881a0bcf5d3e"><code>f2194ce</code></a>
Increase timeout to reduce flakiness</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/5c8fdd2df65b763151cccbe669ea9e1c3155efcd"><code>5c8fdd2</code></a>
Update dependency org.apache.groovy:groovy to v5.0.6 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5659">#5659</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/43c6982324602582902c9bdb213fd5e007f9cf3d"><code>43c6982</code></a>
Update dependency org.slf4j:slf4j-jdk14 to v2.0.18 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5667">#5667</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.junit.jupiter:junit-jupiter-engine` from 6.0.3 to 6.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/junit-team/junit-framework/releases">org.junit.jupiter:junit-jupiter-engine's
releases</a>.</em></p>
<blockquote>
<p>JUnit 6.1.0 = Platform 6.1.0 + Jupiter 6.1.0 + Vintage 6.1.0</p>
<p>See <a href="https://docs.junit.org/6.1.0/release-notes.html">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/JarvisCraft"><code>@​JarvisCraft</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5633">junit-team/junit-framework#5633</a></li>
<li><a href="https://github.com/Maran23"><code>@​Maran23</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5644">junit-team/junit-framework#5644</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0</a></p>
<p>JUnit 6.1.0-RC1 = Platform 6.1.0-RC1 + Jupiter 6.1.0-RC1 + Vintage
6.1.0-RC1</p>
<p>See <a href="https://docs.junit.org/6.1.0-RC1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mariokhoury4"><code>@​mariokhoury4</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/4574">junit-team/junit-framework#4574</a></li>
<li><a href="https://github.com/Ogu1208"><code>@​Ogu1208</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5145">junit-team/junit-framework#5145</a></li>
<li><a
href="https://github.com/HyungGeun94"><code>@​HyungGeun94</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5271">junit-team/junit-framework#5271</a></li>
<li><a
href="https://github.com/yalishevant"><code>@​yalishevant</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5316">junit-team/junit-framework#5316</a></li>
<li><a
href="https://github.com/JINU-CHANG"><code>@​JINU-CHANG</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5290">junit-team/junit-framework#5290</a></li>
<li><a href="https://github.com/jaschdoc"><code>@​jaschdoc</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5427">junit-team/junit-framework#5427</a></li>
<li><a
href="https://github.com/kawshikbuet17"><code>@​kawshikbuet17</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5561">junit-team/junit-framework#5561</a></li>
<li><a href="https://github.com/msridhar"><code>@​msridhar</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5602">junit-team/junit-framework#5602</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1">https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1</a></p>
<p>JUnit 6.1.0-M1 = Platform 6.1.0-M1 + Jupiter 6.1.0-M1 + Vintage
6.1.0-M1</p>
<p>See <a href="https://docs.junit.org/6.1.0-M1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vy"><code>@​vy</code></a> made their
first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5041">junit-team/junit-framework#5041</a></li>
<li><a href="https://github.com/Pankraz76"><code>@​Pankraz76</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5006">junit-team/junit-framework#5006</a></li>
<li><a href="https://github.com/arukiidou"><code>@​arukiidou</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5066">junit-team/junit-framework#5066</a></li>
<li><a href="https://github.com/laeubi"><code>@​laeubi</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5092">junit-team/junit-framework#5092</a></li>
<li><a href="https://github.com/jihun4452"><code>@​jihun4452</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5088">junit-team/junit-framework#5088</a></li>
<li><a
href="https://github.com/TWiStErRob"><code>@​TWiStErRob</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5133">junit-team/junit-framework#5133</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1">https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0dc3af1cb1973d257b5bc75d81e02454d5e4e556"><code>0dc3af1</code></a>
Release 6.1.0</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/1d130020c85170edcb46ce7ed1f7f78824e37c04"><code>1d13002</code></a>
Prepare 6.1.0 release notes</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/072b2175bbd7b0b3b26f5d928550ec7a21e68268"><code>072b217</code></a>
Update plugin spotless to v8.5.0 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5668">#5668</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/3a53480218f4b752a9ca77506e10632cd483c0f8"><code>3a53480</code></a>
Update Gradle to v9.5.1 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5666">#5666</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0e18a20a9f98d063ae02b3ba19329143f5c7f034"><code>0e18a20</code></a>
Update zizmorcore/zizmor-action action to v0.5.4 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5669">#5669</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0a2634fb9cbbd057b02cf629d7d272c16d62be4b"><code>0a2634f</code></a>
Update github/codeql-action action to v4.35.5 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5671">#5671</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/4dbd5561b00ac761a62c516bfaec51c212a2d60c"><code>4dbd556</code></a>
Restructure workflows to have single &quot;status&quot; job (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5670">#5670</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/f2194cebe377512cb0ade388c62a881a0bcf5d3e"><code>f2194ce</code></a>
Increase timeout to reduce flakiness</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/5c8fdd2df65b763151cccbe669ea9e1c3155efcd"><code>5c8fdd2</code></a>
Update dependency org.apache.groovy:groovy to v5.0.6 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5659">#5659</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/43c6982324602582902c9bdb213fd5e007f9cf3d"><code>43c6982</code></a>
Update dependency org.slf4j:slf4j-jdk14 to v2.0.18 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5667">#5667</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.junit.jupiter:junit-jupiter-params` from 6.0.3 to 6.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/junit-team/junit-framework/releases">org.junit.jupiter:junit-jupiter-params's
releases</a>.</em></p>
<blockquote>
<p>JUnit 6.1.0 = Platform 6.1.0 + Jupiter 6.1.0 + Vintage 6.1.0</p>
<p>See <a href="https://docs.junit.org/6.1.0/release-notes.html">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/JarvisCraft"><code>@​JarvisCraft</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5633">junit-team/junit-framework#5633</a></li>
<li><a href="https://github.com/Maran23"><code>@​Maran23</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5644">junit-team/junit-framework#5644</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0</a></p>
<p>JUnit 6.1.0-RC1 = Platform 6.1.0-RC1 + Jupiter 6.1.0-RC1 + Vintage
6.1.0-RC1</p>
<p>See <a href="https://docs.junit.org/6.1.0-RC1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mariokhoury4"><code>@​mariokhoury4</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/4574">junit-team/junit-framework#4574</a></li>
<li><a href="https://github.com/Ogu1208"><code>@​Ogu1208</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5145">junit-team/junit-framework#5145</a></li>
<li><a
href="https://github.com/HyungGeun94"><code>@​HyungGeun94</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5271">junit-team/junit-framework#5271</a></li>
<li><a
href="https://github.com/yalishevant"><code>@​yalishevant</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5316">junit-team/junit-framework#5316</a></li>
<li><a
href="https://github.com/JINU-CHANG"><code>@​JINU-CHANG</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5290">junit-team/junit-framework#5290</a></li>
<li><a href="https://github.com/jaschdoc"><code>@​jaschdoc</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5427">junit-team/junit-framework#5427</a></li>
<li><a
href="https://github.com/kawshikbuet17"><code>@​kawshikbuet17</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5561">junit-team/junit-framework#5561</a></li>
<li><a href="https://github.com/msridhar"><code>@​msridhar</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5602">junit-team/junit-framework#5602</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1">https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1</a></p>
<p>JUnit 6.1.0-M1 = Platform 6.1.0-M1 + Jupiter 6.1.0-M1 + Vintage
6.1.0-M1</p>
<p>See <a href="https://docs.junit.org/6.1.0-M1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vy"><code>@​vy</code></a> made their
first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5041">junit-team/junit-framework#5041</a></li>
<li><a href="https://github.com/Pankraz76"><code>@​Pankraz76</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5006">junit-team/junit-framework#5006</a></li>
<li><a href="https://github.com/arukiidou"><code>@​arukiidou</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5066">junit-team/junit-framework#5066</a></li>
<li><a href="https://github.com/laeubi"><code>@​laeubi</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5092">junit-team/junit-framework#5092</a></li>
<li><a href="https://github.com/jihun4452"><code>@​jihun4452</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5088">junit-team/junit-framework#5088</a></li>
<li><a
href="https://github.com/TWiStErRob"><code>@​TWiStErRob</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5133">junit-team/junit-framework#5133</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1">https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0dc3af1cb1973d257b5bc75d81e02454d5e4e556"><code>0dc3af1</code></a>
Release 6.1.0</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/1d130020c85170edcb46ce7ed1f7f78824e37c04"><code>1d13002</code></a>
Prepare 6.1.0 release notes</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/072b2175bbd7b0b3b26f5d928550ec7a21e68268"><code>072b217</code></a>
Update plugin spotless to v8.5.0 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5668">#5668</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/3a53480218f4b752a9ca77506e10632cd483c0f8"><code>3a53480</code></a>
Update Gradle to v9.5.1 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5666">#5666</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0e18a20a9f98d063ae02b3ba19329143f5c7f034"><code>0e18a20</code></a>
Update zizmorcore/zizmor-action action to v0.5.4 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5669">#5669</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0a2634fb9cbbd057b02cf629d7d272c16d62be4b"><code>0a2634f</code></a>
Update github/codeql-action action to v4.35.5 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5671">#5671</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/4dbd5561b00ac761a62c516bfaec51c212a2d60c"><code>4dbd556</code></a>
Restructure workflows to have single &quot;status&quot; job (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5670">#5670</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/f2194cebe377512cb0ade388c62a881a0bcf5d3e"><code>f2194ce</code></a>
Increase timeout to reduce flakiness</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/5c8fdd2df65b763151cccbe669ea9e1c3155efcd"><code>5c8fdd2</code></a>
Update dependency org.apache.groovy:groovy to v5.0.6 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5659">#5659</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/43c6982324602582902c9bdb213fd5e007f9cf3d"><code>43c6982</code></a>
Update dependency org.slf4j:slf4j-jdk14 to v2.0.18 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5667">#5667</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `org.junit.platform:junit-platform-launcher` from 6.0.3 to 6.1.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/junit-team/junit-framework/releases">org.junit.platform:junit-platform-launcher's
releases</a>.</em></p>
<blockquote>
<p>JUnit 6.1.0 = Platform 6.1.0 + Jupiter 6.1.0 + Vintage 6.1.0</p>
<p>See <a href="https://docs.junit.org/6.1.0/release-notes.html">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/JarvisCraft"><code>@​JarvisCraft</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5633">junit-team/junit-framework#5633</a></li>
<li><a href="https://github.com/Maran23"><code>@​Maran23</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5644">junit-team/junit-framework#5644</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0</a></p>
<p>JUnit 6.1.0-RC1 = Platform 6.1.0-RC1 + Jupiter 6.1.0-RC1 + Vintage
6.1.0-RC1</p>
<p>See <a href="https://docs.junit.org/6.1.0-RC1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mariokhoury4"><code>@​mariokhoury4</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/4574">junit-team/junit-framework#4574</a></li>
<li><a href="https://github.com/Ogu1208"><code>@​Ogu1208</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5145">junit-team/junit-framework#5145</a></li>
<li><a
href="https://github.com/HyungGeun94"><code>@​HyungGeun94</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5271">junit-team/junit-framework#5271</a></li>
<li><a
href="https://github.com/yalishevant"><code>@​yalishevant</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5316">junit-team/junit-framework#5316</a></li>
<li><a
href="https://github.com/JINU-CHANG"><code>@​JINU-CHANG</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5290">junit-team/junit-framework#5290</a></li>
<li><a href="https://github.com/jaschdoc"><code>@​jaschdoc</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5427">junit-team/junit-framework#5427</a></li>
<li><a
href="https://github.com/kawshikbuet17"><code>@​kawshikbuet17</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5561">junit-team/junit-framework#5561</a></li>
<li><a href="https://github.com/msridhar"><code>@​msridhar</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5602">junit-team/junit-framework#5602</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1">https://github.com/junit-team/junit-framework/compare/r6.1.0-M1...r6.1.0-RC1</a></p>
<p>JUnit 6.1.0-M1 = Platform 6.1.0-M1 + Jupiter 6.1.0-M1 + Vintage
6.1.0-M1</p>
<p>See <a href="https://docs.junit.org/6.1.0-M1/release-notes/">Release
Notes</a>.</p>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vy"><code>@​vy</code></a> made their
first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5041">junit-team/junit-framework#5041</a></li>
<li><a href="https://github.com/Pankraz76"><code>@​Pankraz76</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5006">junit-team/junit-framework#5006</a></li>
<li><a href="https://github.com/arukiidou"><code>@​arukiidou</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5066">junit-team/junit-framework#5066</a></li>
<li><a href="https://github.com/laeubi"><code>@​laeubi</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5092">junit-team/junit-framework#5092</a></li>
<li><a href="https://github.com/jihun4452"><code>@​jihun4452</code></a>
made their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5088">junit-team/junit-framework#5088</a></li>
<li><a
href="https://github.com/TWiStErRob"><code>@​TWiStErRob</code></a> made
their first contribution in <a
href="https://redirect.github.com/junit-team/junit-framework/pull/5133">junit-team/junit-framework#5133</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1">https://github.com/junit-team/junit-framework/compare/r6.0.0...r6.1.0-M1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0dc3af1cb1973d257b5bc75d81e02454d5e4e556"><code>0dc3af1</code></a>
Release 6.1.0</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/1d130020c85170edcb46ce7ed1f7f78824e37c04"><code>1d13002</code></a>
Prepare 6.1.0 release notes</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/072b2175bbd7b0b3b26f5d928550ec7a21e68268"><code>072b217</code></a>
Update plugin spotless to v8.5.0 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5668">#5668</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/3a53480218f4b752a9ca77506e10632cd483c0f8"><code>3a53480</code></a>
Update Gradle to v9.5.1 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5666">#5666</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0e18a20a9f98d063ae02b3ba19329143f5c7f034"><code>0e18a20</code></a>
Update zizmorcore/zizmor-action action to v0.5.4 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5669">#5669</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/0a2634fb9cbbd057b02cf629d7d272c16d62be4b"><code>0a2634f</code></a>
Update github/codeql-action action to v4.35.5 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5671">#5671</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/4dbd5561b00ac761a62c516bfaec51c212a2d60c"><code>4dbd556</code></a>
Restructure workflows to have single &quot;status&quot; job (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5670">#5670</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/f2194cebe377512cb0ade388c62a881a0bcf5d3e"><code>f2194ce</code></a>
Increase timeout to reduce flakiness</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/5c8fdd2df65b763151cccbe669ea9e1c3155efcd"><code>5c8fdd2</code></a>
Update dependency org.apache.groovy:groovy to v5.0.6 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5659">#5659</a>)</li>
<li><a
href="https://github.com/junit-team/junit-framework/commit/43c6982324602582902c9bdb213fd5e007f9cf3d"><code>43c6982</code></a>
Update dependency org.slf4j:slf4j-jdk14 to v2.0.18 (<a
href="https://redirect.github.com/junit-team/junit-framework/issues/5667">#5667</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/junit-team/junit-framework/compare/r6.0.3...r6.1.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 10:35:39 -07:00
dependabot[bot] 2f4128a31c Bump github/codeql-action from 4.35.4 to 4.35.5 (#1624)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 4.35.4 to 4.35.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.35.5</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>4.36.0 - 22 May 2026</h2>
<ul>
<li><em>Breaking change</em>: Bump the minimum required CodeQL bundle
version to 2.19.4. <a
href="https://redirect.github.com/github/codeql-action/pull/3894">#3894</a></li>
<li>Add support for SHA-256 Git object IDs. <a
href="https://redirect.github.com/github/codeql-action/pull/3893">#3893</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.5">2.25.5</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3926">#3926</a></li>
</ul>
<h2>4.35.5 - 15 May 2026</h2>
<ul>
<li>We have improved how the JavaScript bundles for the CodeQL Action
are generated to avoid duplication across bundles and reduce the size of
the repository by around 70%. This should have no effect on the runtime
behaviour of the CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3899">#3899</a></li>
<li>For performance and accuracy reasons, <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> will now only be enabled on a pull request when
diff-informed analysis is also enabled for that run. If diff-informed
analysis is unavailable (for example, because the PR diff ranges could
not be computed), the action will fall back to a full analysis. <a
href="https://redirect.github.com/github/codeql-action/pull/3791">#3791</a></li>
<li>If multiple inputs are provided for the GitHub-internal
<code>analysis-kinds</code> input, only <code>code-scanning</code> will
be enabled. The <code>analysis-kinds</code> input is experimental, for
GitHub-internal use only, and may change without notice at any time. <a
href="https://redirect.github.com/github/codeql-action/pull/3892">#3892</a></li>
<li>Added an experimental change which, when running a Code Scanning
analysis for a PR with <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> enabled, prefers CodeQL CLI versions that have
a cached overlay-base database for the configured languages. This speeds
up analysis for a repository when there is not yet a cached overlay-base
database for the latest CLI version. We expect to roll this change out
to everyone in May. <a
href="https://redirect.github.com/github/codeql-action/pull/3880">#3880</a></li>
</ul>
<h2>4.35.4 - 07 May 2026</h2>
<ul>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.4">2.25.4</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3881">#3881</a></li>
</ul>
<h2>4.35.3 - 01 May 2026</h2>
<ul>
<li><em>Upcoming breaking change</em>: Add a deprecation warning for
customers using CodeQL version 2.19.3 and earlier. These versions of
CodeQL were discontinued on 9 April 2026 alongside GitHub Enterprise
Server 3.15, and will be unsupported by the next minor release of the
CodeQL Action. <a
href="https://redirect.github.com/github/codeql-action/pull/3837">#3837</a></li>
<li>Configurations for private registries that use Cloudsmith or GCP
OIDC are now accepted. <a
href="https://redirect.github.com/github/codeql-action/pull/3850">#3850</a></li>
<li>Best-effort connection tests for private registries now use
<code>GET</code> requests instead of <code>HEAD</code> for better
compatibility with various registry implementations. For NuGet feeds,
the test is now always performed against the service index. <a
href="https://redirect.github.com/github/codeql-action/pull/3853">#3853</a></li>
<li>Fixed a bug where two diagnostics produced within the same
millisecond could overwrite each other on disk, causing one of them to
be lost. <a
href="https://redirect.github.com/github/codeql-action/pull/3852">#3852</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.3">2.25.3</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3865">#3865</a></li>
</ul>
<h2>4.35.2 - 15 Apr 2026</h2>
<ul>
<li>The undocumented TRAP cache cleanup feature that could be enabled
using the <code>CODEQL_ACTION_CLEANUP_TRAP_CACHES</code> environment
variable is deprecated and will be removed in May 2026. If you are
affected by this, we recommend disabling TRAP caching by passing the
<code>trap-caching: false</code> input to the <code>init</code> Action.
<a
href="https://redirect.github.com/github/codeql-action/pull/3795">#3795</a></li>
<li>The Git version 2.36.0 requirement for improved incremental analysis
now only applies to repositories that contain submodules. <a
href="https://redirect.github.com/github/codeql-action/pull/3789">#3789</a></li>
<li>Python analysis on GHES no longer extracts the standard library,
relying instead on models of the standard library. This should result in
significantly faster extraction and analysis times, while the effect on
alerts should be minimal. <a
href="https://redirect.github.com/github/codeql-action/pull/3794">#3794</a></li>
<li>Fixed a bug in the validation of OIDC configurations for private
registries that was added in CodeQL Action 4.33.0 / 3.33.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3807">#3807</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.2">2.25.2</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3823">#3823</a></li>
</ul>
<h2>4.35.1 - 27 Mar 2026</h2>
<ul>
<li>Fix incorrect minimum required Git version for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a>: it should have been 2.36.0, not 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3781">#3781</a></li>
</ul>
<h2>4.35.0 - 27 Mar 2026</h2>
<ul>
<li>Reduced the minimum Git version required for <a
href="https://redirect.github.com/github/roadmap/issues/1158">improved
incremental analysis</a> from 2.38.0 to 2.11.0. <a
href="https://redirect.github.com/github/codeql-action/pull/3767">#3767</a></li>
<li>Update default CodeQL bundle version to <a
href="https://github.com/github/codeql-action/releases/tag/codeql-bundle-v2.25.1">2.25.1</a>.
<a
href="https://redirect.github.com/github/codeql-action/pull/3773">#3773</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/9e0d7b8d25671d64c341c19c0152d693099fb5ba"><code>9e0d7b8</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3905">#3905</a>
from github/update-v4.35.5-d4b485515</li>
<li><a
href="https://github.com/github/codeql-action/commit/6d7d59927c0c7336c1d1247c7e159e79edbf7684"><code>6d7d599</code></a>
Add changelog entry for <a
href="https://redirect.github.com/github/codeql-action/issues/3899">#3899</a></li>
<li><a
href="https://github.com/github/codeql-action/commit/51f7e38c69d3cd7966375fe0ffff19669f22bd14"><code>51f7e38</code></a>
Update changelog for v4.35.5</li>
<li><a
href="https://github.com/github/codeql-action/commit/d4b485515e8531d7071a39d526213eb5b2e74a11"><code>d4b4855</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3899">#3899</a>
from github/mbg/esbuild/split</li>
<li><a
href="https://github.com/github/codeql-action/commit/127de8117f134e8809c127d53e940b3ffc1db8e9"><code>127de81</code></a>
Merge remote-tracking branch 'origin/main' into mbg/esbuild/split</li>
<li><a
href="https://github.com/github/codeql-action/commit/7fde13f26ad3f7008e8fe6755cb997b54f7a2f3b"><code>7fde13f</code></a>
Use src + basename in header to avoid issues on Windows</li>
<li><a
href="https://github.com/github/codeql-action/commit/dfa61e7305ed28b74dcc2c68bd665b36751ad933"><code>dfa61e7</code></a>
Improve pattern matching and error handling</li>
<li><a
href="https://github.com/github/codeql-action/commit/52aafec07347933a26e670390c3f894c5c05e64a"><code>52aafec</code></a>
Import and call <code>runWrapper</code> normally in <code>analyze</code>
tests</li>
<li><a
href="https://github.com/github/codeql-action/commit/0d08c01f7874da2f932e4d4e4d42b1c43be88111"><code>0d08c01</code></a>
Auto-generate shared bundle</li>
<li><a
href="https://github.com/github/codeql-action/commit/14085a675cb6d8cddc805b946cc1d51e3232a204"><code>14085a6</code></a>
Auto-generate entry points</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/68bde559dea0fdcac2102bfdf6230c5f70eb485e...9e0d7b8d25671d64c341c19c0152d693099fb5ba">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=4.35.4&new-version=4.35.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-28 10:27:18 -07:00
Daniel Chao 7c927b0a43 Fix deploy build (#1623)
Fixes the following error:

```
A problem was found with the configuration of task ':pkl-core:sourcesJar' (type 'Jar').
Deprecated Gradle features were used in this build, making it incompatible with Gradle 10.
  - Gradle detected a problem with the following location: '/home/runner/work/pkl/pkl/pkl-core/build/generated/sources/baseModuleMembers'.

    
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
    Reason: Task ':pkl-core:sourcesJar' uses this output of task ':pkl-core:generateBaseModuleMembers' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.

    
For more on this, please refer to https://docs.gradle.org/9.5.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
    Possible solutions:
94 actionable tasks: 76 executed, 18 from cache
      1. Declare task ':pkl-core:generateBaseModuleMembers' as an input of ':pkl-core:sourcesJar'.
      2. Declare an explicit dependency on ':pkl-core:generateBaseModuleMembers' from ':pkl-core:sourcesJar' using Task#dependsOn.
      3. Declare an explicit dependency on ':pkl-core:generateBaseModuleMembers' from ':pkl-core:sourcesJar' using Task#mustRunAfter.
```
2026-05-26 15:20:54 -07:00
Islon Scherer dbf04f6598 Resolve variables at parse time (#1429)
This replaces `ResolveVariableNode` and `ResolveMethodNode` with their resolution.
When we build the truffle node tree, we determine whether names resolve to:

* lexical scope
* base module
* implicit this

Then, we use this information to directly construct the underlying nodes (`ReadPropertyNode`, `ReadLocalPropertyNode`, etc).

Additionally, `AstBuilder` determines whether the property access must be const or not.

This introduces a `BaseModuleMembers` registry, which gets generated as part of Java compilation.
2026-05-26 14:08:20 -07:00
Daniel Chao b2f005d11d Enable error-prone check for GuardedBy, fix errors (#1621) 2026-05-26 13:39:15 -07:00
Daniel Chao 72948e50fe Fix calls to string case api (#1620)
* Enable IntelliJ inspection for calls to `String.toLowerCase()` and
`String.toUpperCase()`
* Enable error prone check
* Fix all issues
2026-05-26 11:20:02 -07:00
Islon Scherer d6f35dd49e Fix formatter bugs (#1619) 2026-05-26 19:38:35 +02:00
Mirko Alicastro ff319faef3 Use Locale.ROOT when lowercasing rewrite URIs (#1618)
Use Locale.ROOT to apply the lowecase format. For URI scheme and host
locale-neutral casing is the semantically the correct choice. Added a
unit test that sets the default locale to tr-TR and that would fail
without the fix.
2026-05-26 09:37:42 -07:00
Daniel Chao a1eea47b3f Restore @ThreadSafe and @Immutable annotations (#1613) 2026-05-22 15:58:09 -07:00
dependabot[bot] 648f9143bf Bump io.leangen.geantyref:geantyref from 1.3.16 to 2.0.1 (#1566)
Bumps [io.leangen.geantyref:geantyref](https://github.com/leangen/geantyref) from 1.3.16 to 2.0.1.
- [Release notes](https://github.com/leangen/geantyref/releases)
- [Commits](leangen/geantyref@geantyref-v1.3.16...geantyref-v2.0.1)

---
updated-dependencies:
- dependency-name: io.leangen.geantyref:geantyref
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-22 15:54:27 -07:00
Daniel Chao 95bcd6a463 Remove jsr305; switch GuardedBy to com.google.errorprone (#1611)
- Remove single usage of @immutable without replacement
- Remove HttpClient's usages of @threadsafe without replacement
- Replace javax.annotation.concurrent.GuardedBy
  with com.google.errorprone.annotations.concurrent.GuardedBy

Also:
- Remove redundant final modifiers from members of a final class

---------

Co-authored-by: odenix <self@odenix.org>
2026-05-22 14:15:18 -07:00
Daniel Chao a800072441 Fix native build (#1610)
Fix native executable build; there was a missing truffle boundary
2026-05-22 11:50:40 -07:00
Daniel Chao b070d56741 Remove public modifier on LazyHttpClient and RequestRewritingClient (#1609)
This introduces a test helper to expose configured HTTP settings, and
makes the underlying classes package-private again.
2026-05-22 10:17:26 -07:00
Daniel Chao da4dd4c4f8 Make codegen default to jspecify NonNull annotations (#1607)
With JSpecify now a dependency of pkl-config-java, this moves the
non-null annotation to jspecify's.
This makes it simpler for users to do nullness checks, as tooling
already understands JSpecify nullness annotations.
2026-05-21 21:12:15 -07:00
Daniel Chao 8e2e5e4ba8 Improve HTTP headers logic (#1584)
* Relax forbidden headers constraints
  - remove restriction on browser-related headers
- allow any glob pattern (no need to end with `/` or `*`, because glob
patterns already require users to explicitly declare prefix matches if
that's the intention)
* Replace `List<Pair<, ...>>`; use `Map<String, ...>` instead
* Use glob pattern strings as an API throughout, instead of `Pattern`
(e.g. in `HttpClientBuilder`)
* Add HTTP headers to message passing API
* Add HTTP headers to executor API (introduces `ExecutorSpiOptions4`)
* Add tests for Gradle, CLI, and pkl-executor invocations
* Improve documentation
* Add `isGlobPattern` API to class `String` for in-language validation
of http headers
* Behavior change: make sure explicitly configured `User-Agent` in
`HttpClientBuilder` can be shadowed by headers (allows users to set
`--http-header "**=User-Agent: My User Agent"` and for this to be the
only user agent).

CC @kyokuping
2026-05-21 20:07:06 -07:00
Daniel Chao 87ea28260b Configure IntelliJ to respect @LateInit annotations (#1606)
IntelliJ can understand that some annotations on fields mean that they
are implicitly initialized, which means we don't get the "field XXX is
not initialized" warning for `@LateInit` fields.

This setting, unfortunately, is recorded into `.idea/misc.xml`, which
contains a bunch of arbitrary stuff that we don't want to check into
source control

This adds some logic to touch up that file to mark `@LateInit` as
implicitly initialized fields, so we don't get any editor warnings.

Also, suppress some warnings.
2026-05-21 14:34:11 -07:00
odenix 3dc93cbd4a pkl-core: Migrate nullness to JSpecify (#1601)
Replace pkl-core's local nullness annotations with JSpecify annotations.
Enable NullAway checking for pkl-core packages except org.pkl.core.ast
and org.pkl.core.stdlib.

Notable code changes:
- Add a dedicated late-init constructor to VmTyped
- Move VmExceptionBuilder's fallback message derivation from withCause()
to build()
- Split VmException rendering between builder-provided messages and
string-backed messages
- Initialize MessageTransport handlers with default throwing handlers
- Update JSON helper collection types to allow nullable values JSON
arrays and objects can contain JSON null,
so the Java Map/List element types need to model nullable elements
explicitly
- Make public command transform APIs accept nullable transformed values 
   Command transforms can produce null for optional/default handling,
so the BiFunction and options-map element types now model that
explicitly
- Make ExecutorSpiException accept nullable message and cause 
Existing call sites can pass nullable causes from Throwable.getCause()
- Remove JSR-305 semantics from `@LateInit`
   JSpecify does not support the same type-qualifier-nickname pattern,
so `@LateInit` is now documentation plus a NullAway
constructor-initialization exemption

Out of scope:
- NullAway checking of org.pkl.core.ast and org.pkl.core.stdlib
- IntelliJ warnings related to `@LateInit` fields
- Removing the JSR-305 dependency, since concurrency annotations are
still in use
2026-05-21 13:57:20 -07:00
dependabot[bot] 63ef60f3c4 Bump slf4j from 2.0.17 to 2.0.18 (#1605)
Bumps `slf4j` from 2.0.17 to 2.0.18.

Updates `org.slf4j:slf4j-api` from 2.0.17 to 2.0.18

Updates `org.slf4j:slf4j-simple` from 2.0.17 to 2.0.18

---
updated-dependencies:
- dependency-name: org.slf4j:slf4j-api
  dependency-version: 2.0.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.slf4j:slf4j-simple
  dependency-version: 2.0.18
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-21 09:56:49 -07:00
dependabot[bot] f10b235002 Bump gradle-wrapper from 9.5.0 to 9.5.1 (#1604) 2026-05-21 09:46:41 -07:00
Daniel Chao 1e33179ecc Update codestyles (#1602)
IntelliJ keeps touching this file; these settings must be obsolete.
2026-05-21 08:18:29 -07:00
Daniel Chao 1733a4c6e7 Fix: docsite-info is an optional input (#1598) 2026-05-19 15:20:02 -07:00
odenix dc9003d0f1 pkl-config-java: Refine nullness handling in Config and JavaType (#1544)
Motivation:
Config.as() causes nullness warnings when its result is intentionally assigned
to a non-null variable

Changes:

* Introduce Config.asNullable(Class<T>), asNullable(JavaType<T>), and
  asNullable(Type) to explicitly opt into nullable values
* Keep the signatures of Config.as(Class<T>) and Config.as(JavaType<T>)
  unchanged from 0.31 by adding @NullUnmarked
  * This gives users time to migrate from as() to asNullable() where appropriate
  * Avoids introducing new spurious warnings
* Change `<T> T Config.as(Type)` to `<T extends @nullable Object> T Config.as(Type)`
  * This overload is typically used by reflective code such as
    pkl-config-kotlin's Config.to() rather than directly by user code
* Clarify that JavaType<T> represents a non-null top-level type whose type arguments may be nullable
  * Restricting <T> to non-null keeps method signatures understandable for humans and tools
  * Enables full symmetry between Class<T> and JavaType<T> overloads in Config and JavaType
  * Enables future non-null runtime checks in both Config.as() overloads
* Simplify construction of `JavaType`s with nullable type arguments
  * Add ofNullable() variants for most factory methods, e.g., JavaType.listOfNullable()
* Overhaul Javadoc of Config and JavaType

Result:

* Clear separation between accessing nullable and non-null values
* Config.as() is used for the common non-null case
* Config.as() can perform non-null runtime checks in a future release (breaking change)
* More ergonomic construction of types with nullable type arguments
* More detailed and consistent documentation
2026-05-19 12:27:59 -07:00
Daniel Chao e34c3e8c4f Test reporter fixes (#1597)
* Fix error message when an invalid test reporter is supplied in Gradle
* Fix Gradle property name in docs
* Fix Gradle property name in tasks
* Introduce `TestReporter.default`, and use it in places where default
is applied
* Remove calls to `convention()`; this is not required because the input
is optional anyways.
2026-05-19 11:32:51 -07:00
Islon Scherer 3fbcd463e0 Introduce "minimal" test reporter (#1563) 2026-05-19 17:20:26 +02:00
odenix 566c42f44d pkl-doc: Support single-package docsite mode (#1592)
When a docsite has only one package name and no DocsiteInfo.overview,
treat it like Javadoc's single-module output: redirect the top-level
index to the package page and omit the site-title breadcrumb segment
from generated pages.

Add src/test/files/SinglePackageTest fixtures to cover multiple package
versions, redirect behavior, breadcrumb behavior, and unchanged site
structure.

Also:
- Shut down Executor used in test.
- Declare expected output fixtures of DocGenerator as test inputs, not
outputs.
- Fix IntelliJ warning by using a Set for the right-hand side of
collection subtraction.
2026-05-15 18:38:24 -07:00
Daniel Chao a7a64acbac Improve handling of evaling dependency notation URIs (#1595) 2026-05-15 15:51:09 -07:00
Daniel Chao 3ad1cb3645 Ensure local dependency matches PklProject.dep.json version (#1594)
The version of local project dependencies should _always_ exactly match
up with what's declared in a PklProject.deps.json; any package in the
transitive dependency tree should always be delcaring the same import
too.

Closes #1591
2026-05-15 11:48:57 -07:00
Vladimir Matveev 2fe565a0f2 Added support for external readers in Gradle plugins (#1578)
Adds support for configuring external module and resource readers in the Gradle plugin
2026-05-14 11:18:22 -07:00
odenix 1b6e89c971 pkl-doc: Fix/improve Executor handling in DocGenerator (#1590)
run() now creates and closes a default Executor per call. This is fine
because there is no good reason to call this method multiple times.

run(Executor) now lets callers provide their own Executor, which is
customary for a well-behaved library.

Also: Fix IntelliJ warning by calling toSet()

Closes #1583
2026-05-14 11:02:23 -07:00
dependabot[bot] 6171dbde28 Bump org.msgpack:msgpack-core from 0.9.11 to 0.9.12 (#1587) 2026-05-14 08:51:52 -07:00
dependabot[bot] 99b29ef3c7 Bump github/codeql-action from 4.35.2 to 4.35.4 (#1586) 2026-05-14 08:49:18 -07:00
dependabot[bot] c428f7abd0 Bump com.palantir.javapoet:javapoet from 0.14.0 to 0.15.0 (#1588) 2026-05-14 08:48:29 -07:00
dependabot[bot] 366b51bd21 Bump nu.validator:validator from 26.4.16 to 26.5.7 (#1589) 2026-05-14 08:47:25 -07:00
Jeaeun Kim 14085c18bb Add support for customizing HTTP headers (#1196)
This PR adds support for custom HTTP headers, introducing a
`--http-header` CLI flag to accept `key=value` pairs. These headers can
also be specified within the `setting.pkl` file.

Closes #633

SPICE: https://github.com/apple/pkl-evolution/pull/24

---------

Co-authored-by: Jen Basch <jbasch94@gmail.com>
Co-authored-by: Islon Scherer <islonscherer@gmail.com>
2026-05-12 13:53:59 -07:00
Jen Basch fe58405220 Improve some doc comments in pkl:Command (#1582) 2026-05-12 13:53:15 -07:00
Vladimir Matveev bac8b47ba8 Add resource readers from service providers in CLI (#1581)
This omission, in particular, prevents Gradle plugins (which rely on CLI
classes) from adding custom resource readers via the service loading
mechanism. This change seems benign, especially since this is already
done for module key factories.
2026-05-11 16:54:36 -07:00
Jen Basch 713fbc5043 Add missing javadoc for org.pkl.core.CommandSpec (#1577) 2026-05-08 20:29:05 -07:00
Daniel Chao 38733e5781 Fix parsing of dependency notation URIs (#1570)
Fixes a thrown exception when path segments contain characters that
aren't URI safe (e.g. `import "@foo/bar baz.pkl"`).

Closes #1545
2026-05-07 13:00:52 -07:00
dependabot[bot] 8ff03cfac0 Bump gradle-wrapper from 9.4.1 to 9.5.0 (#1575)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.4.1 to
9.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gradle/gradle/releases">gradle-wrapper's
releases</a>.</em></p>
<blockquote>
<h2>9.5.0</h2>
<p>The Gradle team is excited to announce Gradle 9.5.0.</p>
<p>Here are the highlights of this release:</p>
<ul>
<li>Task provenance in reports and failure messages</li>
<li>Type-safe accessors for precompiled Kotlin Settings plugins</li>
</ul>
<p><a href="https://docs.gradle.org/9.5.0/release-notes.html">Read the
Release Notes</a></p>
<p>We would like to thank the following community members for their
contributions to this release of Gradle:
<a href="https://github.com/atm1020">atm1020</a>,
<a href="https://github.com/mataha">mataha</a>,
<a href="https://github.com/aSemy">Adam</a>,
<a href="https://github.com/kelemen">Attila Kelemen</a>,
<a href="https://github.com/britter">Benedikt Ritter</a>,
<a href="https://github.com/Vampire">Björn Kautler</a>,
<a href="https://github.com/budindepunk">Caro Silva Rode</a>,
<a href="https://github.com/chanani">CHANHAN</a>,
<a href="https://github.com/DmitryNez">Dmitry Nezavitin</a>,
<a href="https://github.com/Juneezee">Eng Zer Jun</a>,
<a href="https://github.com/KugelLibelle">KugelLibelle</a>,
<a href="https://github.com/vmadalin">Madalin Valceleanu</a>,
<a href="https://github.com/quijote">Markus Gaisbauer</a>,
<a href="https://github.com/koppor">Oliver Kopp</a>,
<a href="https://github.com/hfhbd">Philip Wedemann</a>,
<a href="https://github.com/ploober">ploober</a>,
<a href="https://github.com/rpalcolea">Roberto Perez Alcolea</a>,
<a href="https://github.com/R0h1tAnand">Rohit Anand</a>,
<a href="https://github.com/Suvrat1629">Suvrat Acharya</a>,
<a href="https://github.com/usv240">Ujwal Suresh Vanjare</a>,
<a href="https://github.com/urdak">Victor Merkulov</a></p>
<h2>Upgrade instructions</h2>
<p>Switch your build to use Gradle 9.5.0 by updating your wrapper:</p>
<pre><code>./gradlew wrapper --gradle-version=9.5.0 &amp;&amp; ./gradlew
wrapper
</code></pre>
<p>See the Gradle <a
href="https://docs.gradle.org/9.5.0/userguide/upgrading_version_9.html">9.x
upgrade guide</a> to learn about deprecations, breaking changes and
other considerations when upgrading.</p>
<p>For Java, Groovy, Kotlin and Android compatibility, see the <a
href="https://docs.gradle.org/9.5.0/userguide/compatibility.html">full
compatibility notes</a>.</p>
<h2>Reporting problems</h2>
<p>If you find a problem with this release, please file a bug on <a
href="https://github.com/gradle/gradle/issues">GitHub Issues</a>
adhering to our issue guidelines.
If you're not sure you're encountering a bug, please use the <a
href="https://discuss.gradle.org/c/help-discuss">forum</a>.</p>
<p>We hope you will build happiness with Gradle, and we look forward to
your feedback via <a href="https://twitter.com/gradle">Twitter</a> or on
<a href="https://github.com/gradle">GitHub</a>.</p>
<h2>9.5.0 RC4</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gradle/gradle/commit/3fe117d68f3907790f3809f121aa36303a9151f8"><code>3fe117d</code></a>
Update jdks.yaml (<a
href="https://redirect.github.com/gradle/gradle/issues/37703">#37703</a>)</li>
<li><a
href="https://github.com/gradle/gradle/commit/33d145af6fbe7cf7c9d84646b6d7f32fea91d5e2"><code>33d145a</code></a>
Update jdks.yaml</li>
<li><a
href="https://github.com/gradle/gradle/commit/f7a05d1ed48442eb5da4d6e2b6593da55cdec1da"><code>f7a05d1</code></a>
Update Gradle wrapper to version 9.5.0-rc-4 (<a
href="https://redirect.github.com/gradle/gradle/issues/37654">#37654</a>)</li>
<li><a
href="https://github.com/gradle/gradle/commit/266facdcbcb0b4c60120cc118eaf0f652bfcdfe5"><code>266facd</code></a>
Update Gradle wrapper to version 9.5.0-rc-4</li>
<li><a
href="https://github.com/gradle/gradle/commit/0ad6dd8e143455707e444aa7e3d38327a3366513"><code>0ad6dd8</code></a>
Suppress OSC taskbar reset on plain/piped stdout (<a
href="https://redirect.github.com/gradle/gradle/issues/37646">#37646</a>)</li>
<li><a
href="https://github.com/gradle/gradle/commit/966025d5850d46c9158a2f25e4096222277ecf57"><code>966025d</code></a>
Suppress OSC taskbar reset on plain/piped stdout</li>
<li><a
href="https://github.com/gradle/gradle/commit/e7455734449e422accebf44cf7b31bf93e3a770c"><code>e745573</code></a>
Polish IP docs (<a
href="https://redirect.github.com/gradle/gradle/issues/37642">#37642</a>)</li>
<li><a
href="https://github.com/gradle/gradle/commit/d5cfd079acd2c8f1182edd6ec23dbab571132d0a"><code>d5cfd07</code></a>
Ensure BuildOperationQueue will progress without extra leases (<a
href="https://redirect.github.com/gradle/gradle/issues/37629">#37629</a>)</li>
<li><a
href="https://github.com/gradle/gradle/commit/acdf0c36fa13ba09a7ff5b51f79b9af4b1a097ee"><code>acdf0c3</code></a>
Ensure BuildOperationQueue will progress without extra leases</li>
<li><a
href="https://github.com/gradle/gradle/commit/f7d0e4f6f7896426a8b24091388e4c252b62faef"><code>f7d0e4f</code></a>
Rename anchor</li>
<li>Additional commits viewable in <a
href="https://github.com/gradle/gradle/compare/v9.4.1...v9.5.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=gradle-wrapper&package-manager=gradle&previous-version=9.4.1&new-version=9.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 12:28:59 -07:00
dependabot[bot] be8366a975 Bump jline from 4.0.12 to 4.0.14 (#1574)
Bumps `jline` from 4.0.12 to 4.0.14.

Updates `org.jline:jline-reader` from 4.0.12 to 4.0.14
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.0.12...4.0.14)

Updates `org.jline:jline-terminal` from 4.0.12 to 4.0.14
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.0.12...4.0.14)

Updates `org.jline:jline-terminal-jni` from 4.0.12 to 4.0.14
- [Release notes](https://github.com/jline/jline3/releases)
- [Commits](jline/jline3@4.0.12...4.0.14)

---
updated-dependencies:
- dependency-name: org.jline:jline-reader
  dependency-version: 4.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-terminal
  dependency-version: 4.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jline:jline-terminal-jni
  dependency-version: 4.0.14
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-07 11:17:45 -07:00
Jen Basch 8a4821c4e7 Power assertions: change source section check to an assert (#1572) 2026-05-04 13:53:40 -07:00
Jen Basch b7ba6a8649 Fix pkl:test fact power assertions when member source section is unavailable (#1571)
Power assertions only work when the source section is available. If it
is unavailable, power assertions throw a ParserError (unexpected EOF on
an empty input) when re-parsing the expression for presentation.
2026-05-04 12:25:15 -07:00
dependabot[bot] 9c1a9cb4f8 Bump kotlinToolchain from 2.3.20 to 2.3.21 (#1567)
Updates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 2.3.20 to 2.3.21
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.3.20...v2.3.21)

Updates `org.jetbrains.kotlin.plugin.serialization` from 2.3.20 to 2.3.21
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](JetBrains/kotlin@v2.3.20...v2.3.21)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin:kotlin-gradle-plugin
  dependency-version: 2.3.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
- dependency-name: org.jetbrains.kotlin.plugin.serialization
  dependency-version: 2.3.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-30 08:31:46 -07:00
dependabot[bot] 5d4bac8f61 Bump com.uber.nullaway:nullaway from 0.13.2 to 0.13.4 (#1568)
Bumps [com.uber.nullaway:nullaway](https://github.com/uber/NullAway) from 0.13.2 to 0.13.4.
- [Release notes](https://github.com/uber/NullAway/releases)
- [Changelog](https://github.com/uber/NullAway/blob/master/CHANGELOG.md)
- [Commits](uber/NullAway@v0.13.2...v0.13.4)

---
updated-dependencies:
- dependency-name: com.uber.nullaway:nullaway
  dependency-version: 0.13.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-30 08:31:14 -07:00
Daniel Chao 4a25320995 Fix import/read verification when encountering glob wildcards (#1559)
Fixes an issue where the import verifier can possibly throw when
packaging on Windows due to `*` being an invalid filename.
2026-04-29 20:20:49 -07:00
Vladimir Matveev df063f17f3 Added pkg module key factory and resource reader to project loading (#1547)
This change allows `PklProject` files, usually loaded via the `Project`
static methods, to have references to external packages via `package://`
URIs.

This is helpful for centralizing and sharing common package
configuration via packages.
2026-04-29 16:45:14 -07:00
Kushal Pisavadia d3a3a14aaa Fix CRLF handling in line continuation escapes (#1564) 2026-04-29 13:53:55 -07:00
Daniel Chao 39c01c24ba Add another commit to ignore revs file (#1561)
Add commit from https://github.com/apple/pkl/pull/1560
2026-04-25 11:58:55 -07:00
Daniel Chao 2b3603b544 Reformat Kotlin code (#1560)
ktfmt has much improved how it formats Kotlin code. Unfortunately, this
means that whenever we touch a single line in a Kotlin file, we get a
_lot_ more changes thanks to ratcheting now picking up this file for
formatting.

This PR just reformats every single Kotlin file so we don't have to deal
with this churn in future PRs that touch Kotlin code.
2026-04-25 06:14:44 -07:00
Daniel Chao c4f56bf20d Fix setting DEBUG_ARGS (#1558)
Looks like context variable `runner` isn't available on the job level
`env`. It's available on the step level `env` though.
2026-04-24 19:34:08 -07:00
Daniel Chao 87b15f7a70 Only set --stacktrace --info if verbose logging is enabled (#1557)
This is a quality-of-life improvement; make our build logs more easy to
read through for the default case.

If we need more information, we can click on the "Enable debug logging"
checkbox when re-running a job, which then populates the `runner.debug`
context variable.
2026-04-24 15:28:57 -07:00
Daniel Chao e07ff96de8 Switch CodeQL to use PklCI API (#1555) 2026-04-23 11:28:16 -07:00
dependabot[bot] 88a56198a8 Bump nu.validator:validator from 26.4.2 to 26.4.16 (#1550)
Bumps [nu.validator:validator](https://github.com/validator/validator) from 26.4.2 to 26.4.16.
- [Release notes](https://github.com/validator/validator/releases)
- [Commits](https://github.com/validator/validator/commits/26.4.16)

---
updated-dependencies:
- dependency-name: nu.validator:validator
  dependency-version: 26.4.16
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 11:19:19 -07:00
dependabot[bot] de22705add Bump com.google.errorprone:error_prone_core from 2.48.0 to 2.49.0 (#1552)
Bumps [com.google.errorprone:error_prone_core](https://github.com/google/error-prone) from 2.48.0 to 2.49.0.
- [Release notes](https://github.com/google/error-prone/releases)
- [Commits](google/error-prone@v2.48.0...v2.49.0)

---
updated-dependencies:
- dependency-name: com.google.errorprone:error_prone_core
  dependency-version: 2.49.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-23 10:14:28 -07:00
808 changed files with 23317 additions and 7900 deletions
+2
View File
@@ -1,2 +1,4 @@
# Auto-format Kotlin code # Auto-format Kotlin code
816cd483c8adf4c04e14236c173a1dc6bd2579ea 816cd483c8adf4c04e14236c173a1dc6bd2579ea
# Format Kotlin code again
2b3603b544bae2ad87374b65afaf8ac018216261
+1 -1
View File
@@ -2,7 +2,7 @@ amends "pkl:Project"
dependencies { dependencies {
["pkl.impl.ghactions"] { ["pkl.impl.ghactions"] {
uri = "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.6.0" uri = "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.8.2"
} }
["gha"] { ["gha"] {
uri = "package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.4.0" uri = "package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.4.0"
+10 -10
View File
@@ -3,37 +3,37 @@
"resolvedDependencies": { "resolvedDependencies": {
"package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1": { "package://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1": {
"type": "remote", "type": "remote",
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.4.0", "uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.actions@1.9.0",
"checksums": { "checksums": {
"sha256": "e0b9a9f71071d6101e9d764c069b2ec4a597d5315cb6e4c265b3f0d90c2b482c" "sha256": "5947924cf94fae9d8cdca42ade3f86db2675842cab7254214e7c0e281ddb6908"
} }
}, },
"package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1": { "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1": {
"type": "remote", "type": "remote",
"uri": "projectpackage://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.6.0", "uri": "projectpackage://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.ghactions@1.8.2",
"checksums": { "checksums": {
"sha256": "fbc3c456ea468a0fe6baa9b3d30167259ac04e721a41a10fe82d2970026f0b1d" "sha256": "12cca6326806ec37abc790a6707b6d907b4f8ba97628f2bc7fb327b5a6f68b49"
} }
}, },
"package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1": { "package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1": {
"type": "remote", "type": "remote",
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1.2.0", "uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.deepToTyped@1.2.1",
"checksums": { "checksums": {
"sha256": "84c7feb391f4ac273a99dc89b8fd51dbcd21dbda4ce640f6908527f83acdd4d6" "sha256": "6e752d1e84aff24c3a1801658f27f12af70840c39b3fe7bac509c8178d566d25"
} }
}, },
"package://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1": { "package://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1": {
"type": "remote", "type": "remote",
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1.1.0", "uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/pkl.github.dependabotManagedActions@1.1.9",
"checksums": { "checksums": {
"sha256": "025fac778f2c5f75c8229fa4ec0f49ebdb99a61affe9aae489fefd8fccd92faa" "sha256": "467b91559f31ad7401c78d3df9569b5ec7aa4e1b49209f9f22d02bd72971e0bd"
} }
}, },
"package://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1": { "package://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1": {
"type": "remote", "type": "remote",
"uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1.0.1", "uri": "projectpackage://pkg.pkl-lang.org/pkl-pantry/com.github.dependabot@1.0.4",
"checksums": { "checksums": {
"sha256": "0a4fe9b0983716ec49fb060b9e5e83f8c365eb899d517123b43134416a9574b6" "sha256": "c7391119f946d7761d0ca0cc358ed8fe2bdfc691411087ccac89637bd96fec4a"
} }
} }
} }
-67
View File
@@ -1,67 +0,0 @@
amends "@gha/Workflow.pkl"
import "@gha/catalog.pkl"
on {
push {
branches {
"main"
}
}
pull_request {}
schedule {
// Run at 01:38 on Saturday
new { cron = "38 1 * * 6" }
}
}
local class CodeQLScan {
language: String
`build-mode`: String
}
local scans: Listing<CodeQLScan> = new {
new {
language = "actions"
`build-mode` = "none"
}
new {
language = "java-kotlin"
`build-mode` = "autobuild"
}
new {
language = "javascript-typescript"
`build-mode` = "none"
}
}
jobs {
for (scan in scans) {
["analyze-\(scan.language)"] {
name = "Analyze (\(scan.language))"
`runs-on` = "ubuntu-latest"
permissions {
`security-events` = "write"
}
steps {
catalog.`actions/checkout@v6`
new {
name = "Initialize CodeQL"
uses = "github/codeql-action/init@v4"
with {
["languages"] = scan.language
["build-mode"] = scan.`build-mode`
}
}
new {
name = "Perform CodeQL Analysis"
uses = "github/codeql-action/analyze@v4"
with {
["category"] = "/language:\(scan.language)"
}
}
}
}
}
}
+8 -1
View File
@@ -10,9 +10,16 @@ updates:
cooldown: cooldown:
default-days: 7 default-days: 7
directory: / directory: /
groups:
first-party:
patterns:
- actions/*
codeql:
patterns:
- github/codeql-action/*
ignore: ignore:
- dependency-name: '*' - dependency-name: '*'
update-types: update-types:
- version-update:semver-major - version-update:semver-major
schedule: schedule:
interval: weekly interval: quarterly
+18 -7
View File
@@ -9,7 +9,6 @@ import "jobs/GithubRelease.pkl"
import "jobs/GradleJob.pkl" import "jobs/GradleJob.pkl"
import "jobs/PklJob.pkl" import "jobs/PklJob.pkl"
import "jobs/SimpleGradleJob.pkl" import "jobs/SimpleGradleJob.pkl"
import "codeql.pkl"
triggerDocsBuild = "both" triggerDocsBuild = "both"
@@ -64,14 +63,18 @@ local buildNativeJobs: Mapping<String, BuildNativeJob> = new {
for (_dist in List("release", "snapshot")) { for (_dist in List("release", "snapshot")) {
for (_project in List("pkl-cli", "pkl-doc")) { for (_project in List("pkl-cli", "pkl-doc")) {
for (_arch in List("amd64", "aarch64")) { for (_arch in List("amd64", "aarch64")) {
for (_os in List("macOS", "linux")) { ["\(_project)-linux-\(_arch)-\(_dist)"] {
["\(_project)-\(_os)-\(_arch)-\(_dist)"] {
arch = _arch arch = _arch
os = _os os = "linux"
isRelease = _dist == "release" isRelease = _dist == "release"
project = _project project = _project
} }
} }
["\(_project)-macOS-aarch64-\(_dist)"] {
arch = "aarch64"
os = "macOS"
isRelease = _dist == "release"
project = _project
} }
["\(_project)-alpine-linux-amd64-\(_dist)"] { ["\(_project)-alpine-linux-amd64-\(_dist)"] {
arch = "amd64" arch = "amd64"
@@ -241,7 +244,15 @@ dependabot {
} }
} }
workflows { codeql {
// add codeql workflow to set of workflows scans {
["workflows/codeql.yml"] = codeql new {
language = "java-kotlin"
buildMode = "autobuild"
}
new {
language = "javascript-typescript"
buildMode = "none"
}
}
} }
-4
View File
@@ -10,10 +10,6 @@ musl: Boolean(implies(module.os == "linux")) = false
project: String project: String
extraGradleArgs { extraGradleArgs {
when (os == "macOS" && arch == "amd64") {
"-Dpkl.targetArch=\(module.arch)"
#""-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh""#
}
when (musl) { when (musl) {
"-Dpkl.musl=true" "-Dpkl.musl=true"
} }
+16 -2
View File
@@ -3,6 +3,7 @@ abstract module GradleJob
extends "PklJob.pkl" extends "PklJob.pkl"
import "@gha/Workflow.pkl" import "@gha/Workflow.pkl"
import "@gha/context.pkl"
import "@pkl.impl.ghactions/catalog.pkl" import "@pkl.impl.ghactions/catalog.pkl"
/// Whether this is a release build or not. /// Whether this is a release build or not.
@@ -29,8 +30,7 @@ fetchDepth: Int?
fixed gradleArgs = fixed gradleArgs =
new Listing { new Listing {
"--info" "$DEBUG_ARGS"
"--stacktrace"
"--no-daemon" "--no-daemon"
"-DpklMultiJdkTesting=true" "-DpklMultiJdkTesting=true"
when (isRelease) { when (isRelease) {
@@ -97,6 +97,20 @@ fixed job {
} }
} }
} }
new {
name = "Set DEBUG_ARGS env var"
env {
["RUNNER_DEBUG"] = context.runner.debug
}
shell = "bash"
// language=bash
run =
"""
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
"""
}
...module.steps ...module.steps
} }
} }
-2
View File
@@ -1,2 +0,0 @@
#!/usr/bin/env bash
clang -arch x86_64 "$@"
+5 -5
View File
@@ -17,23 +17,23 @@ jobs:
runs-on: nothing runs-on: nothing
steps: steps:
- name: EnricoMi/publish-unit-test-result-action@v2 - name: EnricoMi/publish-unit-test-result-action@v2
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2 uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
- name: actions/checkout@v6 - name: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- name: actions/create-github-app-token@v2 - name: actions/create-github-app-token@v2
uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2 uses: actions/create-github-app-token@fee1f7d63c2ff003460e3d139729b119787bc349 # v2
- name: actions/download-artifact@v6 - name: actions/download-artifact@v6
uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6 uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
- name: actions/setup-java@v5 - name: actions/setup-java@v5
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
- name: actions/upload-artifact@v5 - name: actions/upload-artifact@v5
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
- name: dawidd6/action-download-artifact@v11 - name: dawidd6/action-download-artifact@v11
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11 uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
- name: github/codeql-action/analyze@v4 - name: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4 uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
- name: github/codeql-action/init@v4 - name: github/codeql-action/init@v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4 uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
- name: gradle/actions/dependency-submission@v6 - name: gradle/actions/dependency-submission@v6
uses: gradle/actions/dependency-submission@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6 uses: gradle/actions/dependency-submission@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e # v6
- name: gradle/actions/setup-gradle@v5 - name: gradle/actions/setup-gradle@v5
+241 -201
View File
@@ -19,20 +19,28 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -52,20 +60,28 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -84,38 +100,54 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: bench:jmh - name: bench:jmh
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
gradle-compatibility: gradle-compatibility:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases - name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -134,23 +166,31 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: gradle build java executables - name: gradle build java executables
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -169,45 +209,6 @@ jobs:
name: test-results-html-java-executables-snapshot name: test-results-html-java-executables-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-cli-macOS-amd64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-amd64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-amd64-snapshot: pkl-cli-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -215,21 +216,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -250,45 +259,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-aarch64-snapshot: pkl-cli-linux-aarch64-snapshot:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -296,21 +266,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -331,21 +309,76 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-alpine-linux-amd64-snapshot: pkl-cli-alpine-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -421,7 +454,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -446,19 +479,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -477,45 +518,6 @@ jobs:
name: test-results-html-pkl-cli-windows-amd64-snapshot name: test-results-html-pkl-cli-windows-amd64-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-doc-macOS-amd64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-amd64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-amd64-snapshot: pkl-doc-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -523,21 +525,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -558,45 +568,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-aarch64-snapshot: pkl-doc-linux-aarch64-snapshot:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -604,21 +575,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -639,21 +618,76 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-alpine-linux-amd64-snapshot: pkl-doc-alpine-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -729,7 +763,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -754,19 +788,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -792,16 +834,14 @@ jobs:
- gradle-check-windows - gradle-check-windows
- gradle-compatibility - gradle-compatibility
- java-executables-snapshot - java-executables-snapshot
- pkl-cli-macOS-amd64-snapshot
- pkl-cli-linux-amd64-snapshot - pkl-cli-linux-amd64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-linux-aarch64-snapshot - pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot - pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot - pkl-cli-windows-amd64-snapshot
- pkl-doc-macOS-amd64-snapshot
- pkl-doc-linux-amd64-snapshot - pkl-doc-linux-amd64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-linux-aarch64-snapshot - pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot - pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot - pkl-doc-windows-amd64-snapshot
permissions: permissions:
@@ -813,7 +853,7 @@ jobs:
pattern: test-results-xml-* pattern: test-results-xml-*
- name: Publish test results - name: Publish test results
if: '!cancelled()' if: '!cancelled()'
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2 uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
with: with:
comment_mode: 'off' comment_mode: 'off'
files: test-results-xml-*/**/*.xml files: test-results-xml-*/**/*.xml
+13 -14
View File
@@ -1,11 +1,13 @@
# Generated from Workflow.pkl. DO NOT EDIT. # Generated from Workflow.pkl. DO NOT EDIT.
'on': 'on':
pull_request: {} pull_request:
branches:
- main
push: push:
branches: branches:
- main - main
schedule: schedule:
- cron: 38 1 * * 6 - cron: 29 17 * * 4
jobs: jobs:
analyze-actions: analyze-actions:
name: Analyze (actions) name: Analyze (actions)
@@ -13,16 +15,15 @@ jobs:
security-events: write security-events: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: Initialize CodeQL - uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
with: with:
languages: actions languages: actions
build-mode: none build-mode: none
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4 uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
with: with:
category: /language:actions category: /language:actions
analyze-java-kotlin: analyze-java-kotlin:
@@ -31,16 +32,15 @@ jobs:
security-events: write security-events: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: Initialize CodeQL - uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
with: with:
languages: java-kotlin languages: java-kotlin
build-mode: autobuild build-mode: autobuild
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4 uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
with: with:
category: /language:java-kotlin category: /language:java-kotlin
analyze-javascript-typescript: analyze-javascript-typescript:
@@ -49,15 +49,14 @@ jobs:
security-events: write security-events: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: Initialize CodeQL - uses: github/codeql-action/init@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4
with: with:
languages: javascript-typescript languages: javascript-typescript
build-mode: none build-mode: none
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4 uses: github/codeql-action/analyze@54f647b7e1bb85c95cddabcd46b0c578ec92bc1a # v4
with: with:
category: /language:javascript-typescript category: /language:javascript-typescript
+259 -215
View File
@@ -17,20 +17,28 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -50,20 +58,28 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -82,38 +98,54 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: bench:jmh - name: bench:jmh
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
gradle-compatibility: gradle-compatibility:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases - name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -132,23 +164,31 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: gradle build java executables - name: gradle build java executables
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -167,45 +207,6 @@ jobs:
name: test-results-html-java-executables-snapshot name: test-results-html-java-executables-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-cli-macOS-amd64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-amd64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-amd64-snapshot: pkl-cli-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -213,21 +214,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -248,45 +257,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-aarch64-snapshot: pkl-cli-linux-aarch64-snapshot:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -294,21 +264,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -329,21 +307,76 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-alpine-linux-amd64-snapshot: pkl-cli-alpine-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -419,7 +452,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -444,19 +477,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -475,45 +516,6 @@ jobs:
name: test-results-html-pkl-cli-windows-amd64-snapshot name: test-results-html-pkl-cli-windows-amd64-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-doc-macOS-amd64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-amd64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-amd64-snapshot: pkl-doc-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -521,21 +523,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -556,45 +566,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-aarch64-snapshot: pkl-doc-linux-aarch64-snapshot:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -602,21 +573,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -637,21 +616,76 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-alpine-linux-amd64-snapshot: pkl-doc-alpine-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -727,7 +761,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -752,19 +786,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -790,16 +832,14 @@ jobs:
- bench - bench
- gradle-compatibility - gradle-compatibility
- java-executables-snapshot - java-executables-snapshot
- pkl-cli-macOS-amd64-snapshot
- pkl-cli-linux-amd64-snapshot - pkl-cli-linux-amd64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-linux-aarch64-snapshot - pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot - pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot - pkl-cli-windows-amd64-snapshot
- pkl-doc-macOS-amd64-snapshot
- pkl-doc-linux-amd64-snapshot - pkl-doc-linux-amd64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-linux-aarch64-snapshot - pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot - pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot - pkl-doc-windows-amd64-snapshot
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -807,17 +847,25 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
environment: maven-release environment: maven-release
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6 - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
@@ -830,16 +878,16 @@ jobs:
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }} ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }} ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }}
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }} ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }}
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true --no-parallel publishToSonatype run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true --no-parallel publishToSonatype
dependency-submission: dependency-submission:
permissions: permissions:
contents: write contents: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -853,16 +901,14 @@ jobs:
- gradle-check-windows - gradle-check-windows
- gradle-compatibility - gradle-compatibility
- java-executables-snapshot - java-executables-snapshot
- pkl-cli-macOS-amd64-snapshot
- pkl-cli-linux-amd64-snapshot - pkl-cli-linux-amd64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-linux-aarch64-snapshot - pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot - pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot - pkl-cli-windows-amd64-snapshot
- pkl-doc-macOS-amd64-snapshot
- pkl-doc-linux-amd64-snapshot - pkl-doc-linux-amd64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-linux-aarch64-snapshot - pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot - pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot - pkl-doc-windows-amd64-snapshot
permissions: permissions:
@@ -874,7 +920,7 @@ jobs:
pattern: test-results-xml-* pattern: test-results-xml-*
- name: Publish test results - name: Publish test results
if: '!cancelled()' if: '!cancelled()'
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2 uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
with: with:
comment_mode: 'off' comment_mode: 'off'
files: test-results-xml-*/**/*.xml files: test-results-xml-*/**/*.xml
@@ -893,16 +939,14 @@ jobs:
- bench - bench
- gradle-compatibility - gradle-compatibility
- java-executables-snapshot - java-executables-snapshot
- pkl-cli-macOS-amd64-snapshot
- pkl-cli-linux-amd64-snapshot - pkl-cli-linux-amd64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-linux-aarch64-snapshot - pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot - pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot - pkl-cli-windows-amd64-snapshot
- pkl-doc-macOS-amd64-snapshot
- pkl-doc-linux-amd64-snapshot - pkl-doc-linux-amd64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-linux-aarch64-snapshot - pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot - pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot - pkl-doc-windows-amd64-snapshot
- deploy-snapshot - deploy-snapshot
+230 -191
View File
@@ -13,20 +13,28 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -48,20 +56,28 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -76,46 +92,6 @@ jobs:
name: test-results-html-gradle-check-windows name: test-results-html-gradle-check-windows
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-cli-macOS-amd64-snapshot:
if: (contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS-amd64]')) && github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-amd64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
if-no-files-found: ignore
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-amd64-snapshot: pkl-cli-linux-amd64-snapshot:
if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]')
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -124,21 +100,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -160,46 +144,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: (contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS-aarch64]')) && github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
if-no-files-found: ignore
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-aarch64-snapshot: pkl-cli-linux-aarch64-snapshot:
if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-aarch64]') if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-aarch64]')
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
@@ -208,21 +152,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -244,22 +196,78 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: (contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-cli-macOS-aarch64]')) && github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
if-no-files-found: ignore
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-alpine-linux-amd64-snapshot: pkl-cli-alpine-linux-amd64-snapshot:
if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-alpine-linux-amd64]') if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-cli]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-cli-alpine-linux-amd64]')
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -335,7 +343,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -362,19 +370,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -394,46 +410,6 @@ jobs:
name: test-results-html-pkl-cli-windows-amd64-snapshot name: test-results-html-pkl-cli-windows-amd64-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-doc-macOS-amd64-snapshot:
if: (contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS-amd64]')) && github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-amd64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
if-no-files-found: ignore
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-amd64-snapshot: pkl-doc-linux-amd64-snapshot:
if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]')
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -442,21 +418,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -478,46 +462,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: (contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS-aarch64]')) && github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
if-no-files-found: ignore
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-aarch64-snapshot: pkl-doc-linux-aarch64-snapshot:
if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-aarch64]') if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-aarch64]')
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
@@ -526,21 +470,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -562,22 +514,78 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: (contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS-aarch64]') || contains(github.event.pull_request.body, '[native-pkl-doc-macOS-aarch64]')) && github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
if-no-files-found: ignore
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-alpine-linux-amd64-snapshot: pkl-doc-alpine-linux-amd64-snapshot:
if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-alpine-linux-amd64]') if: contains(github.event.pull_request.body, '[native]') || contains(github.event.pull_request.body, '[native-pkl-doc]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-linux-amd64]') || contains(github.event.pull_request.body, '[native-pkl-doc-alpine-linux-amd64]')
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -653,7 +661,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -680,19 +688,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -712,6 +728,29 @@ jobs:
name: test-results-html-pkl-doc-windows-amd64-snapshot name: test-results-html-pkl-doc-windows-amd64-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
verdict:
if: always()
needs:
- check-pkl-github-actions
- gradle-check
- gradle-check-windows
- pkl-cli-linux-amd64-snapshot
- pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot
- pkl-doc-linux-amd64-snapshot
- pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot
runs-on: ubuntu-latest
steps:
- name: Failure verdict
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: |-
echo "Some of the required jobs are either failing or were cancelled"
exit 1
upload-event-file: upload-event-file:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
@@ -724,7 +763,7 @@ jobs:
check-pkl-github-actions: check-pkl-github-actions:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: Setup Pkl - name: Setup Pkl
+243 -205
View File
@@ -17,20 +17,28 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -50,20 +58,28 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -82,38 +98,54 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: bench:jmh - name: bench:jmh
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
gradle-compatibility: gradle-compatibility:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases - name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -132,23 +164,31 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: gradle build java executables - name: gradle build java executables
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -167,45 +207,6 @@ jobs:
name: test-results-html-java-executables-snapshot name: test-results-html-java-executables-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-cli-macOS-amd64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-amd64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-amd64-snapshot: pkl-cli-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -213,21 +214,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -248,45 +257,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-aarch64-snapshot: pkl-cli-linux-aarch64-snapshot:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -294,21 +264,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -329,21 +307,76 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-alpine-linux-amd64-snapshot: pkl-cli-alpine-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -419,7 +452,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -444,19 +477,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -475,45 +516,6 @@ jobs:
name: test-results-html-pkl-cli-windows-amd64-snapshot name: test-results-html-pkl-cli-windows-amd64-snapshot
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-doc-macOS-amd64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-amd64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-amd64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-amd64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-amd64-snapshot: pkl-doc-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -521,21 +523,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -556,45 +566,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-aarch64-snapshot: pkl-doc-linux-aarch64-snapshot:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -602,21 +573,29 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: aarch64 architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -637,21 +616,76 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-snapshot:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-snapshot
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-snapshot
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-alpine-linux-amd64-snapshot: pkl-doc-alpine-linux-amd64-snapshot:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -727,7 +761,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -Dpkl.musl=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -752,19 +786,27 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -790,16 +832,14 @@ jobs:
- gradle-check-windows - gradle-check-windows
- gradle-compatibility - gradle-compatibility
- java-executables-snapshot - java-executables-snapshot
- pkl-cli-macOS-amd64-snapshot
- pkl-cli-linux-amd64-snapshot - pkl-cli-linux-amd64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-linux-aarch64-snapshot - pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot - pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot - pkl-cli-windows-amd64-snapshot
- pkl-doc-macOS-amd64-snapshot
- pkl-doc-linux-amd64-snapshot - pkl-doc-linux-amd64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-linux-aarch64-snapshot - pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot - pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot - pkl-doc-windows-amd64-snapshot
permissions: permissions:
@@ -811,7 +851,7 @@ jobs:
pattern: test-results-xml-* pattern: test-results-xml-*
- name: Publish test results - name: Publish test results
if: '!cancelled()' if: '!cancelled()'
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2 uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
with: with:
comment_mode: 'off' comment_mode: 'off'
files: test-results-xml-*/**/*.xml files: test-results-xml-*/**/*.xml
@@ -830,16 +870,14 @@ jobs:
- bench - bench
- gradle-compatibility - gradle-compatibility
- java-executables-snapshot - java-executables-snapshot
- pkl-cli-macOS-amd64-snapshot
- pkl-cli-linux-amd64-snapshot - pkl-cli-linux-amd64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-linux-aarch64-snapshot - pkl-cli-linux-aarch64-snapshot
- pkl-cli-macOS-aarch64-snapshot
- pkl-cli-alpine-linux-amd64-snapshot - pkl-cli-alpine-linux-amd64-snapshot
- pkl-cli-windows-amd64-snapshot - pkl-cli-windows-amd64-snapshot
- pkl-doc-macOS-amd64-snapshot
- pkl-doc-linux-amd64-snapshot - pkl-doc-linux-amd64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-linux-aarch64-snapshot - pkl-doc-linux-aarch64-snapshot
- pkl-doc-macOS-aarch64-snapshot
- pkl-doc-alpine-linux-amd64-snapshot - pkl-doc-alpine-linux-amd64-snapshot
- pkl-doc-windows-amd64-snapshot - pkl-doc-windows-amd64-snapshot
- publish-test-results - publish-test-results
+259 -217
View File
@@ -17,20 +17,28 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -50,20 +58,28 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: check - name: check
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true check run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true check
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -82,38 +98,54 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: bench:jmh - name: bench:jmh
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true bench:jmh run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true bench:jmh
gradle-compatibility: gradle-compatibility:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
architecture: x64 architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: {} with: {}
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases - name: :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true :pkl-gradle:build :pkl-gradle:compatibilityTestReleases
- name: Upload Test Result XML - name: Upload Test Result XML
if: '!cancelled()' if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
@@ -132,11 +164,11 @@ jobs:
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
fetch-depth: 0 fetch-depth: 0
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -144,12 +176,20 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- name: gradle build java executables - name: gradle build java executables
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:build pkl-cli:build pkl-codegen-java:build pkl-codegen-kotlin:build
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -168,46 +208,6 @@ jobs:
name: test-results-html-java-executables-release name: test-results-html-java-executables-release
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-cli-macOS-amd64-release:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with:
cache-disabled: true
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-amd64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-amd64-release
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-amd64-release
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-amd64-release: pkl-cli-linux-amd64-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -215,10 +215,10 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -226,11 +226,19 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -251,46 +259,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-release:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with:
cache-disabled: true
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-release
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-release
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-linux-aarch64-release: pkl-cli-linux-aarch64-release:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -298,10 +266,10 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -309,11 +277,19 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -334,15 +310,63 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-cli-macOS-aarch64-release:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with:
cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-cli-macOS-aarch64
path: pkl-cli*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-cli-macOS-aarch64-release
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-cli-macOS-aarch64-release
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-cli-alpine-linux-amd64-release: pkl-cli-alpine-linux-amd64-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -350,6 +374,14 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -425,7 +457,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -450,10 +482,10 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -461,9 +493,17 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-cli:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -482,46 +522,6 @@ jobs:
name: test-results-html-pkl-cli-windows-amd64-release name: test-results-html-pkl-cli-windows-amd64-release
path: '**/build/reports/tests/**/*' path: '**/build/reports/tests/**/*'
if-no-files-found: ignore if-no-files-found: ignore
pkl-doc-macOS-amd64-release:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: x64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with:
cache-disabled: true
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.targetArch=amd64 "-Dpkl.native--native-compiler-path=${GITHUB_WORKSPACE}/.github/scripts/cc_macos_amd64.sh" pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-amd64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-amd64-release
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-amd64-release
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-amd64-release: pkl-doc-linux-amd64-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
@@ -529,10 +529,10 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -540,11 +540,19 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -565,46 +573,6 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-release:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with:
cache-disabled: true
- name: gradle buildNative
shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-release
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-release
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-linux-aarch64-release: pkl-doc-linux-aarch64-release:
runs-on: ubuntu-24.04-arm runs-on: ubuntu-24.04-arm
env: env:
@@ -612,10 +580,10 @@ jobs:
steps: steps:
- name: Install deps - name: Install deps
run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en run: dnf install -y git binutils gcc glibc-devel zlib-devel libstdc++-static glibc-langpack-en
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -623,11 +591,19 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Fix git ownership - name: Fix git ownership
run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE" run: git status || git config --system --add safe.directory "$GITHUB_WORKSPACE"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -648,15 +624,63 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
container: container:
image: redhat/ubi8:8.10 image: redhat/ubi8:8.10
pkl-doc-macOS-aarch64-release:
if: github.repository_owner == 'apple'
runs-on:
- self-hosted
- macos
env:
LANG: en_US.UTF-8
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
persist-credentials: false
- uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with:
java-version: '25'
distribution: temurin
architecture: aarch64
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with:
cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative
shell: bash
run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
- name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: executable-pkl-doc-macOS-aarch64
path: pkl-doc*/build/executable/**/*
- name: Upload Test Result XML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-xml-pkl-doc-macOS-aarch64-release
path: '**/build/test-results/**/*.xml'
- name: Upload Test Result HTML
if: '!cancelled()'
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with:
name: test-results-html-pkl-doc-macOS-aarch64-release
path: '**/build/reports/tests/**/*'
if-no-files-found: ignore
pkl-doc-alpine-linux-amd64-release: pkl-doc-alpine-linux-amd64-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -664,6 +688,14 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: Install musl and zlib - name: Install musl and zlib
run: | run: |
set -e set -e
@@ -739,7 +771,7 @@ jobs:
echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH" echo "${HOME}/staticdeps/bin" >> "$GITHUB_PATH"
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true -Dpkl.musl=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -764,10 +796,10 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
JAVA_HOME: /jdk JAVA_HOME: /jdk
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -775,9 +807,17 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- name: gradle buildNative - name: gradle buildNative
shell: bash shell: bash
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true pkl-doc:buildNative
- name: Upload executable artifacts - name: Upload executable artifacts
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
with: with:
@@ -803,16 +843,14 @@ jobs:
- bench - bench
- gradle-compatibility - gradle-compatibility
- java-executables-release - java-executables-release
- pkl-cli-macOS-amd64-release
- pkl-cli-linux-amd64-release - pkl-cli-linux-amd64-release
- pkl-cli-macOS-aarch64-release
- pkl-cli-linux-aarch64-release - pkl-cli-linux-aarch64-release
- pkl-cli-macOS-aarch64-release
- pkl-cli-alpine-linux-amd64-release - pkl-cli-alpine-linux-amd64-release
- pkl-cli-windows-amd64-release - pkl-cli-windows-amd64-release
- pkl-doc-macOS-amd64-release
- pkl-doc-linux-amd64-release - pkl-doc-linux-amd64-release
- pkl-doc-macOS-aarch64-release
- pkl-doc-linux-aarch64-release - pkl-doc-linux-aarch64-release
- pkl-doc-macOS-aarch64-release
- pkl-doc-alpine-linux-amd64-release - pkl-doc-alpine-linux-amd64-release
- pkl-doc-windows-amd64-release - pkl-doc-windows-amd64-release
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -820,10 +858,10 @@ jobs:
LANG: en_US.UTF-8 LANG: en_US.UTF-8
environment: maven-release environment: maven-release
steps: steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5
with: with:
java-version: '25' java-version: '25'
distribution: temurin distribution: temurin
@@ -831,7 +869,15 @@ jobs:
- uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5 - uses: gradle/actions/setup-gradle@0723195856401067f7a2779048b490ace7a47d7c # v5
with: with:
cache-disabled: true cache-disabled: true
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Set DEBUG_ARGS env var
env:
RUNNER_DEBUG: ${{ runner.debug }}
shell: bash
run: |-
if [[ "$RUNNER_DEBUG" -eq 1 ]]; then
echo "DEBUG_ARGS=--info --stacktrace" >> $GITHUB_ENV
fi
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with: with:
persist-credentials: false persist-credentials: false
- uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6 - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6
@@ -844,7 +890,7 @@ jobs:
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }} ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.ORG_GRADLE_PROJECT_SIGNINGPASSWORD }}
ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }} ORG_GRADLE_PROJECT_sonatypePassword: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEPASSWORD }}
ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }} ORG_GRADLE_PROJECT_sonatypeUsername: ${{ secrets.ORG_GRADLE_PROJECT_SONATYPEUSERNAME }}
run: ./gradlew --info --stacktrace --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true publishToSonatype closeAndReleaseSonatypeStagingRepository run: ./gradlew $DEBUG_ARGS --no-daemon -DpklMultiJdkTesting=true -DreleaseBuild=true publishToSonatype closeAndReleaseSonatypeStagingRepository
github-release: github-release:
needs: deploy-release needs: deploy-release
permissions: permissions:
@@ -878,16 +924,14 @@ jobs:
- gradle-check-windows - gradle-check-windows
- gradle-compatibility - gradle-compatibility
- java-executables-release - java-executables-release
- pkl-cli-macOS-amd64-release
- pkl-cli-linux-amd64-release - pkl-cli-linux-amd64-release
- pkl-cli-macOS-aarch64-release
- pkl-cli-linux-aarch64-release - pkl-cli-linux-aarch64-release
- pkl-cli-macOS-aarch64-release
- pkl-cli-alpine-linux-amd64-release - pkl-cli-alpine-linux-amd64-release
- pkl-cli-windows-amd64-release - pkl-cli-windows-amd64-release
- pkl-doc-macOS-amd64-release
- pkl-doc-linux-amd64-release - pkl-doc-linux-amd64-release
- pkl-doc-macOS-aarch64-release
- pkl-doc-linux-aarch64-release - pkl-doc-linux-aarch64-release
- pkl-doc-macOS-aarch64-release
- pkl-doc-alpine-linux-amd64-release - pkl-doc-alpine-linux-amd64-release
- pkl-doc-windows-amd64-release - pkl-doc-windows-amd64-release
permissions: permissions:
@@ -899,7 +943,7 @@ jobs:
pattern: test-results-xml-* pattern: test-results-xml-*
- name: Publish test results - name: Publish test results
if: '!cancelled()' if: '!cancelled()'
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2 uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
with: with:
comment_mode: 'off' comment_mode: 'off'
files: test-results-xml-*/**/*.xml files: test-results-xml-*/**/*.xml
@@ -918,16 +962,14 @@ jobs:
- bench - bench
- gradle-compatibility - gradle-compatibility
- java-executables-release - java-executables-release
- pkl-cli-macOS-amd64-release
- pkl-cli-linux-amd64-release - pkl-cli-linux-amd64-release
- pkl-cli-macOS-aarch64-release
- pkl-cli-linux-aarch64-release - pkl-cli-linux-aarch64-release
- pkl-cli-macOS-aarch64-release
- pkl-cli-alpine-linux-amd64-release - pkl-cli-alpine-linux-amd64-release
- pkl-cli-windows-amd64-release - pkl-cli-windows-amd64-release
- pkl-doc-macOS-amd64-release
- pkl-doc-linux-amd64-release - pkl-doc-linux-amd64-release
- pkl-doc-macOS-aarch64-release
- pkl-doc-linux-aarch64-release - pkl-doc-linux-aarch64-release
- pkl-doc-macOS-aarch64-release
- pkl-doc-alpine-linux-amd64-release - pkl-doc-alpine-linux-amd64-release
- pkl-doc-windows-amd64-release - pkl-doc-windows-amd64-release
- deploy-release - deploy-release
+1 -1
View File
@@ -25,7 +25,7 @@ jobs:
name_is_regexp: true name_is_regexp: true
run_id: ${{ github.event.workflow_run.id }} run_id: ${{ github.event.workflow_run.id }}
- name: Publish test results - name: Publish test results
uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2 uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2
with: with:
commit: ${{ github.event.workflow_run.head_sha }} commit: ${{ github.event.workflow_run.head_sha }}
comment_mode: 'off' comment_mode: 'off'
-10
View File
@@ -10,16 +10,6 @@
<option name="INSERT_INNER_CLASS_IMPORTS" value="true" /> <option name="INSERT_INNER_CLASS_IMPORTS" value="true" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" /> <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" /> <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE">
<value>
<package name="" withSubpackages="true" static="true" />
<emptyLine />
<package name="" withSubpackages="true" static="false" />
</value>
</option>
<option name="RIGHT_MARGIN" value="100" /> <option name="RIGHT_MARGIN" value="100" />
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" /> <option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" /> <option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
+8
View File
@@ -27,12 +27,19 @@
<option name="searchContext" value="ANY" /> <option name="searchContext" value="ANY" />
<option name="replacement" value="evaluatorSettings" /> <option name="replacement" value="evaluatorSettings" />
</InspectionPattern> </InspectionPattern>
<InspectionPattern>
<option name="regExp" value="project\?\.resolvedEvaluatorSettings" />
<option name="_fileType" value="Kotlin" />
<option name="searchContext" value="ANY" />
<option name="replacement" value="evaluatorSettings" />
</InspectionPattern>
</list> </list>
</option> </option>
</RegExpInspectionConfiguration> </RegExpInspectionConfiguration>
</list> </list>
</option> </option>
</inspection_tool> </inspection_tool>
<inspection_tool class="FieldAccessNotGuarded" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="FieldMayBeFinal" enabled="true" level="INFORMATION" enabled_by_default="true"> <inspection_tool class="FieldMayBeFinal" enabled="true" level="INFORMATION" enabled_by_default="true">
<scope name="AllExceptTruffleAst" level="WARNING" enabled="true" /> <scope name="AllExceptTruffleAst" level="WARNING" enabled="true" />
</inspection_tool> </inspection_tool>
@@ -94,6 +101,7 @@
<option name="processLiterals" value="true" /> <option name="processLiterals" value="true" />
<option name="processComments" value="true" /> <option name="processComments" value="true" />
</inspection_tool> </inspection_tool>
<inspection_tool class="StringToUpperWithoutLocale" enabled="true" level="WARNING" enabled_by_default="true" editorAttributes="WARNING_ATTRIBUTES" />
<inspection_tool class="dd497f47-d38f-3fab-9ed7-eabe699620c8" enabled="true" level="ERROR" enabled_by_default="true" editorAttributes="ERRORS_ATTRIBUTES" /> <inspection_tool class="dd497f47-d38f-3fab-9ed7-eabe699620c8" enabled="true" level="ERROR" enabled_by_default="true" editorAttributes="ERRORS_ATTRIBUTES" />
</profile> </profile>
</component> </component>
-1
View File
@@ -53,7 +53,6 @@ gw pkl-cli:buildNative # build native executable for current platform
pkl-cli/build/executable/jpkl # run Java executable pkl-cli/build/executable/jpkl # run Java executable
pkl-cli/build/executable/pkl-macos-aarch64 # run Mac executable pkl-cli/build/executable/pkl-macos-aarch64 # run Mac executable
pkl-cli/build/executable/pkl-macos-amd64 # run Intel Mac executable
pkl-cli/build/executable/pkl-linux-amd64 # run Linux executable pkl-cli/build/executable/pkl-linux-amd64 # run Linux executable
pkl-cli/build/executable/pkl-alpine-linux-amd64 # run Alpine Linux executable pkl-cli/build/executable/pkl-alpine-linux-amd64 # run Alpine Linux executable
pkl-cli/build/executable/pkl-windows-amd64.exe # run Windows executable pkl-cli/build/executable/pkl-windows-amd64.exe # run Windows executable
+2 -2
View File
@@ -19,8 +19,8 @@ plugins {
id("me.champeau.jmh") id("me.champeau.jmh")
} }
val truffle: Configuration by configurations.creating val truffle: Configuration = configurations.create("truffle")
val graal: Configuration by configurations.creating val graal: Configuration = configurations.create("graal")
dependencies { dependencies {
jmh(projects.pklCore) jmh(projects.pklCore)
+37 -20
View File
@@ -24,6 +24,7 @@ import org.gradle.api.provider.Provider
import org.gradle.api.tasks.TaskProvider import org.gradle.api.tasks.TaskProvider
import org.gradle.api.tasks.testing.Test import org.gradle.api.tasks.testing.Test
import org.gradle.internal.extensions.stdlib.capitalized import org.gradle.internal.extensions.stdlib.capitalized
import org.gradle.internal.os.OperatingSystem
import org.gradle.jvm.toolchain.* import org.gradle.jvm.toolchain.*
import org.gradle.kotlin.dsl.* import org.gradle.kotlin.dsl.*
import org.gradle.kotlin.dsl.support.serviceOf import org.gradle.kotlin.dsl.support.serviceOf
@@ -70,31 +71,27 @@ const val PKL_TEST_ALL_JDKS = false
// `buildInfo` in main build scripts // `buildInfo` in main build scripts
// `project.extensions.getByType<BuildInfo>()` in precompiled script plugins // `project.extensions.getByType<BuildInfo>()` in precompiled script plugins
open class BuildInfo(private val project: Project) { open class BuildInfo(private val project: Project) {
inner class GraalVm(val arch: String) { inner class GraalVm(
val osName: String,
val arch: String,
val version: String,
val graalJdkVersion: String,
) {
val homeDir: String by lazy { val homeDir: String by lazy {
System.getenv("GRAALVM_HOME") ?: "${System.getProperty("user.home")}/.graalvm" System.getenv("GRAALVM_HOME") ?: "${System.getProperty("user.home")}/.graalvm"
} }
val version: String by lazy { libs.findVersion("graalVm").get().toString() }
val graalVmJdkVersion: String by lazy { libs.findVersion("graalVmJdkVersion").get().toString() } val graalVmJdkVersion: String by lazy { libs.findVersion("graalVmJdkVersion").get().toString() }
val osName: String by lazy {
when {
os.isMacOsX -> "macos"
os.isLinux -> "linux"
os.isWindows -> "windows"
else -> throw RuntimeException("${os.familyName} is not supported.")
}
}
val baseName: String by lazy { val baseName: String by lazy {
"graalvm-community-jdk-${graalVmJdkVersion}_${osName}-${arch}_bin" "graalvm-community-jdk-${graalVmJdkVersion}_${osName}-${arch}_bin"
} }
val graalMajorVersion: String = graalJdkVersion.split(".").first()
val downloadUrl: String by lazy { val downloadUrl: String by lazy {
val extension = if (os.isWindows) "zip" else "tar.gz" val ext = if (os.isWindows) "zip" else "tar.gz"
"https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${graalVmJdkVersion}/$baseName.$extension" val platformArch = if (arch == "amd64") "x64" else arch
"https://github.com/graalvm/graalvm-ce-builds/releases/download/graal-$version/graalvm-community-jdk-${graalMajorVersion}i1-${graalJdkVersion}_${osName}-${platformArch}_bin.$ext"
} }
val downloadFile: File by lazy { val downloadFile: File by lazy {
@@ -131,9 +128,22 @@ open class BuildInfo(private val project: Project) {
} }
} }
val graalVmAarch64: GraalVm = GraalVm("aarch64") val graalVmAarch64: GraalVm by lazy { createGraalVm("aarch64") }
val graalVmAmd64: GraalVm = GraalVm("x64") val graalVmAmd64: GraalVm by lazy { createGraalVm("x64") }
private fun createGraalVm(arch: String): GraalVm {
val osName =
when {
os.isMacOsX -> "macos"
os.isLinux -> "linux"
os.isWindows -> "windows"
else -> throw RuntimeException("Unsupported OS for GraalVM: ${os.canonicalName}")
}
val version = libs.findVersion("graalVm").get().toString()
val graalJdkVersion = libs.findVersion("graalVmJdkVersion").get().toString()
return GraalVm(osName, arch, version, graalJdkVersion)
}
val isCiBuild: Boolean by lazy { System.getenv("CI") != null } val isCiBuild: Boolean by lazy { System.getenv("CI") != null }
@@ -368,9 +378,7 @@ open class BuildInfo(private val project: Project) {
File(System.getProperty("user.home"), "staticdeps/bin/x86_64-linux-musl-gcc").exists() File(System.getProperty("user.home"), "staticdeps/bin/x86_64-linux-musl-gcc").exists()
} }
val os: org.gradle.internal.os.OperatingSystem by lazy { val os: OperatingSystem by lazy { OperatingSystem.current() }
org.gradle.internal.os.OperatingSystem.current()
}
// could be `commitId: Provider<String> = project.provider { ... }` // could be `commitId: Provider<String> = project.provider { ... }`
val commitId: String by lazy { val commitId: String by lazy {
@@ -425,3 +433,12 @@ open class BuildInfo(private val project: Project) {
// Shape of a function which is applied to configure multi-JDK testing. // Shape of a function which is applied to configure multi-JDK testing.
private typealias MultiJdkTestConfigurator = private typealias MultiJdkTestConfigurator =
Test.(Pair<JavaLanguageVersion, Provider<JavaLauncher>>) -> Unit Test.(Pair<JavaLanguageVersion, Provider<JavaLauncher>>) -> Unit
private val OperatingSystem.canonicalName
get() =
when {
isMacOsX -> "macos"
isWindows -> "windows"
isLinux -> "linux"
else -> throw RuntimeException("Unsupported OS: $name")
}
@@ -0,0 +1,76 @@
/*
* Copyright © 2026 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.
*/
import groovy.util.Node
import groovy.xml.XmlParser
import groovy.xml.XmlUtil
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
abstract class ConfigureLateInitAnnotation : DefaultTask() {
private val miscXmlFile = project.rootProject.file(".idea/misc.xml")
init {
inputs.file(miscXmlFile)
outputs.file(miscXmlFile)
}
@TaskAction
fun run() {
val annotationName = "org.pkl.core.util.LateInit"
if (!miscXmlFile.exists()) {
miscXmlFile.writeText(
"""
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
</project>
"""
.trimIndent()
.trim()
)
}
val root = XmlParser().parse(miscXmlFile)
fun Node.childNodes() = children().filterIsInstance<Node>()
var entryPointsManager =
root.childNodes().find {
it.name() == "component" && it.attribute("name") == "EntryPointsManager"
}
if (entryPointsManager == null) {
entryPointsManager = root.appendNode("component", mapOf("name" to "EntryPointsManager"))
}
var writeAnnotations = entryPointsManager.childNodes().find { it.name() == "writeAnnotations" }
if (writeAnnotations == null) {
writeAnnotations = entryPointsManager.appendNode("writeAnnotations")
}
val alreadyExists =
writeAnnotations.childNodes().any {
it.name() == "writeAnnotation" && it.attribute("name") == annotationName
}
if (!alreadyExists) {
writeAnnotations.appendNode("writeAnnotation", mapOf("name" to annotationName))
miscXmlFile.writeText(XmlUtil.serialize(root))
logger.lifecycle("Updated .idea/misc.xml")
} else {
logger.info("$annotationName is already configured in .idea/misc.xml")
}
}
}
+78 -19
View File
@@ -13,10 +13,13 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import java.nio.file.AtomicMoveNotSupportedException
import java.nio.file.Files import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.Paths import java.nio.file.Paths
import java.nio.file.StandardCopyOption import java.nio.file.StandardCopyOption
import java.util.* import java.util.*
import java.util.zip.ZipInputStream
import javax.inject.Inject import javax.inject.Inject
import kotlin.io.path.createDirectories import kotlin.io.path.createDirectories
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
@@ -41,19 +44,14 @@ constructor(
@TaskAction @TaskAction
@Suppress("unused") @Suppress("unused")
fun run() { fun run() {
// minimize chance of corruption by extract-to-random-dir-and-flip-symlink // minimize chance of corruption by extract-to-random-dir-and-publish
val distroDir = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString()) val distroDir = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
try { try {
distroDir.createDirectories() distroDir.createDirectories()
println("Extracting ${graalVm.get().downloadFile} into $distroDir") println("Extracting ${graalVm.get().downloadFile} into $distroDir")
// faster and more reliable than Gradle's `copy { from tarTree() }`
execOperations.exec {
workingDir = distroDir.toFile()
executable = "tar"
args("--strip-components=1", "-xzf", graalVm.get().downloadFile)
}
val os = org.gradle.internal.os.OperatingSystem.current() val os = org.gradle.internal.os.OperatingSystem.current()
if (os.isWindows) extractZip(distroDir) else extractTarGz(distroDir)
val distroBinDir = val distroBinDir =
if (os.isMacOsX) distroDir.resolve("Contents/Home/bin") else distroDir.resolve("bin") if (os.isMacOsX) distroDir.resolve("Contents/Home/bin") else distroDir.resolve("bin")
@@ -70,17 +68,7 @@ constructor(
} }
} }
println("Creating symlink ${graalVm.get().installDir} for $distroDir") publishInstallDir(distroDir, os)
val tempLink = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
Files.createSymbolicLink(tempLink, distroDir)
try {
Files.move(tempLink, graalVm.get().installDir.toPath(), StandardCopyOption.ATOMIC_MOVE)
} catch (e: Exception) {
try {
fileOperations.delete(tempLink.toFile())
} catch (ignored: Exception) {}
throw e
}
} catch (e: Exception) { } catch (e: Exception) {
try { try {
fileOperations.delete(distroDir) fileOperations.delete(distroDir)
@@ -88,4 +76,75 @@ constructor(
throw e throw e
} }
} }
private fun extractTarGz(distroDir: Path) {
// faster and more reliable than Gradle's `copy { from tarTree() }`
execOperations.exec {
workingDir = distroDir.toFile()
executable = "tar"
args("--strip-components=1", "-xzf", graalVm.get().downloadFile)
}
}
private fun extractZip(distroDir: Path) {
val targetDir = distroDir.toAbsolutePath().normalize()
ZipInputStream(graalVm.get().downloadFile.inputStream().buffered()).use { zipInput ->
var entry = zipInput.nextEntry
while (entry != null) {
try {
val strippedPath = stripFirstPathComponent(entry.name)
if (strippedPath != null) {
val target = targetDir.resolve(strippedPath).normalize()
require(target.startsWith(targetDir)) {
"GraalVM archive entry escapes destination directory: ${entry.name}"
}
if (entry.isDirectory) {
target.createDirectories()
} else {
target.parent?.createDirectories()
Files.copy(zipInput, target)
}
}
} finally {
zipInput.closeEntry()
}
entry = zipInput.nextEntry
}
}
}
private fun stripFirstPathComponent(path: String): String? {
val normalizedPath = path.replace('\\', '/').trimStart('/')
val separatorIndex = normalizedPath.indexOf('/')
if (separatorIndex == -1) return null
return normalizedPath.substring(separatorIndex + 1).takeIf { it.isNotEmpty() }
}
private fun publishInstallDir(distroDir: Path, os: org.gradle.internal.os.OperatingSystem) {
if (os.isWindows) {
println("Installing ${graalVm.get().installDir} from $distroDir")
moveAtomicallyOrRegularly(distroDir, graalVm.get().installDir.toPath())
return
}
println("Creating symlink ${graalVm.get().installDir} for $distroDir")
val tempLink = Paths.get(graalVm.get().homeDir, UUID.randomUUID().toString())
Files.createSymbolicLink(tempLink, distroDir)
try {
moveAtomicallyOrRegularly(tempLink, graalVm.get().installDir.toPath())
} catch (e: Exception) {
try {
fileOperations.delete(tempLink.toFile())
} catch (ignored: Exception) {}
throw e
}
}
private fun moveAtomicallyOrRegularly(source: Path, target: Path) {
try {
Files.move(source, target, StandardCopyOption.ATOMIC_MOVE)
} catch (e: AtomicMoveNotSupportedException) {
Files.move(source, target)
}
}
} }
+5 -3
View File
@@ -63,11 +63,13 @@ fun Project.configurePklPomMetadata() {
/** Configures POM validation task to check for unresolved versions and snapshots in releases. */ /** Configures POM validation task to check for unresolved versions and snapshots in releases. */
fun Project.configurePomValidation() { fun Project.configurePomValidation() {
val validatePom by tasks.registering { val validatePom =
tasks.register("validatePom") {
if (tasks.findByName("generatePomFileForLibraryPublication") == null) { if (tasks.findByName("generatePomFileForLibraryPublication") == null) {
return@registering return@register
} }
val generatePomFileForLibraryPublication by tasks.existing(GenerateMavenPom::class) val generatePomFileForLibraryPublication =
tasks.named<GenerateMavenPom>("generatePomFileForLibraryPublication")
val outputFile = val outputFile =
layout.buildDirectory.file("validatePom") // dummy output to satisfy up-to-date check layout.buildDirectory.file("validatePom") // dummy output to satisfy up-to-date check
@@ -79,7 +79,7 @@ plugins.withType(MavenPublishPlugin::class).configureEach {
} }
} }
val allDependencies by tasks.registering(DependencyReportTask::class) val allDependencies = tasks.register<DependencyReportTask>("allDependencies")
tasks.withType(Test::class).configureEach { tasks.withType(Test::class).configureEach {
System.getProperty("testReportsDir")?.let { reportsDir -> System.getProperty("testReportsDir")?.let { reportsDir ->
@@ -132,8 +132,8 @@ tasks.shadowJar {
shadow { addShadowVariantIntoJavaComponent = false } shadow { addShadowVariantIntoJavaComponent = false }
val testFatJar by val testFatJar =
tasks.registering(Test::class) { tasks.register<Test>("testFatJar") {
testClassesDirs = files(tasks.test.get().testClassesDirs) testClassesDirs = files(tasks.test.get().testClassesDirs)
classpath = classpath =
// compiled test classes // compiled test classes
@@ -148,7 +148,8 @@ val testFatJar by
tasks.check { dependsOn(testFatJar) } tasks.check { dependsOn(testFatJar) }
val validateFatJar by tasks.registering { val validateFatJar =
tasks.register("validateFatJar") {
val outputFile = layout.buildDirectory.file("validateFatJar/result.txt") val outputFile = layout.buildDirectory.file("validateFatJar/result.txt")
inputs.files(tasks.shadowJar) inputs.files(tasks.shadowJar)
inputs.property("nonRelocations", nonRelocations) inputs.property("nonRelocations", nonRelocations)
@@ -177,18 +178,18 @@ val validateFatJar by tasks.registering {
throw GradleException("Found unshadowed files:\n" + unshadowedFiles.joinToString("\n")) throw GradleException("Found unshadowed files:\n" + unshadowedFiles.joinToString("\n"))
} }
} }
} }
tasks.check { dependsOn(validateFatJar) } tasks.check { dependsOn(validateFatJar) }
val resolveSourcesJars by val resolveSourcesJars =
tasks.registering(ResolveSourcesJars::class) { tasks.register<ResolveSourcesJars>("resolveSourcesJars") {
configuration.set(configurations.runtimeClasspath) configuration.set(configurations.runtimeClasspath)
outputDir.set(layout.buildDirectory.dir("resolveSourcesJars")) outputDir.set(layout.buildDirectory.dir("resolveSourcesJars"))
} }
val fatSourcesJar by val fatSourcesJar =
tasks.registering(MergeSourcesJars::class) { tasks.register<MergeSourcesJars>("fatSourcesJar") {
plugins.withId("pklJavaLibrary") { inputJars.from(tasks.named("sourcesJar")) } plugins.withId("pklJavaLibrary") { inputJars.from(tasks.named("sourcesJar")) }
inputJars.from(firstPartySourcesJarsConfiguration) inputJars.from(firstPartySourcesJarsConfiguration)
inputJars.from(resolveSourcesJars.map { fileTree(it.outputDir) }) inputJars.from(resolveSourcesJars.map { fileTree(it.outputDir) })
@@ -213,7 +214,7 @@ publishing {
artifact(fatSourcesJar.flatMap { it.outputJar.asFile }) { classifier = "sources" } artifact(fatSourcesJar.flatMap { it.outputJar.asFile }) { classifier = "sources" }
plugins.withId("pklJavaLibrary") { plugins.withId("pklJavaLibrary") {
val javadocJar by tasks.existing(Jar::class) val javadocJar = tasks.named<Jar>("javadocJar")
// Javadoc Jar is not fat (didn't invest effort) // Javadoc Jar is not fat (didn't invest effort)
artifact(javadocJar.flatMap { it.archiveFile }) { classifier = "javadoc" } artifact(javadocJar.flatMap { it.archiveFile }) { classifier = "javadoc" }
} }
@@ -21,11 +21,15 @@ plugins { id("de.undercouch.download") }
val buildInfo = project.extensions.getByType<BuildInfo>() val buildInfo = project.extensions.getByType<BuildInfo>()
// tries to minimize chance of corruption by download-to-temp-file-and-move // tries to minimize chance of corruption by download-to-temp-file-and-move
val downloadGraalVmAarch64 by val downloadGraalVmAarch64 =
tasks.registering(Download::class) { configureDownloadGraalVm(buildInfo.graalVmAarch64) } tasks.register<Download>("downloadGraalVmAarch64") {
configureDownloadGraalVm(buildInfo.graalVmAarch64)
}
val downloadGraalVmAmd64 by val downloadGraalVmAmd64 =
tasks.registering(Download::class) { configureDownloadGraalVm(buildInfo.graalVmAmd64) } tasks.register<Download>("downloadGraalVmAmd64") {
configureDownloadGraalVm(buildInfo.graalVmAmd64)
}
fun Download.configureDownloadGraalVm(graalvm: BuildInfo.GraalVm) { fun Download.configureDownloadGraalVm(graalvm: BuildInfo.GraalVm) {
onlyIf { !graalvm.installDir.exists() } onlyIf { !graalvm.installDir.exists() }
@@ -37,14 +41,14 @@ fun Download.configureDownloadGraalVm(graalvm: BuildInfo.GraalVm) {
tempAndMove(true) tempAndMove(true)
} }
val verifyGraalVmAarch64 by val verifyGraalVmAarch64 =
tasks.registering(Verify::class) { tasks.register<Verify>("verifyGraalVmAarch64") {
configureVerifyGraalVm(buildInfo.graalVmAarch64) configureVerifyGraalVm(buildInfo.graalVmAarch64)
dependsOn(downloadGraalVmAarch64) dependsOn(downloadGraalVmAarch64)
} }
val verifyGraalVmAmd64 by val verifyGraalVmAmd64 =
tasks.registering(Verify::class) { tasks.register<Verify>("verifyGraalVmAmd64") {
configureVerifyGraalVm(buildInfo.graalVmAmd64) configureVerifyGraalVm(buildInfo.graalVmAmd64)
dependsOn(downloadGraalVmAmd64) dependsOn(downloadGraalVmAmd64)
} }
@@ -60,15 +64,15 @@ fun Verify.configureVerifyGraalVm(graalvm: BuildInfo.GraalVm) {
} }
@Suppress("unused") @Suppress("unused")
val installGraalVmAarch64 by val installGraalVmAarch64 =
tasks.registering(InstallGraalVm::class) { tasks.register<InstallGraalVm>("installGraalVmAarch64") {
dependsOn(verifyGraalVmAarch64) dependsOn(verifyGraalVmAarch64)
graalVm = buildInfo.graalVmAarch64 graalVm = buildInfo.graalVmAarch64
} }
@Suppress("unused") @Suppress("unused")
val installGraalVmAmd64 by val installGraalVmAmd64 =
tasks.registering(InstallGraalVm::class) { tasks.register<InstallGraalVm>("installGraalVmAmd64") {
dependsOn(verifyGraalVmAmd64) dependsOn(verifyGraalVmAmd64)
graalVm = buildInfo.graalVmAmd64 graalVm = buildInfo.graalVmAmd64
} }
@@ -47,8 +47,8 @@ dependencies {
} }
} }
val validateHtml by val validateHtml =
tasks.registering(JavaExec::class) { tasks.register<JavaExec>("validateHtml") {
val resultFile = layout.buildDirectory.file("validateHtml/result.txt") val resultFile = layout.buildDirectory.file("validateHtml/result.txt")
inputs.files(htmlValidator.sources) inputs.files(htmlValidator.sources)
outputs.file(resultFile) outputs.file(resultFile)
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
import net.ltgt.gradle.errorprone.CheckSeverity
import net.ltgt.gradle.errorprone.errorprone import net.ltgt.gradle.errorprone.errorprone
import net.ltgt.gradle.nullaway.nullaway import net.ltgt.gradle.nullaway.nullaway
import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.accessors.dm.LibrariesForLibs
@@ -36,6 +37,8 @@ nullaway { onlyNullMarked = true }
tasks.withType<JavaCompile>().configureEach { tasks.withType<JavaCompile>().configureEach {
options.errorprone.disableAllChecks = true options.errorprone.disableAllChecks = true
options.errorprone.check("StringCaseLocaleUsage", CheckSeverity.ERROR)
options.errorprone.check("GuardedBy", CheckSeverity.ERROR)
options.errorprone.nullaway { options.errorprone.nullaway {
error() error()
onlyNullMarked = true onlyNullMarked = true
@@ -26,8 +26,8 @@ plugins {
val executableSpec = project.extensions.create("executable", ExecutableSpec::class.java) val executableSpec = project.extensions.create("executable", ExecutableSpec::class.java)
val buildInfo = project.extensions.getByType<BuildInfo>() val buildInfo = project.extensions.getByType<BuildInfo>()
val javaExecutable by val javaExecutable =
tasks.registering(ExecutableJar::class) { tasks.register<ExecutableJar>("javaExecutable") {
group = "build" group = "build"
dependsOn(tasks.jar) dependsOn(tasks.jar)
inJar = tasks.shadowJar.flatMap { it.archiveFile } inJar = tasks.shadowJar.flatMap { it.archiveFile }
@@ -77,7 +77,8 @@ fun Task.setupTestStartJavaExecutable(launcher: Provider<JavaLauncher>? = null)
} }
} }
val testStartJavaExecutable by tasks.registering { setupTestStartJavaExecutable() } val testStartJavaExecutable =
tasks.register("testStartJavaExecutable") { setupTestStartJavaExecutable() }
// Setup `testStartJavaExecutable` tasks for multi-JDK testing. // Setup `testStartJavaExecutable` tasks for multi-JDK testing.
val testStartJavaExecutableOnOtherJdks = val testStartJavaExecutableOnOtherJdks =
@@ -44,7 +44,6 @@ kotlin {
freeCompilerArgs.addAll( freeCompilerArgs.addAll(
"-jvm-default=no-compatibility", // was: -Xjvm-default=all "-jvm-default=no-compatibility", // was: -Xjvm-default=all
"-Xjdk-release=${buildInfo.jvmTarget}", "-Xjdk-release=${buildInfo.jvmTarget}",
"-Xjsr305=strict",
) )
} }
} }
@@ -30,14 +30,17 @@ plugins {
val executableSpec = project.extensions.getByType<ExecutableSpec>() val executableSpec = project.extensions.getByType<ExecutableSpec>()
val buildInfo = project.extensions.getByType<BuildInfo>() val buildInfo = project.extensions.getByType<BuildInfo>()
val stagedMacAmd64Executable: Configuration by configurations.creating val stagedMacAarch64Executable: Configuration = configurations.create("stagedMacAarch64Executable")
val stagedMacAarch64Executable: Configuration by configurations.creating val stagedLinuxAmd64Executable: Configuration = configurations.create("stagedLinuxAmd64Executable")
val stagedLinuxAmd64Executable: Configuration by configurations.creating val stagedLinuxAarch64Executable: Configuration =
val stagedLinuxAarch64Executable: Configuration by configurations.creating configurations.create("stagedLinuxAarch64Executable")
val stagedAlpineLinuxAmd64Executable: Configuration by configurations.creating val stagedAlpineLinuxAmd64Executable: Configuration =
val stagedWindowsAmd64Executable: Configuration by configurations.creating configurations.create("stagedAlpineLinuxAmd64Executable")
val stagedWindowsAmd64Executable: Configuration =
configurations.create("stagedWindowsAmd64Executable")
val nativeImageClasspath by configurations.creating { val nativeImageClasspath =
configurations.create("nativeImageClasspath") {
extendsFrom(configurations.runtimeClasspath.get()) extendsFrom(configurations.runtimeClasspath.get())
// Ensure native-image version uses GraalVM C SDKs instead of Java FFI or JNA // Ensure native-image version uses GraalVM C SDKs instead of Java FFI or JNA
// (comes from artifact `mordant-jvm-graal-ffi`). // (comes from artifact `mordant-jvm-graal-ffi`).
@@ -45,7 +48,7 @@ val nativeImageClasspath by configurations.creating {
exclude("com.github.ajalt.mordant", "mordant-jvm-ffm-jvm") exclude("com.github.ajalt.mordant", "mordant-jvm-ffm-jvm")
exclude("com.github.ajalt.mordant", "mordant-jvm-jna") exclude("com.github.ajalt.mordant", "mordant-jvm-jna")
exclude("com.github.ajalt.mordant", "mordant-jvm-jna-jvm") exclude("com.github.ajalt.mordant", "mordant-jvm-jna-jvm")
} }
val libs = the<LibrariesForLibs>() val libs = the<LibrariesForLibs>()
@@ -60,7 +63,6 @@ dependencies {
nativeImageClasspath(libs.graalSdk) nativeImageClasspath(libs.graalSdk)
stagedMacAarch64Executable(executableFile("macos-aarch64")) stagedMacAarch64Executable(executableFile("macos-aarch64"))
stagedMacAmd64Executable(executableFile("macos-amd64"))
stagedLinuxAmd64Executable(executableFile("linux-amd64")) stagedLinuxAmd64Executable(executableFile("linux-amd64"))
stagedLinuxAarch64Executable(executableFile("linux-aarch64")) stagedLinuxAarch64Executable(executableFile("linux-aarch64"))
stagedAlpineLinuxAmd64Executable(executableFile("alpine-linux-amd64")) stagedAlpineLinuxAmd64Executable(executableFile("alpine-linux-amd64"))
@@ -85,32 +87,24 @@ private fun NativeImageBuild.setClasspath() {
classpath.from(nativeImageClasspath) classpath.from(nativeImageClasspath)
} }
val macExecutableAmd64 by val macExecutableAarch64 =
tasks.registering(NativeImageBuild::class) { tasks.register<NativeImageBuild>("macExecutableAarch64") {
imageName = executableSpec.name.map { "$it-macos-amd64" }
mainClass = executableSpec.mainClass
amd64()
setClasspath()
}
val macExecutableAarch64 by
tasks.registering(NativeImageBuild::class) {
imageName = executableSpec.name.map { "$it-macos-aarch64" } imageName = executableSpec.name.map { "$it-macos-aarch64" }
mainClass = executableSpec.mainClass mainClass = executableSpec.mainClass
aarch64() aarch64()
setClasspath() setClasspath()
} }
val linuxExecutableAmd64 by val linuxExecutableAmd64 =
tasks.registering(NativeImageBuild::class) { tasks.register<NativeImageBuild>("linuxExecutableAmd64") {
imageName = executableSpec.name.map { "$it-linux-amd64" } imageName = executableSpec.name.map { "$it-linux-amd64" }
mainClass = executableSpec.mainClass mainClass = executableSpec.mainClass
amd64() amd64()
setClasspath() setClasspath()
} }
val linuxExecutableAarch64 by val linuxExecutableAarch64 =
tasks.registering(NativeImageBuild::class) { tasks.register<NativeImageBuild>("linuxExecutableAarch64") {
imageName = executableSpec.name.map { "$it-linux-aarch64" } imageName = executableSpec.name.map { "$it-linux-aarch64" }
mainClass = executableSpec.mainClass mainClass = executableSpec.mainClass
aarch64() aarch64()
@@ -120,8 +114,8 @@ val linuxExecutableAarch64 by
extraNativeImageArgs.add("-H:PageSize=65536") extraNativeImageArgs.add("-H:PageSize=65536")
} }
val alpineExecutableAmd64 by val alpineExecutableAmd64 =
tasks.registering(NativeImageBuild::class) { tasks.register<NativeImageBuild>("alpineExecutableAmd64") {
imageName = executableSpec.name.map { "$it-alpine-linux-amd64" } imageName = executableSpec.name.map { "$it-alpine-linux-amd64" }
mainClass = executableSpec.mainClass mainClass = executableSpec.mainClass
amd64() amd64()
@@ -129,17 +123,18 @@ val alpineExecutableAmd64 by
extraNativeImageArgs.addAll(listOf("--static", "--libc=musl")) extraNativeImageArgs.addAll(listOf("--static", "--libc=musl"))
} }
val windowsExecutableAmd64 by val windowsExecutableAmd64 =
tasks.registering(NativeImageBuild::class) { tasks.register<NativeImageBuild>("windowsExecutableAmd64") {
imageName = executableSpec.name.map { "$it-windows-amd64" } imageName = executableSpec.name.map { "$it-windows-amd64" }
mainClass = executableSpec.mainClass mainClass = executableSpec.mainClass
amd64() amd64()
setClasspath() setClasspath()
} }
val assembleNative by tasks.existing val assembleNative = tasks.named("assembleNative")
val testStartNativeExecutable by tasks.registering { val testStartNativeExecutable =
tasks.register("testStartNativeExecutable") {
dependsOn(assembleNative) dependsOn(assembleNative)
// dummy file for up-to-date checking // dummy file for up-to-date checking
@@ -164,11 +159,12 @@ val testStartNativeExecutable by tasks.registering {
writeText("OK") writeText("OK")
} }
} }
} }
val requiredGlibcVersion: Version = Version.parse("2.17") val requiredGlibcVersion: Version = Version.parse("2.17")
val checkGlibc by tasks.registering { val checkGlibc =
tasks.register("checkGlibc") {
enabled = buildInfo.os.isLinux && !buildInfo.musl enabled = buildInfo.os.isLinux && !buildInfo.musl
dependsOn(assembleNative) dependsOn(assembleNative)
doLast { doLast {
@@ -195,7 +191,7 @@ val checkGlibc by tasks.registering {
) )
} }
} }
} }
// Expose underlying task's outputs // Expose underlying task's outputs
private fun <T : Task> Task.wraps(other: TaskProvider<T>) { private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
@@ -203,41 +199,27 @@ private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
outputs.files(other) outputs.files(other)
} }
val testNative by tasks.existing { dependsOn(testStartNativeExecutable, checkGlibc) } val testNative = tasks.named("testNative") { dependsOn(testStartNativeExecutable, checkGlibc) }
val assembleNativeMacOsAarch64 by tasks.existing { wraps(macExecutableAarch64) } val assembleNativeMacOsAarch64 =
tasks.named("assembleNativeMacOsAarch64") { wraps(macExecutableAarch64) }
val assembleNativeMacOsAmd64 by tasks.existing { wraps(macExecutableAmd64) } val assembleNativeLinuxAarch64 =
tasks.named("assembleNativeLinuxAarch64") { wraps(linuxExecutableAarch64) }
val assembleNativeLinuxAarch64 by tasks.existing { wraps(linuxExecutableAarch64) } val assembleNativeLinuxAmd64 =
tasks.named("assembleNativeLinuxAmd64") { wraps(linuxExecutableAmd64) }
val assembleNativeLinuxAmd64 by tasks.existing { wraps(linuxExecutableAmd64) } val assembleNativeAlpineLinuxAmd64 =
tasks.named("assembleNativeAlpineLinuxAmd64") { wraps(alpineExecutableAmd64) }
val assembleNativeAlpineLinuxAmd64 by tasks.existing { wraps(alpineExecutableAmd64) } val assembleNativeWindowsAmd64 =
tasks.named("assembleNativeWindowsAmd64") { wraps(windowsExecutableAmd64) }
val assembleNativeWindowsAmd64 by tasks.existing { wraps(windowsExecutableAmd64) }
publishing { publishing {
publications { publications {
// need to put in `afterEvaluate` because `artifactId` cannot be set lazily. // need to put in `afterEvaluate` because `artifactId` cannot be set lazily.
project.afterEvaluate { project.afterEvaluate {
create<MavenPublication>("macExecutableAmd64") {
artifactId = "${executableSpec.publicationName.get()}-macos-amd64"
artifact(stagedMacAmd64Executable.singleFile) {
classifier = null
extension = "bin"
builtBy(stagedMacAmd64Executable)
}
pom {
name = "${executableSpec.publicationName.get()}-macos-amd64"
url = executableSpec.website
description =
executableSpec.documentationName.map { name ->
"Native $name executable for macOS/amd64."
}
}
}
create<MavenPublication>("macExecutableAarch64") { create<MavenPublication>("macExecutableAarch64") {
artifactId = "${executableSpec.publicationName.get()}-macos-aarch64" artifactId = "${executableSpec.publicationName.get()}-macos-aarch64"
artifact(stagedMacAarch64Executable.singleFile) { artifact(stagedMacAarch64Executable.singleFile) {
@@ -331,7 +313,6 @@ signing {
sign(publishing.publications["linuxExecutableAarch64"]) sign(publishing.publications["linuxExecutableAarch64"])
sign(publishing.publications["linuxExecutableAmd64"]) sign(publishing.publications["linuxExecutableAmd64"])
sign(publishing.publications["macExecutableAarch64"]) sign(publishing.publications["macExecutableAarch64"])
sign(publishing.publications["macExecutableAmd64"])
sign(publishing.publications["alpineLinuxExecutableAmd64"]) sign(publishing.publications["alpineLinuxExecutableAmd64"])
sign(publishing.publications["windowsExecutableAmd64"]) sign(publishing.publications["windowsExecutableAmd64"])
} }
@@ -13,29 +13,27 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
val assembleNativeMacOsAarch64 by tasks.registering { group = "build" } val assembleNativeMacOsAarch64 = tasks.register("assembleNativeMacOsAarch64") { group = "build" }
val assembleNativeMacOsAmd64 by tasks.registering { group = "build" } val assembleNativeLinuxAarch64 = tasks.register("assembleNativeLinuxAarch64") { group = "build" }
val assembleNativeLinuxAarch64 by tasks.registering { group = "build" } val assembleNativeLinuxAmd64 = tasks.register("assembleNativeLinuxAmd64") { group = "build" }
val assembleNativeLinuxAmd64 by tasks.registering { group = "build" } val assembleNativeAlpineLinuxAmd64 =
tasks.register("assembleNativeAlpineLinuxAmd64") { group = "build" }
val assembleNativeAlpineLinuxAmd64 by tasks.registering { group = "build" } val assembleNativeWindowsAmd64 = tasks.register("assembleNativeWindowsAmd64") { group = "build" }
val assembleNativeWindowsAmd64 by tasks.registering { group = "build" } val testNativeMacOsAarch64 = tasks.register("testNativeMacOsAarch64") { group = "verification" }
val testNativeMacOsAarch64 by tasks.registering { group = "verification" } val testNativeLinuxAarch64 = tasks.register("testNativeLinuxAarch64") { group = "verification" }
val testNativeMacOsAmd64 by tasks.registering { group = "verification" } val testNativeLinuxAmd64 = tasks.register("testNativeLinuxAmd64") { group = "verification" }
val testNativeLinuxAarch64 by tasks.registering { group = "verification" } val testNativeAlpineLinuxAmd64 =
tasks.register("testNativeAlpineLinuxAmd64") { group = "verification" }
val testNativeLinuxAmd64 by tasks.registering { group = "verification" } val testNativeWindowsAmd64 = tasks.register("testNativeWindowsAmd64") { group = "verification" }
val testNativeAlpineLinuxAmd64 by tasks.registering { group = "verification" }
val testNativeWindowsAmd64 by tasks.registering { group = "verification" }
val buildInfo = project.extensions.getByType<BuildInfo>() val buildInfo = project.extensions.getByType<BuildInfo>()
@@ -44,7 +42,8 @@ private fun <T : Task> Task.wraps(other: TaskProvider<T>) {
outputs.files(other) outputs.files(other)
} }
val assembleNative by tasks.registering { val assembleNative =
tasks.register("assembleNative") {
group = "build" group = "build"
if (!buildInfo.isCrossArchSupported && buildInfo.isCrossArch) { if (!buildInfo.isCrossArchSupported && buildInfo.isCrossArch) {
@@ -55,14 +54,12 @@ val assembleNative by tasks.registering {
buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> { buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> {
wraps(assembleNativeMacOsAarch64) wraps(assembleNativeMacOsAarch64)
} }
buildInfo.os.isMacOsX && buildInfo.targetArch == "amd64" -> {
wraps(assembleNativeMacOsAmd64)
}
buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> { buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> {
wraps(assembleNativeLinuxAarch64) wraps(assembleNativeLinuxAarch64)
} }
buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> { buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> {
if (buildInfo.musl) wraps(assembleNativeAlpineLinuxAmd64) else wraps(assembleNativeLinuxAmd64) if (buildInfo.musl) wraps(assembleNativeAlpineLinuxAmd64)
else wraps(assembleNativeLinuxAmd64)
} }
buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> { buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> {
wraps(assembleNativeWindowsAmd64) wraps(assembleNativeWindowsAmd64)
@@ -75,9 +72,10 @@ val assembleNative by tasks.registering {
} }
} }
} }
} }
val testNative by tasks.registering { val testNative =
tasks.register("testNative") {
group = "verification" group = "verification"
dependsOn(assembleNative) dependsOn(assembleNative)
@@ -89,14 +87,12 @@ val testNative by tasks.registering {
buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> { buildInfo.os.isMacOsX && buildInfo.targetArch == "aarch64" -> {
dependsOn(testNativeMacOsAarch64) dependsOn(testNativeMacOsAarch64)
} }
buildInfo.os.isMacOsX && buildInfo.targetArch == "amd64" -> {
dependsOn(testNativeMacOsAmd64)
}
buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> { buildInfo.os.isLinux && buildInfo.targetArch == "aarch64" -> {
dependsOn(testNativeLinuxAarch64) dependsOn(testNativeLinuxAarch64)
} }
buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> { buildInfo.os.isLinux && buildInfo.targetArch == "amd64" -> {
if (buildInfo.musl) dependsOn(testNativeAlpineLinuxAmd64) else dependsOn(testNativeLinuxAmd64) if (buildInfo.musl) dependsOn(testNativeAlpineLinuxAmd64)
else dependsOn(testNativeLinuxAmd64)
} }
buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> { buildInfo.os.isWindows && buildInfo.targetArch == "amd64" -> {
dependsOn(testNativeWindowsAmd64) dependsOn(testNativeWindowsAmd64)
@@ -109,14 +105,16 @@ val testNative by tasks.registering {
} }
} }
} }
} }
val checkNative by tasks.registering { val checkNative =
tasks.register("checkNative") {
group = "verification" group = "verification"
dependsOn(testNative) dependsOn(testNative)
} }
val buildNative by tasks.registering { val buildNative =
tasks.register("buildNative") {
group = "build" group = "build"
dependsOn(checkNative) dependsOn(checkNative)
} }
@@ -15,7 +15,7 @@
*/ */
plugins { id("com.diffplug.spotless") } plugins { id("com.diffplug.spotless") }
val pklFormatter by configurations.creating val pklFormatter = configurations.create("pklFormatter")
dependencies { pklFormatter(rootProject.project("pkl-formatter")) } dependencies { pklFormatter(rootProject.project("pkl-formatter")) }
+7 -2
View File
@@ -17,6 +17,7 @@
import org.jetbrains.gradle.ext.ActionDelegationConfig import org.jetbrains.gradle.ext.ActionDelegationConfig
import org.jetbrains.gradle.ext.ActionDelegationConfig.TestRunner.PLATFORM import org.jetbrains.gradle.ext.ActionDelegationConfig.TestRunner.PLATFORM
import org.jetbrains.gradle.ext.ProjectSettings import org.jetbrains.gradle.ext.ProjectSettings
import org.jetbrains.gradle.ext.taskTriggers
plugins { plugins {
id("pklAllProjects") id("pklAllProjects")
@@ -36,6 +37,9 @@ nexusPublishing {
} }
} }
val configureLateInitAnnotation =
tasks.register<ConfigureLateInitAnnotation>("configureLateInitAnnotation")
idea { idea {
project { project {
this as ExtensionAware this as ExtensionAware
@@ -45,13 +49,14 @@ idea {
delegateBuildRunToGradle = true delegateBuildRunToGradle = true
testRunner = PLATFORM testRunner = PLATFORM
} }
taskTriggers.afterSync(configureLateInitAnnotation)
} }
} }
} }
val clean by tasks.existing { delete(layout.buildDirectory) } val clean = tasks.named("clean") { delete(layout.buildDirectory) }
val printVersion by tasks.registering { doFirst { println(buildInfo.pklVersion) } } val printVersion = tasks.register("printVersion") { doFirst { println(buildInfo.pklVersion) } }
val message = val message =
""" """
+1 -1
View File
@@ -1,6 +1,6 @@
name: main name: main
title: Main Project title: Main Project
version: 0.32.0-dev version: 0.33.0-dev
prerelease: true prerelease: true
nav: nav:
- nav.adoc - nav.adoc
@@ -3,7 +3,7 @@
// the following attributes must be updated immediately before a release // the following attributes must be updated immediately before a release
// pkl version corresponding to current git commit without -dev suffix or git hash // pkl version corresponding to current git commit without -dev suffix or git hash
:pkl-version-no-suffix: 0.32.0 :pkl-version-no-suffix: 0.33.0
// tells whether pkl version corresponding to current git commit // tells whether pkl version corresponding to current git commit
// is a release version (:is-release-version: '') or dev version (:!is-release-version:) // is a release version (:is-release-version: '') or dev version (:!is-release-version:)
:!is-release-version: :!is-release-version:
@@ -69,6 +69,7 @@ endif::[]
:uri-stdlib-baseModule: {uri-pkl-stdlib-docs}/base :uri-stdlib-baseModule: {uri-pkl-stdlib-docs}/base
:uri-stdlib-CommandModule: {uri-pkl-stdlib-docs}/Command :uri-stdlib-CommandModule: {uri-pkl-stdlib-docs}/Command
:uri-stdlib-refModule: {uri-pkl-stdlib-docs}/ref
:uri-stdlib-analyzeModule: {uri-pkl-stdlib-docs}/analyze :uri-stdlib-analyzeModule: {uri-pkl-stdlib-docs}/analyze
:uri-stdlib-jsonnetModule: {uri-pkl-stdlib-docs}/jsonnet :uri-stdlib-jsonnetModule: {uri-pkl-stdlib-docs}/jsonnet
:uri-stdlib-reflectModule: {uri-pkl-stdlib-docs}/reflect :uri-stdlib-reflectModule: {uri-pkl-stdlib-docs}/reflect
@@ -78,8 +79,10 @@ endif::[]
:uri-stdlib-pklbinaryModule: {uri-pkl-stdlib-docs}/pklbinary :uri-stdlib-pklbinaryModule: {uri-pkl-stdlib-docs}/pklbinary
:uri-stdlib-yamlModule: {uri-pkl-stdlib-docs}/yaml :uri-stdlib-yamlModule: {uri-pkl-stdlib-docs}/yaml
:uri-stdlib-YamlParser: {uri-stdlib-yamlModule}/Parser :uri-stdlib-YamlParser: {uri-stdlib-yamlModule}/Parser
:uri-stdlib-projectModule: {uri-pkl-stdlib-docs}/Project
:uri-stdlib-evaluatorSettingsModule: {uri-pkl-stdlib-docs}/EvaluatorSettings :uri-stdlib-evaluatorSettingsModule: {uri-pkl-stdlib-docs}/EvaluatorSettings
:uri-stdlib-evaluatorSettingsHttpClass: {uri-stdlib-evaluatorSettingsModule}/Http :uri-stdlib-evaluatorSettingsHttpClass: {uri-stdlib-evaluatorSettingsModule}/Http
:uri-stdlib-evaluatorSettingsExternalReaderClass: {uri-stdlib-evaluatorSettingsModule}/ExternalReader
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean :uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
:uri-stdlib-xor: {uri-stdlib-baseModule}/Boolean#xor() :uri-stdlib-xor: {uri-stdlib-baseModule}/Boolean#xor()
:uri-stdlib-implies: {uri-stdlib-baseModule}/Boolean#implies() :uri-stdlib-implies: {uri-stdlib-baseModule}/Boolean#implies()
@@ -158,6 +161,8 @@ endif::[]
:uri-stdlib-Command-CountedFlag: {uri-stdlib-CommandModule}/CountedFlag :uri-stdlib-Command-CountedFlag: {uri-stdlib-CommandModule}/CountedFlag
:uri-stdlib-Command-Argument: {uri-stdlib-CommandModule}/Argument :uri-stdlib-Command-Argument: {uri-stdlib-CommandModule}/Argument
:uri-stdlib-Command-Import: {uri-stdlib-CommandModule}/Import :uri-stdlib-Command-Import: {uri-stdlib-CommandModule}/Import
:uri-stdlib-ref-Reference: {uri-stdlib-baseModule}/Reference
:uri-stdlib-ref-Access: {uri-stdlib-baseModule}/Access
:uri-messagepack: https://msgpack.org/index.html :uri-messagepack: https://msgpack.org/index.html
:uri-messagepack-spec: https://github.com/msgpack/msgpack/blob/master/spec.md :uri-messagepack-spec: https://github.com/msgpack/msgpack/blob/master/spec.md
@@ -187,6 +187,15 @@ The array's length is the number of slots that are filled. For example, xref:{ur
| |
| |
| |
|link:{uri-stdlib-ref-Reference}[Reference]
|`0x20`
|`<value>` (Typed)
|Domain
|`<value>`
|Data
|link:{uri-messagepack-array}[array]
|Array of link:{uri-stdlib-ref-Access}[`pkl.ref#Access`] values
|=== |===
[[type-name-encoding]] [[type-name-encoding]]
@@ -210,6 +210,11 @@ class Http {
/// ///
/// Each rewrite must start with `http://` or `https://`, and must end with `/`. /// Each rewrite must start with `http://` or `https://`, and must end with `/`.
rewrites: Mapping<String, String>? rewrites: Mapping<String, String>?
/// HTTP headers.
/// Each entry key is a glob pattern that is matched against outbound request URLs.
/// Each value is a map of headers that is added to the matching request.
headers: Mapping<String, Mapping<String, Listing<String>>>?
} }
/// Settings that control how Pkl talks to HTTP proxies. /// Settings that control how Pkl talks to HTTP proxies.
+5 -5
View File
@@ -56,7 +56,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
---- ----
@@ -75,7 +75,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
endif::[] endif::[]
} }
---- ----
@@ -99,9 +99,9 @@ ifndef::is-release-version[]
<repository> <repository>
<id>sonatype-s01</id> <id>sonatype-s01</id>
<name>Sonatype S01</name> <name>Sonatype S01</name>
<url>{uri-sonatype}</url> <url>{uri-snapshot-repo}</url>
</repository> </repository>
</repositories> </repositories>
endif::[] endif::[]
</project> </project>
---- ----
@@ -198,7 +198,7 @@ For Spring Boot applications, and for users of `pkl-config-java` compiling the g
.--non-null-annotation .--non-null-annotation
[%collapsible] [%collapsible]
==== ====
Default: `org.pkl.config.java.mapper.NonNull` + Default: `org.jspecify.annotations.NonNull` +
Fully qualified name of the annotation type to use for annotating non-null types. + Fully qualified name of the annotation type to use for annotating non-null types. +
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)` The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
or the generated code may not compile. or the generated code may not compile.
@@ -45,7 +45,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
---- ----
@@ -66,7 +66,7 @@ repositories {
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
repositories { repositories {
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
} }
endif::[] endif::[]
---- ----
@@ -92,7 +92,7 @@ ifndef::is-release-version[]
<repository> <repository>
<id>sonatype-s01</id> <id>sonatype-s01</id>
<name>Sonatype S01</name> <name>Sonatype S01</name>
<url>{uri-sonatype}</url> <url>{uri-snapshot-repo}</url>
</repository> </repository>
</repositories> </repositories>
endif::[] endif::[]
@@ -46,7 +46,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
---- ----
@@ -65,7 +65,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
endif::[] endif::[]
} }
---- ----
@@ -34,7 +34,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
---- ----
@@ -53,7 +53,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
endif::[] endif::[]
} }
---- ----
@@ -77,7 +77,7 @@ ifndef::is-release-version[]
<repository> <repository>
<id>sonatype-s01</id> <id>sonatype-s01</id>
<name>Sonatype S01</name> <name>Sonatype S01</name>
<url>{uri-sonatype}</url> <url>{uri-snapshot-repo}</url>
</repository> </repository>
</repositories> </repositories>
endif::[] endif::[]
File diff suppressed because it is too large Load Diff
+18 -15
View File
@@ -4,7 +4,6 @@ include::ROOT:partial$component-attributes.adoc[]
:uri-mise: https://mise.jdx.dev :uri-mise: https://mise.jdx.dev
:uri-winget: https://learn.microsoft.com/en-us/windows/package-manager/ :uri-winget: https://learn.microsoft.com/en-us/windows/package-manager/
:uri-pkl-macos-amd64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-macos-amd64&e=bin
:uri-pkl-macos-aarch64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-macos-aarch64&e=bin :uri-pkl-macos-aarch64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-macos-aarch64&e=bin
:uri-pkl-linux-amd64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-linux-amd64&e=bin :uri-pkl-linux-amd64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-linux-amd64&e=bin
:uri-pkl-linux-aarch64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-linux-aarch64&e=bin :uri-pkl-linux-aarch64-download: {uri-sonatype-snapshot-download}&a=pkl-cli-linux-aarch64&e=bin
@@ -13,7 +12,6 @@ include::ROOT:partial$component-attributes.adoc[]
:uri-pkl-java-download: {uri-sonatype-snapshot-download}&a=pkl-cli-java&e=jar :uri-pkl-java-download: {uri-sonatype-snapshot-download}&a=pkl-cli-java&e=jar
ifdef::is-release-version[] ifdef::is-release-version[]
:uri-pkl-macos-amd64-download: {github-releases}/pkl-macos-amd64
:uri-pkl-macos-aarch64-download: {github-releases}/pkl-macos-aarch64 :uri-pkl-macos-aarch64-download: {github-releases}/pkl-macos-aarch64
:uri-pkl-linux-amd64-download: {github-releases}/pkl-linux-amd64 :uri-pkl-linux-amd64-download: {github-releases}/pkl-linux-amd64
:uri-pkl-linux-aarch64-download: {github-releases}/pkl-linux-aarch64 :uri-pkl-linux-aarch64-download: {github-releases}/pkl-linux-aarch64
@@ -36,7 +34,7 @@ For interactive development, the CLI includes a Read-Eval-Print Loop (REPL).
The CLI comes in multiple flavors: The CLI comes in multiple flavors:
* Native macOS executable for amd64 (tested on macOS 10.15) * Native macOS executable for aarch64 (tested on macOS 10.15)
* Native Linux executable for amd64 * Native Linux executable for amd64
* Native Linux executable for aarch64 * Native Linux executable for aarch64
* Native Alpine Linux executable for amd64 (cross-compiled and tested on Oracle Linux 8) * Native Alpine Linux executable for amd64 (cross-compiled and tested on Oracle Linux 8)
@@ -140,8 +138,6 @@ Development and release versions can be downloaded and installed manually.
=== macOS Executable === macOS Executable
On aarch64:
[source,shell] [source,shell]
[subs="+attributes"] [subs="+attributes"]
---- ----
@@ -150,16 +146,6 @@ chmod +x pkl
./pkl --version ./pkl --version
---- ----
On amd64:
[source,shell]
[subs="+attributes"]
----
curl -L -o pkl '{uri-pkl-macos-amd64-download}'
chmod +x pkl
./pkl --version
----
This should print something similar to: This should print something similar to:
[source] [source]
@@ -546,6 +532,15 @@ When enabled, test failures will show intermediate values in the assertion expre
Use `--no-power-assertions` to disable this feature if you prefer simpler output. Use `--no-power-assertions` to disable this feature if you prefer simpler output.
==== ====
[[test-reporter]]
.--test-reporter
[%collapsible]
====
Default: `spec` +
Example: `--test-reporter minimal` +
Which test reporter to use for CLI output. Possible values are `spec` and `minimal`.
====
This command also takes <<common-options, common options>>. This command also takes <<common-options, common options>>.
[[command-run]] [[command-run]]
@@ -667,6 +662,14 @@ Force generation of expected examples. +
The old expected files will be deleted if present. The old expected files will be deleted if present.
==== ====
.--test-reporter
[%collapsible]
====
Default: `spec` +
Example: `--test-reporter minimal` +
Which test reporter to use for CLI output. Possible values are `spec` and `minimal`.
====
This command also takes <<common-options,common options>>. This command also takes <<common-options,common options>>.
[[command-project-resolve]] [[command-project-resolve]]
@@ -158,6 +158,23 @@ This option is commonly used to enable package mirroring.
The above example will rewrite URL `\https://pkg.pkl-lang.org/pkl-k8s/k8s@1.0.0` to `\https://my.internal.mirror/pkl-k8s/k8s@1.0.0`. The above example will rewrite URL `\https://pkg.pkl-lang.org/pkl-k8s/k8s@1.0.0` to `\https://my.internal.mirror/pkl-k8s/k8s@1.0.0`.
==== ====
.--http-header
[%collapsible]
====
Default: (none) +
Example: `**=User-Agent: My User Agent` +
Additional headers to add to outbound HTTP requests.
The syntax is `<glob pattern>=<header name>:<header value>`, and any whitespace after the leading colon is trimmed.
The glob pattern is used to match against the URLs of outbound HTTP calls, and the value is the header name and value to add.
In the case of multiple matches, every header is added.
To describe a prefix match, the `\\**` wildcard should be added to the pattern.
For example, `https?://example.com/**` matches against every request to host `example.com`.
====
.--trace-mode .--trace-mode
[%collapsible] [%collapsible]
==== ====
+3 -3
View File
@@ -44,7 +44,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
---- ----
@@ -63,7 +63,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
endif::[] endif::[]
} }
---- ----
@@ -87,7 +87,7 @@ ifndef::is-release-version[]
<repository> <repository>
<id>sonatype-s01</id> <id>sonatype-s01</id>
<name>Sonatype S01</name> <name>Sonatype S01</name>
<url>{uri-sonatype}</url> <url>{uri-snapshot-repo}</url>
</repository> </repository>
</repositories> </repositories>
endif::[] endif::[]
+5 -8
View File
@@ -5,7 +5,6 @@ include::ROOT:partial$component-attributes.adoc[]
:uri-DocPackageInfo: {uri-pkl-stdlib-docs}/DocPackageInfo/ :uri-DocPackageInfo: {uri-pkl-stdlib-docs}/DocPackageInfo/
:uri-CliDocGenerator: {uri-pkl-doc-main-sources}/CliDocGenerator.kt :uri-CliDocGenerator: {uri-pkl-doc-main-sources}/CliDocGenerator.kt
:uri-DocGenerator: {uri-pkl-doc-main-sources}/DocGenerator.kt :uri-DocGenerator: {uri-pkl-doc-main-sources}/DocGenerator.kt
:uri-pkldoc-macos-amd64-download: {uri-sonatype-snapshot-download}&a=pkldoc-macos-amd64&e=bin
:uri-pkldoc-macos-aarch64-download: {uri-sonatype-snapshot-download}&a=pkldoc-macos-aarch64&e=bin :uri-pkldoc-macos-aarch64-download: {uri-sonatype-snapshot-download}&a=pkldoc-macos-aarch64&e=bin
:uri-pkldoc-linux-amd64-download: {uri-sonatype-snapshot-download}&a=pkldoc-linux-amd64&e=bin :uri-pkldoc-linux-amd64-download: {uri-sonatype-snapshot-download}&a=pkldoc-linux-amd64&e=bin
:uri-pkldoc-linux-aarch64-download: {uri-sonatype-snapshot-download}&a=pkldoc-linux-aarch64&e=bin :uri-pkldoc-linux-aarch64-download: {uri-sonatype-snapshot-download}&a=pkldoc-linux-aarch64&e=bin
@@ -14,7 +13,6 @@ include::ROOT:partial$component-attributes.adoc[]
:uri-pkldoc-java-download: {uri-sonatype-snapshot-download}&a=pkldoc-java&e=jar :uri-pkldoc-java-download: {uri-sonatype-snapshot-download}&a=pkldoc-java&e=jar
ifdef::is-release-version[] ifdef::is-release-version[]
:uri-pkldoc-macos-amd64-download: {github-releases}/pkldoc-macos-amd64
:uri-pkldoc-macos-aarch64-download: {github-releases}/pkldoc-macos-aarch64 :uri-pkldoc-macos-aarch64-download: {github-releases}/pkldoc-macos-aarch64
:uri-pkldoc-linux-amd64-download: {github-releases}/pkldoc-linux-amd64 :uri-pkldoc-linux-amd64-download: {github-releases}/pkldoc-linux-amd64
:uri-pkldoc-linux-aarch64-download: {github-releases}/pkldoc-linux-aarch64 :uri-pkldoc-linux-aarch64-download: {github-releases}/pkldoc-linux-aarch64
@@ -117,7 +115,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
---- ----
@@ -136,7 +134,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
endif::[] endif::[]
} }
---- ----
@@ -160,7 +158,7 @@ ifndef::is-release-version[]
<repository> <repository>
<id>sonatype-s01</id> <id>sonatype-s01</id>
<name>Sonatype S01</name> <name>Sonatype S01</name>
<url>{uri-sonatype}</url> <url>{uri-snapshot-repo}</url>
</repository> </repository>
</repositories> </repositories>
endif::[] endif::[]
@@ -172,7 +170,7 @@ endif::[]
The CLI comes in multiple flavors: The CLI comes in multiple flavors:
* Native macOS executable for amd64 (tested on macOS 10.15) * Native macOS executable for aarch64 (tested on macOS 10.15)
* Native Linux executable for amd64 * Native Linux executable for amd64
* Native Linux executable for aarch64 * Native Linux executable for aarch64
* Native Alpine Linux executable for amd64 (cross-compiled and tested on Oracle Linux 8) * Native Alpine Linux executable for amd64 (cross-compiled and tested on Oracle Linux 8)
@@ -192,7 +190,6 @@ However, it requires a Java 17 (or higher) runtime on the system path, and has a
Download links: Download links:
* macOS aarch64: {uri-pkldoc-macos-aarch64-download} * macOS aarch64: {uri-pkldoc-macos-aarch64-download}
* macOS amd64: {uri-pkldoc-macos-amd64-download}
* Linux aarch64: {uri-pkldoc-linux-aarch64-download} * Linux aarch64: {uri-pkldoc-linux-aarch64-download}
* Linux amd64: {uri-pkldoc-linux-amd64-download} * Linux amd64: {uri-pkldoc-linux-amd64-download}
* Alpine Linux amd64: {uri-pkldoc-alpine-download} * Alpine Linux amd64: {uri-pkldoc-alpine-download}
@@ -204,7 +201,7 @@ Download links:
The Pkldoc tool is offered as Gradle plugin, Java library, and CLI. The Pkldoc tool is offered as Gradle plugin, Java library, and CLI.
It can generate documentation either for modules directly, or generate documentation for _package uris_. It can generate documentation either for modules directly, or generate documentation for _package uris_.
The tool requires an argument of a module named _docsite-info.pkl_, that amends link:{uri-DocsiteInfo}[pkl.DocsiteInfo]. The tool accepts an optional argument of a module named _docsite-info.pkl_, that amends link:{uri-DocsiteInfo}[pkl.DocsiteInfo].
[discrete] [discrete]
==== Generating documentation for modules directly ==== Generating documentation for modules directly
+20 -3
View File
@@ -51,7 +51,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven(url = "{uri-sonatype}") maven(url = "{uri-snapshot-repo}")
endif::[] endif::[]
} }
} }
@@ -76,7 +76,7 @@ ifdef::is-release-version[]
mavenCentral() mavenCentral()
endif::[] endif::[]
ifndef::is-release-version[] ifndef::is-release-version[]
maven { url "{uri-sonatype}" } maven { url "{uri-snapshot-repo}" }
endif::[] endif::[]
} }
} }
@@ -322,6 +322,15 @@ Default: `false` +
Whether to ignore expected example files and generate them again. Whether to ignore expected example files and generate them again.
==== ====
[[test-reporter]]
.testReporter: Property<String>
[%collapsible]
====
Default: `"spec"` +
Example: `reporter = "minimal"` +
Which test reporter to use for CLI output. Possible values are `"spec"` and `"minimal"`.
====
[[power-assertions-test]] [[power-assertions-test]]
.powerAssertions: Property<Boolean> .powerAssertions: Property<Boolean>
[%collapsible] [%collapsible]
@@ -414,7 +423,7 @@ For Spring Boot applications, and for users of `pkl-config-java` compiling the g
.nonNullAnnotation: Property<String> .nonNullAnnotation: Property<String>
[%collapsible] [%collapsible]
==== ====
Default: `"org.pkl.config.java.mapper.NonNull"` + Default: `"org.jspecify.annotations.NonNull"` +
Example: `nonNullAnnotation = "org.project.MyAnnotation"` + Example: `nonNullAnnotation = "org.project.MyAnnotation"` +
Fully qualified name of the annotation type to use for annotating non-null types. + Fully qualified name of the annotation type to use for annotating non-null types. +
The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)` The specified annotation type must be annotated with `@java.lang.annotation.Target(ElementType.TYPE_USE)`
@@ -677,6 +686,14 @@ Default: `false` +
Whether to ignore expected example files and generate them again. Whether to ignore expected example files and generate them again.
==== ====
.testReporter: Property<String>
[%collapsible]
====
Default: `"spec"` +
Example: `reporter = "minimal"` +
Which test reporter to use for CLI output. Possible values are `"spec"` and `"minimal"`.
====
Common properties: Common properties:
include::../partials/gradle-common-properties.adoc[] include::../partials/gradle-common-properties.adoc[]
@@ -119,6 +119,19 @@ This option is commonly used to enable package mirroring.
The above example will rewrite URL `\https://pkg.pkl-lang.org/pkl-k8s/k8s@1.0.0` to `\https://my.internal.mirror/pkl-k8s/k8s@1.0.0`. The above example will rewrite URL `\https://pkg.pkl-lang.org/pkl-k8s/k8s@1.0.0` to `\https://my.internal.mirror/pkl-k8s/k8s@1.0.0`.
==== ====
.httpHeaders: MapProperty<String, Map<String, List<String>>>
[%collapsible]
====
Default: `null` +
Example: `httpHeaders = ["**": ["User-Agent": ["My User Agent"]]]` +
Additional headers to add to outbound HTTP requests.
The key is a glob pattern that is used to match against the URLs of outbound HTTP calls, and the value is the header name and values to add.
Each header value becomes its own HTTP header.
To describe a prefix match, the `\\**` wildcard should be added to the pattern.
For example, `https?://example.com/**` matches against every request to host `example.com`.
====
.powerAssertions: Property<Boolean> .powerAssertions: Property<Boolean>
[%collapsible] [%collapsible]
==== ====
+541 -30
View File
@@ -1,60 +1,571 @@
= Pkl 0.32.0 Release Notes = Pkl 0.32 Release Notes
:version: 0.32 :version: 0.32
:version-minor: 0.32.0 :version-minor: 0.32.0
:release-date: TBD :release-date: July 8th, 2026
:version-next: 0.33 :version-next: 0.33
:version-next-date: TBD :version-next-date: October 2026
include::partial$intro.adoc[] include::partial$intro.adoc[]
NOTE: This is the final release that distributes binaries for macOS/amd64.
== Highlights [small]#💖# == Highlights [small]#💖#
News you don't want to miss. === New data type: `Reference`
.XXX This release introduces a new data type called `Reference` (https://github.com/apple/pkl/pull/1354[#1354], https://github.com/apple/pkl/pull/1691[#1691], https://github.com/apple/pkl/pull/1692[#1692], https://github.com/apple/pkl/pull/1693[#1693], https://github.com/apple/pkl/pull/1695[#1695]).
[%collapsible]
WARNING: This API is experimental. We are looking for feedback, and will aim to make this ready for production use in the next release.
A reference represents something whose actual value is unknown to Pkl, but nevertheless its type is checked.
The purpose of this data type is to improve how Pkl can be used to configure systems like GitHub Actions, Pulumi, Terraform, and more.
For example, let's assume that some system accepts YAML configuration that looks like so:
[source,yaml]
----
taskA:
uses: some-task
taskB:
uses: some-other-task
input: '${ taskA.output.number }'
----
In terms of YAML, `'${ taskA.output.number }'` is just a string.
However, semantically, it is an _expression_ in this target system, where `taskA.output.number` conveys some type.
Today, the only way to treat these values in Pkl is to also describe these as strings.
This introduces many shortcomings:
1. It leaves users vulnerable to syntax errors in this system.
2. It's hard to validate these beyond that they are a string.
3. Pkl has no understanding of the relationship between `taskA` and `taskB`.
With references, the above can be modeled in Pkl also as plain lookups:
[source,pkl]
----
taskA {
uses = "some-task"
}
taskB {
name = "some-other-task"
input = taskA.output.number
}
----
Library authors describe types as `ref.Reference<D, T>`, where `D` is the _domain_, and `T` is the _referent type_.
[source,pkl]
----
import "pkl:ref"
class MyDomain extends ref.Domain { // <1>
function renderReference(ref: ref.Reference<MyDomain, Any>): String =
"${ " + ref.getData() + "." + ref.getPath().join(".") + " }"
}
typealias MyReference<T> = ref.Reference<MyDomain, T> // <2>
class MyTask {
input: MyReference<Number>
}
----
<1> References exist inside a domain. The domain defines how these references should be stringified.
<2> A typealias can be used to improve ergonomics when declaring references that share the same domain.
Pkl will check that type arguments match up:
* The referent type must line up.
+
`MyReference<Int>` is not assignable to `MyReference<String>`.
* The domain must line up.
+
`ref.Reference<MyDomain, Int>` is not assignable to `ref.Reference<OtherDomain, Int>`.
Additionally, references give you synthetic members.
[source,pkl]
----
class Bird {
name: String
}
bird: MyReference<Bird>
birdName = bird.name // <1>
----
<1> Gives a `MyReference<String>`, because `class Bird` has property `name: String`
The synthetic member contains metadata about the path that was used to access it (`.name` in this
case).
This can be used to stringify this reference in that target domain.
To read more about references, consult the xref:language-reference:index.adoc#references[language reference].
To read through the design decisions made, consult the https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0020-type-safe-deferred-references.adoc[SPICE].
=== Custom HTTP Headers
Pkl can now attach custom HTTP headers to outbound requests, making it possible to access private or authenticated resources (https://github.com/apple/pkl/pull/1196[#1196], https://github.com/apple/pkl/pull/1584[#1584]).
For example, a CLI user can add an `Authorization` header either in settings.pkl, or the PklProject file:
[tabs]
==== ====
XXX ~/.pkl/settings.pkl::
+
[source,pkl]
----
amends "pkl:settings"
http {
headers {
["https://my.private.server/**"] {
["Authorization"] = "Bearer my-secret-token"
}
}
}
----
PklProject::
+
[source,pkl]
----
amends "pkl:Project"
evaluatorSettings {
http {
headers {
["https://my.private.server/**"] {
["Authorization"] = "Bearer my-secret-token"
}
}
}
}
----
==== ====
Each key in `headers` is a glob pattern matched against the request URL.
When a request is made, every matching pattern's headers are added to the request.
Headers can also be configured in other ways:
* In the pkl-gradle plugin
* As a CLI flag
* In the Java/Swift/Go/Kotlin evaluator APIs
* In the pkl-executor API
Header names must conform to RFC 7230 token syntax.
Certain reserved names (e.g. `host`, `connection`, `content-length`) and prefixes (`proxy-`, `sec-`) are forbidden.
Thank you to https://github.com/kyokuping[@kyokuping] for their contributions to this feature!
To learn more, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0022-http-headers.adoc[SPICE-0022].
== Noteworthy [small]#🎶# == Noteworthy [small]#🎶#
Ready when you need them. === Resolved evaluator settings
.XXX PklProject files now resolve evaluator settings that are file paths (https://github.com/apple/pkl/pull/1394[#1394]).
[%collapsible]
==== Some of the settings within `pkl:EvaluatorSettings` represent file paths.
XXX However, these paths are resolved inconsistently:
====
* Pkl is inconsistent about what relative paths mean. `rootDir`, `moduleCacheDir`, and `modulePath` are relative to the project dir, while `ExternalReader.executable` is relative to the PWD.
* External readers defined in a PklProject have different behavior depending on the PWD.
* The logic for resolving these paths is dependent on the caller, rather than Pkl.
For CLI users, this means that the current working directory can affect how evaluator settings are loaded.
In Pkl 0.32, these paths are resolved entirely within Pkl, and resolved against the enclosing directory.
A new method `resolve()` is added to `pkl:EvaluatorSettings`, and a new property `resolvedEvaluatorSettings` is added to `pkl:Project`.
Language bindings are expected to use `resolvedEvaluatorSettings` when configuring the evaluator.
To read more about this change, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0027-resolved-paths-in-pkl-evaluatorsettings.adoc[SPICE-0027].
=== Line continuations in multiline strings
When authoring multiline strings, it is now possible to use a _line continuation_ to break a single line's value over multiple lines (https://github.com/apple/pkl/pull/1507[#1507], https://github.com/apple/pkl/pull/1564[#1564]).
These two string snippets are logically identical:
[source,pkl]
----
str =
"""
Although the Dodo is extinct, \
the species will be remembered.
"""
----
[source%parsed,pkl]
----
str = "Although the Dodo is extinct, the species will be remembered."
----
To read more about this design, consult https://github.com/apple/pkl-evolution/blob/main/spices/SPICE-0028-multiline-string-continuation.adoc[SPICE-0028].
[[parse-time-variable-resolution]]
=== Parse-time variable resolution
Pkl now resolves variables at parse time (https://github.com/apple/pkl/pull/1429[#1429], https://github.com/apple/pkl/pull/1622[#1622], https://github.com/apple/pkl/pull/1634[#1634], https://github.com/apple/pkl/pull/1706[#1706]).
Currently, Pkl defers the resolution of variable names to when the node is executed.
In Pkl 0.32, these are resolved when the file is parsed.
This is a pre-requisite feature for many upcoming features, such as flat member syntax and method varargs.
Additionally, this enables some runtime optimizations, including let expressions.
[[let-expression-improvements]]
=== Let expression performance improvements
Performance improvements were made to the handling of xref:language-reference:index.adoc#let-expressions[let expressions] (https://github.com/apple/pkl/pull/1622[#1622], https://github.com/apple/pkl/pull/1634[#1634]).
Here is a sample benchmark:
[source,pkl]
----
amends "pkl:Benchmark"
microbenchmarks {
["let"] {
expression =
let (a = 1)
let (b = 2)
let (c = 3)
let (d = 4)
let (e = 1)
let (f = 2)
let (g = 3)
let (h = 4)
let (i = 1)
let (j = 2)
let (k = 3)
let (l = 4)
let (m = 1)
let (n = 2)
let (o = 3)
let (p = 4)
let (q = 1)
let (r = 2)
let (s = 3)
let (t = 4)
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t
}
}
output {
renderer {
converters {
[Duration] = (it: Duration) -> super[Duration].apply(it.toUnit("ns"))
}
}
}
----
And here are the results when run on a MacBook Pro M4 Max machine: `jpkl` is about 12x faster, while native `pkl` is about 4000x faster:
|===
|Variant |Results (mean)
|jpkl
|1208.06.ns -> 97.76.ns
|pkl
|1275.96.ns -> 0.32.ns
|===
=== Test reporter
A test reporter option is added when running tests (https://github.com/apple/pkl/pull/1563[#1563], https://github.com/apple/pkl/pull/1597[#1597]).
A new CLI flag, `--test-reporter`, is now available to the `pkl test` and `pkl project package` commands.
This flag accepts the name of a test reporter to be used to format test result output.
There are two possible reporters:
* `spec` (default) - the current reporter
* `minimal` - a reporter that only emits failing tests
This option is also available to pkl-gradle users.
=== Dependency notation improvements
Pkl's evaluator now accepts https://pkl-lang.org/main/current/language-reference/index.html#dependency-notation[dependency notation URIs] as source modules (https://github.com/apple/pkl/pull/1595[#1595]).
In Pkl 0.31, we introduced xref:0.31.adoc#cli-dependency-notation[CLI support for dependency notation].
Now, this support has been extended to the evaluator itself.
This means that users of Pkl's various language bindings can also use dependency notation.
Additionally, the limitation on local dependencies has been dropped.
=== pkldoc supports single-package docsites
pkldoc has improved support for single-package documentation websites (https://github.com/apple/pkl/pull/1592[#1592]).
When a docsite has only one package name, and also no overview from a `docsite-info.pkl`, the resulting docsite does not have a top-level package index page.
Instead, it redirects to the package page, and omits the site-level element from the breadcrumb.
=== Allowed package imports in `PklProject`
PklProject files can now import xref:language-reference:index.adoc#package-asset-uri[package asset URIs] (https://github.com/apple/pkl/pull/1547[#1547]).
This means that it is now possible to centralize and share common configurations across multiple projects.
=== Java Library Changes
==== Switch to JSpecify annotations
Pkl has switched to using https://jspecify.dev[JSpecify] for annotating nullability (https://github.com/apple/pkl/pull/1515[#1515], https://github.com/apple/pkl/pull/1527[#1527], https://github.com/apple/pkl/pull/1528[#1528], https://github.com/apple/pkl/pull/1530[#1530], https://github.com/apple/pkl/pull/1544[#1544], https://github.com/apple/pkl/pull/1601[#1601], https://github.com/apple/pkl/pull/1607[#1607]).
Currently, Pkl uses annotations from the `com.google.code.findbugs:jsr305` library.
This suffers from some issues:
* The https://jcp.org/en/jsr/detail?id=305[JSR-305 proposal] itself is dormant and unlikely to be adopted.
* The `com.google.code.findbugs:jsr305` library contributes packages to `javax`, which violates the https://www.oracle.com/downloads/licenses/binary-code-license.html[Oracle Binary Code License Agreement].
In contrast, JSpecify is widely seen as the standard for nullability annotations, and is already understood by most tools.
This impacts Pkl's Java APIs; methods previously annotated using JSR-305 nullability annotations now use JSpecify.
Additionally, the Java code generator now emits JSpecify annotations by default.
==== New API: `org.pkl.config.java.ConfigDecoder`
A new API is introduced called `org.pkl.config.java.ConfigDecoder` (https://github.com/apple/pkl/pull/1533[#1533]).
Currently, the `org.pkl.config.java.Config` interface mixes configuration representation with decoding logic.
To better separate these concerns, a new API is introduced for decoding.
Example:
[source,java]
----
class Main {
Config getConfig() {
var decoder = new ConfigDecoderBuilder().preconfigured().build();
return decoder.decode(bytes);
}
}
----
==== New `asNullable` methods in `pkl.config.java`
New methods are added for decoding into nullable types (https://github.com/apple/pkl/pull/1544[#1544]).
The following methods are introduced:
* `org.pkl.config.java.Config.asNullable`
* `org.pkl.config.java.JavaType.pairOfNullableFirst`
* `org.pkl.config.java.JavaType.pairOfNullableSecond`
* `org.pkl.config.java.JavaType.pairOfNullableFirstAndSecond`
* `org.pkl.config.java.JavaType.arrayOfNullable`
* `org.pkl.config.java.JavaType.iterableOfNullable`
* `org.pkl.config.java.JavaType.collectionOfNullable`
* `org.pkl.config.java.JavaType.listOfNullable`
* `org.pkl.config.java.JavaType.setOfNullable`
* `org.pkl.config.java.JavaType.mapOfNullableKeys`
* `org.pkl.config.java.JavaType.mapOfNullableValues`
* `org.pkl.config.java.JavaType.mapOfNullableKeysAndValues`
NOTE: `org.pkl.config.java.Config.as` can also return a `null` value. In a future release, this method will have a runtime non-null assertion.
==== `pkl-formatter` migrated to Java
The `pkl-formatter` library has been migrated from Kotlin to Java (https://github.com/apple/pkl/pull/1514[#1514]).
Therefore, its Kotlin dependency is dropped.
=== Standard Library Changes
==== `pkl:EvaluatorSettings`
* New method: link:{uri-stdlib-evaluatorSettingsModule}#resolve()[`EvaluatorSettings.resolve()`]
* New method: link:{uri-stdlib-evaluatorSettingsModule}#resolveForOs()[`EvaluatorSettings.resolveForOs()`]
* New property: link:{uri-stdlib-evaluatorSettingsExternalReaderClass}#workingDir[`EvaluatorSettings#ExternalReader.workingDir`]
* New property: link:{uri-stdlib-evaluatorSettingsHttpClass}#headers[`EvaluatorSettings#Http.headers`]
* New typealias: link:{uri-stdlib-evaluatorSettingsModule}#HttpHeaders[`EvaluatorSettings.HttpHeaders`]
* New typealias: link:{uri-stdlib-evaluatorSettingsModule}#HttpHeaderName[`EvaluatorSettings.HttpHeaderName`]
* New typealias: link:{uri-stdlib-evaluatorSettingsModule}#HttpHeaderValue[`EvaluatorSettings.HttpHeaderValue`]
==== `pkl:base`
* New property: link:{uri-stdlib-baseModule}/String#isGlobPattern[`String.isGlobPattern`]
==== `pkl:Project`
* New property: link:{uri-stdlib-projectModule}#resolvedEvaluatorSettings[`Project.resolvedEvaluatorSettings`]
==== `pkl:ref`
* New module introduced.
=== pkl-gradle changes
The following changes have been made to pkl-gradle.
==== Support for external readers
External readers can now be configured when configuring evaluators (https://github.com/apple/pkl/pull/1578[#1578]).
For example:
[source,kotlin]
----
val myPklTask by pkl.evaluators.creating {
val foo by externalModuleReaders.creating {
executable = "pkl-foo-reader"
arguments = listOf("--bar", "baz")
}
}
----
==== Support for module/resource readers from SPI
Gradle users can now add module/resource readers by registering a service via the Java SPI mechanism (https://github.com/apple/pkl/pull/1581[#1581]).
==== Support for Gradle configuration cache
The plugin now supports the Gradle configuration cache feature (https://github.com/apple/pkl/issues/1425[#1425]).
Thanks to https://github.com/ffluk3[@ffluk3] for their contributions to this feature!
== Breaking Changes [small]#💔# == Breaking Changes [small]#💔#
Things to watch out for when upgrading. === Name resolution changes
=== Removed Java APIs Variables are now <<parse-time-variable-resolution,resolved at parse time>>.
The following APIs have been removed without replacement. As part of this change, some names are resolved differently.
* `org.pkl.config.java.Config#makeConfig` (pr:https://github.com/apple/pkl/pull/1531[]) Take the following code:
.XXX [source,pkl]
[%collapsible] ----
==== qux = "outer"
XXX
====
== Work In Progress [small]#🚆# foo {
when (cond) {
qux = "inner"
}
res = qux
}
----
They missed the train but deserve a mention. Currently, `res = qux` will eval to either `res = "outer"` or `res = "inner"` depending on whether `cond` evals to `true` or not.
This is a lexical lookup that is either one level up, or zero levels up, depending on the result of code execution.
.XXX This type of resolution is not possible at parse time, because we do not know what `cond` executes to.
[%collapsible] In Pkl 0.32, `res` will always resolve to the inner `qux`, and this snippet will throw if the when generator does not fire.
====
XXX === Java API changes
====
The following breaking changes have been made to the Java API.
* `org.pkl.config.java.Config#makeConfig`
+
Removed without replacement
* `org.pkl.config.java.Config.fromPklBinary`
+
Deprecated, replaced with `org.pkl.config.java.ConfigDecoder`
* `org.pkl.config.java.mapper.NonNull`
+
Deprecated, replaced with `org.jspecify.annotations.NonNull`
* `org.pkl.core.evaluatorSettings.PklEvaluatorSettings.parse`
+
No longer accepts `pathNormalizer` argument
* `org.pkl.formatter.Formatter`
** Pass `GrammarVersion` to constructor instead of each `format` method
** Replace `format(Path): String` with `format(Reader, Appendable)`
** Mark as `throws IOException`
** Deprecate methods that accept `GrammarVersion` as an argument
=== Loading rule changes in `pkl:EvaluatorSettings`
Breaking changes have been made to how evaluator settings are loaded when using `PklProject` (https://github.com/apple/pkl/pull/1394[#1394]).
==== Loading rule changes for the external reader executable
The following changes have been made for the `executable` property in an external reader:
* If the executable does not contain a slash (`/` on POSIX, `\` on Windows) character, it is always resolved against the `PATH` environment variable.
* If it does contain a slash, it is resolved relative to the enclosing PklProject directory, instead of the current working directory.
=== Changes to `--external-module-reader` and `--external-resource-reader` CLI flags
The `--external-module-reader` and `--external-resource-reader` CLI flags will _replace_ any external readers otherwise configured within a PklProject, instead of add to it (https://github.com/apple/pkl/pull/1394[#1394]).
This makes this behavior consistent with how other settings work.
== Bug Fixes [small]#🐜#
The following bugs have been fixed.
* Data race in MessagePack encoder during concurrent server sends (https://github.com/apple/pkl/issues/1486[#1486])
* pkl-doc library publishes incorrect Maven dependency scopes (https://github.com/apple/pkl/issues/1517[#1517])
* Re-using pklbinary#Renderer during rendering results in incorrect output (https://github.com/apple/pkl/pull/1525[#1525])
* Cannot glob using subpatterns inside a project dependency (https://github.com/apple/pkl/issues/1545[#1545])
* Project package command incompatible with glob imports on Windows (https://github.com/apple/pkl/issues/1556[#1556])
* Thrown PklBugException when using power assertions with unavailable source sections (https://github.com/apple/pkl/pull/1571[#1571])
* pkl-doc: DocGenerator never shuts down its thread pool (https://github.com/apple/pkl/issues/1583[#1583])
* Imports gathering Gradle task can fail with a confusing exception (https://github.com/apple/pkl/issues/1591[#1591])
* HTTP rewrite fails with PklBugException under tr-TR locale when host contains 'I' (https://github.com/apple/pkl/issues/1617[#1617])
* Formatter bug fixes (https://github.com/apple/pkl/pull/1619[#1619])
* Unrelated error message thrown when computing an error message (https://github.com/apple/pkl/pull/1629[#1629])
* pkl-binary serialization produces an incomplete msgpack value in the presence of local properties (https://github.com/apple/pkl/issues/1631[#1631]).
* Poor parser error message (https://github.com/apple/pkl/issues/1638[#1638])
* relativePathTo does not check if receiver is a module (https://github.com/apple/pkl/issues/1649[#1649])
* `Int` overflow on multiplication throws unexpected exception (https://github.com/apple/pkl/issues/1651[#1651])
* Incorrect eager check for `Map` type (https://github.com/apple/pkl/issues/1653[#1653])
* Incorrect `toRadixString()` for `math.minInt` (https://github.com/apple/pkl/issues/1655[#1655])
* `Evaluator.evaluateSchema()` throws if properties are annotated with `@ConvertProperty` (https://github.com/apple/pkl/issues/1657[#1657])
* `String.padStart` and `String.padEnd` return incorrect strings sometimes (https://github.com/apple/pkl/issues/1661[#1661])
* `String.getOrNull` crashes with certain strings (https://github.com/apple/pkl/issues/1662[#1662])
* Incorrect facts in `pkl:base` doc comments (https://github.com/apple/pkl/pull/1669[#1669])
* Index-based methods on Set aren't implemented (https://github.com/apple/pkl/issues/1682[#1682])
* pkl-gradle throws exception when a Pkl task can't create an evaluator during configuration time (https://github.com/apple/pkl/pull/1684[#1684])
* Unrelated exception gets thrown when validating elements/entries in objects (https://github.com/apple/pkl/issues/1697[#1697])
* Type argument is lost in constraint expressions within generic typealiases (https://github.com/apple/pkl/issues/1705[#1705])
* Typealiases with type var as root are broken (https://github.com/apple/pkl/issues/1711[#1711])
* Incorrect `List`/`Set`/`Map`/`Listing`/`Mapping`/union type check behavior through typealiases (https://github.com/apple/pkl/issues/1710[#1710])
* Type aliases with type var as root are broken (https://github.com/apple/pkl/issues/1711[#1711])
* Type checks through aliases are always run lazily even when they should be eager (https://github.com/apple/pkl/issues/1716[#1716])
* Improve thread safety when evaluating `pkl:base` (https://github.com/apple/pkl/pull/1719[#1719])
* Incorrect member links in doc comments (https://github.com/apple/pkl/pull/1723[#1723])
* pkl-gradle plugin does not allow `projectpackage:` reads by default (https://github.com/apple/pkl/issues/1734[#1734])
* `IntSeq` incorrectly emits on empty ``IntSeq``s (https://github.com/apple/pkl/issues/1738[#1738])
== Security Fixes [small]#🔒#
The following security vulnerabilities were fixed:
* Remote packages can read local filesystem items by escaping local dependency roots (https://github.com/apple/pkl/security/advisories/GHSA-fgvf-hh2w-cxff[GHSA-fgvf-hh2w-cxff], https://github.com/apple/pkl/pull/1737[#1737])
* Packages can be read/written outside the configured cache directory (https://github.com/apple/pkl/security/advisories/GHSA-87qh-25w9-mh34[GHSA-87qh-25w9-mh34], https://github.com/apple/pkl/pull/1683[#1683])
== Contributors [small]#🙏# == Contributors [small]#🙏#
We would like to thank the contributors to this release (in alphabetical order): We would like to thank the contributors to this release (in alphabetical order):
* XXX * https://github.com/04cb[@04cb]
* https://github.com/0xmrma[@0xmrma]
* https://github.com/adityabagchi24[@adityabagchi24]
* https://github.com/adityasingh2400[@adityasingh2400]
* https://github.com/bioball[@bioball]
* https://github.com/fallintoplace[@fallintoplace]
* https://github.com/ffluk3[@ffluk3]
* https://github.com/HT154[@HT154]
* https://github.com/KushalP[@KushalP]
* https://github.com/kyokuping[@kyokuping]
* https://github.com/ldaley[@ldaley]
* https://github.com/mirkoalicastro[@mirkoalicastro]
* https://github.com/netvl[@netvl]
* https://github.com/odenix[@odenix]
* https://github.com/stackoverflow[@stackoverflow]
* https://github.com/vinayakj592[@vinayakj592]
@@ -0,0 +1,36 @@
= Pkl 0.33 Release Notes
:version: 0.33
:version-minor: 0.33.0
:release-date: XXX
:version-next: 0.34
:version-next-date: February 2027
include::partial$intro.adoc[]
== Highlights [small]#💖#
=== XXX
== Noteworthy [small]#🎶#
=== XXX
== Breaking Changes [small]#💔#
=== Removal of macOS amd64 (Intel) Binaries
Native `pkl` and `pkldoc` binaries for Intel Mac systems are no longer published with Pkl releases.
To continue running new Pkl releases on these systems, use an appropriate Java runtime and the `jpkl` and `jpkldoc` Java executables.
=== XXX
== Bug Fixes [small]#🐜#
* XXX
== Contributors [small]#🙏#
We would like to thank the contributors to this release (in alphabetical order):
* XXX
@@ -1,8 +1,15 @@
= Changelog = Changelog
include::ROOT:partial$component-attributes.adoc[] include::ROOT:partial$component-attributes.adoc[]
[[release-0.33.0]]
== 0.33.0 (UNRELEASED)
xref:0.33.adoc[Release Notes]
[[release-0.32.0]] [[release-0.32.0]]
== 0.32.0 (UNRELEASED) == 0.32.0 (2026-07-08)
xref:0.32.adoc[Release Notes]
[[release-0.31.1]] [[release-0.31.1]]
== 0.31.1 (2026-03-26) == 0.31.1 (2026-03-26)
@@ -38,6 +45,7 @@ Thank you to all the contributors for this release!
== 0.31.0 (2026-02-26) == 0.31.0 (2026-02-26)
xref:0.31.adoc[Release Notes] xref:0.31.adoc[Release Notes]
[[release-0.30.2]] [[release-0.30.2]]
== 0.30.2 (2025-12-15) == 0.30.2 (2025-12-15)
+1 -1
View File
@@ -193,7 +193,7 @@ Too many lines separate `foo` and `baz`.
Properties that override an existing property shouldn't have doc comments nor type annotations, Properties that override an existing property shouldn't have doc comments nor type annotations,
unless the type is intentionally overridden via `extends`. unless the type is intentionally overridden via `extends`.
[source%tested,{pkl}] [source%parsed,{pkl}]
---- ----
amends "myOtherModule.pkl" amends "myOtherModule.pkl"
+1
View File
@@ -41,6 +41,7 @@
* xref:ROOT:evolution-and-roadmap.adoc[Evolution and Roadmap] * xref:ROOT:evolution-and-roadmap.adoc[Evolution and Roadmap]
* xref:release-notes:index.adoc[Release Notes] * xref:release-notes:index.adoc[Release Notes]
** xref:release-notes:0.33.adoc[0.33 Release Notes]
** xref:release-notes:0.32.adoc[0.32 Release Notes] ** xref:release-notes:0.32.adoc[0.32 Release Notes]
** xref:release-notes:0.31.adoc[0.31 Release Notes] ** xref:release-notes:0.31.adoc[0.31 Release Notes]
** xref:release-notes:0.30.adoc[0.30 Release Notes] ** xref:release-notes:0.30.adoc[0.30 Release Notes]
+82 -70
View File
@@ -1,3 +1,22 @@
/*
* Copyright © 2024-2026 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.
*/
import java.nio.file.Files
import kotlin.io.path.isDirectory
import kotlin.io.path.isRegularFile
import kotlin.io.path.useDirectoryEntries
import org.junit.platform.commons.annotation.Testable import org.junit.platform.commons.annotation.Testable
import org.junit.platform.engine.* import org.junit.platform.engine.*
import org.junit.platform.engine.TestDescriptor.Type import org.junit.platform.engine.TestDescriptor.Type
@@ -16,23 +35,18 @@ import org.pkl.core.Loggers
import org.pkl.core.SecurityManagers import org.pkl.core.SecurityManagers
import org.pkl.core.StackFrameTransformers import org.pkl.core.StackFrameTransformers
import org.pkl.core.evaluatorSettings.TraceMode import org.pkl.core.evaluatorSettings.TraceMode
import org.pkl.core.http.HttpClient
import org.pkl.core.module.ModuleKeyFactories import org.pkl.core.module.ModuleKeyFactories
import org.pkl.core.repl.ReplRequest import org.pkl.core.repl.ReplRequest
import org.pkl.core.repl.ReplResponse import org.pkl.core.repl.ReplResponse
import org.pkl.core.repl.ReplServer import org.pkl.core.repl.ReplServer
import org.pkl.core.resource.ResourceReaders
import org.pkl.core.util.IoUtils import org.pkl.core.util.IoUtils
import org.pkl.core.http.HttpClient
import org.pkl.parser.Parser import org.pkl.parser.Parser
import org.pkl.parser.ParserError import org.pkl.parser.ParserError
import org.pkl.parser.syntax.ClassProperty import org.pkl.parser.syntax.ClassProperty
import org.pkl.core.resource.ResourceReaders
import java.nio.file.Files
import kotlin.io.path.isDirectory
import kotlin.io.path.isRegularFile
import kotlin.io.path.useDirectoryEntries
@Testable @Testable class DocSnippetTests
class DocSnippetTests
class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.ExecutionContext>() { class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.ExecutionContext>() {
private val projectDir = rootProjectDir.resolve("docs") private val projectDir = rootProjectDir.resolve("docs")
@@ -41,7 +55,8 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
private companion object { private companion object {
val headingRegex = Regex("""(?u)^\s*(=++)\s*(.+)""") val headingRegex = Regex("""(?u)^\s*(=++)\s*(.+)""")
val collapsibleBlockRegex = Regex("""(?u)^\s*\[%collapsible""") val collapsibleBlockRegex = Regex("""(?u)^\s*\[%collapsible""")
val codeBlockRegex = Regex("""(?u)^\s*\[source(?:%(tested|parsed)(%error)?)?(?:,\{?([a-zA-Z-_]+)}?)?""") val codeBlockRegex =
Regex("""(?u)^\s*\[source(?:%(tested|parsed)(%error)?)?(?:,\{?([a-zA-Z-_]+)}?)?""")
val codeBlockNameRegex = Regex("""(?u)^\s*\.(.+)""") val codeBlockNameRegex = Regex("""(?u)^\s*\.(.+)""")
val codeBlockDelimiterRegex = Regex("""(?u)^\s*----""") val codeBlockDelimiterRegex = Regex("""(?u)^\s*----""")
val graphicsRegex = Regex("\\[small]#.+#") val graphicsRegex = Regex("\\[small]#.+#")
@@ -51,7 +66,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
override fun discover( override fun discover(
discoveryRequest: EngineDiscoveryRequest, discoveryRequest: EngineDiscoveryRequest,
uniqueId: UniqueId uniqueId: UniqueId,
): TestDescriptor { ): TestDescriptor {
val packageSelectors = discoveryRequest.getSelectorsByType(PackageSelector::class.java) val packageSelectors = discoveryRequest.getSelectorsByType(PackageSelector::class.java)
val classSelectors = discoveryRequest.getSelectorsByType(ClassSelector::class.java) val classSelectors = discoveryRequest.getSelectorsByType(ClassSelector::class.java)
@@ -62,12 +77,14 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
val packageName = testClass.`package`.name val packageName = testClass.`package`.name
val className = testClass.name val className = testClass.name
if (methodSelectors.isEmpty() if (
&& (packageSelectors.isEmpty() || packageSelectors.any { it.packageName == packageName }) methodSelectors.isEmpty() &&
&& (classSelectors.isEmpty() || classSelectors.any { it.className == className }) (packageSelectors.isEmpty() || packageSelectors.any { it.packageName == packageName }) &&
(classSelectors.isEmpty() || classSelectors.any { it.className == className })
) { ) {
val rootDescriptor = Descriptor.Path(uniqueId, docsDir.fileName.toString(), ClassSource.from(testClass), docsDir) val rootDescriptor =
Descriptor.Path(uniqueId, docsDir.fileName.toString(), ClassSource.from(testClass), docsDir)
doDiscover(rootDescriptor, uniqueIdSelectors) doDiscover(rootDescriptor, uniqueIdSelectors)
return rootDescriptor return rootDescriptor
} }
@@ -77,19 +94,17 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
} }
override fun createExecutionContext(request: ExecutionRequest): ExecutionContext { override fun createExecutionContext(request: ExecutionRequest): ExecutionContext {
val replServer = ReplServer( val replServer =
ReplServer(
SecurityManagers.defaultManager, SecurityManagers.defaultManager,
HttpClient.dummyClient(), HttpClient.dummyClient(),
Loggers.stdErr(), Loggers.stdErr(),
listOf( listOf(
ModuleKeyFactories.standardLibrary, ModuleKeyFactories.standardLibrary,
ModuleKeyFactories.classPath(DocSnippetTests::class.java.classLoader), ModuleKeyFactories.classPath(DocSnippetTests::class.java.classLoader),
ModuleKeyFactories.file ModuleKeyFactories.file,
),
listOf(
ResourceReaders.environmentVariable(),
ResourceReaders.externalProperty()
), ),
listOf(ResourceReaders.environmentVariable(), ResourceReaders.externalProperty()),
System.getenv(), System.getenv(),
emptyMap(), emptyMap(),
null, null,
@@ -104,9 +119,9 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
} }
private fun doDiscover(rootDescriptor: TestDescriptor, selectors: List<UniqueIdSelector>) { private fun doDiscover(rootDescriptor: TestDescriptor, selectors: List<UniqueIdSelector>) {
fun isMatch(other: UniqueId) = selectors.isEmpty() || selectors.any { fun isMatch(other: UniqueId) =
it.uniqueId.hasPrefix(other) || other.hasPrefix(it.uniqueId) selectors.isEmpty() ||
} selectors.any { it.uniqueId.hasPrefix(other) || other.hasPrefix(it.uniqueId) }
docsDir.useDirectoryEntries { docsDirEntries -> docsDir.useDirectoryEntries { docsDirEntries ->
for (docsDirEntry in docsDirEntries) { for (docsDirEntry in docsDirEntries) {
@@ -116,11 +131,12 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
val docsDirEntryId = rootDescriptor.uniqueId.append("dir", docsDirEntryName) val docsDirEntryId = rootDescriptor.uniqueId.append("dir", docsDirEntryName)
if (!isMatch(docsDirEntryId)) continue if (!isMatch(docsDirEntryId)) continue
val docsDirEntryDescriptor = Descriptor.Path( val docsDirEntryDescriptor =
Descriptor.Path(
docsDirEntryId, docsDirEntryId,
docsDirEntryName, docsDirEntryName,
DirectorySource.from(docsDirEntry.toFile()), DirectorySource.from(docsDirEntry.toFile()),
docsDirEntry docsDirEntry,
) )
rootDescriptor.addChild(docsDirEntryDescriptor) rootDescriptor.addChild(docsDirEntryDescriptor)
@@ -131,16 +147,19 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
for (pagesDirEntry in pagesDirEntries) { for (pagesDirEntry in pagesDirEntries) {
val pagesDirEntryName = pagesDirEntry.fileName.toString() val pagesDirEntryName = pagesDirEntry.fileName.toString()
val pagesDirEntryId = docsDirEntryId.append("file", pagesDirEntryName) val pagesDirEntryId = docsDirEntryId.append("file", pagesDirEntryName)
if (!pagesDirEntry.isRegularFile() || if (
!pagesDirEntry.isRegularFile() ||
!pagesDirEntryName.endsWith(".adoc") || !pagesDirEntryName.endsWith(".adoc") ||
!isMatch(pagesDirEntryId) !isMatch(pagesDirEntryId)
) continue )
continue
val pagesDirEntryDescriptor = Descriptor.Path( val pagesDirEntryDescriptor =
Descriptor.Path(
pagesDirEntryId, pagesDirEntryId,
pagesDirEntryName, pagesDirEntryName,
FileSource.from(pagesDirEntry.toFile()), FileSource.from(pagesDirEntry.toFile()),
pagesDirEntry pagesDirEntry,
) )
docsDirEntryDescriptor.addChild(pagesDirEntryDescriptor) docsDirEntryDescriptor.addChild(pagesDirEntryDescriptor)
@@ -174,16 +193,14 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
} }
val parent = sections.firstOrNull() ?: docDescriptor val parent = sections.firstOrNull() ?: docDescriptor
val normalizedTitle = title val normalizedTitle =
.replace("<code>", "") title.replace("<code>", "").replace("</code>", "").replace(graphicsRegex, "").trim()
.replace("</code>", "") val childSection =
.replace(graphicsRegex, "") Descriptor.Section(
.trim()
val childSection = Descriptor.Section(
parent.uniqueId.append("section", normalizedTitle), parent.uniqueId.append("section", normalizedTitle),
normalizedTitle, normalizedTitle,
FileSource.from(docDescriptor.path.toFile(), FilePosition.from(lineNum)), FileSource.from(docDescriptor.path.toFile(), FilePosition.from(lineNum)),
newLevel newLevel,
) )
sections.addFirst(childSection) sections.addFirst(childSection)
@@ -217,7 +234,8 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
codeBlockNum += 1 codeBlockNum += 1
val (testMode, error, language) = codeBlockMatch.destructured val (testMode, error, language) = codeBlockMatch.destructured
if (testMode.isNotEmpty()) { if (testMode.isNotEmpty()) {
val blockName = codeBlockNameRegex.find(prevLine)?.groupValues?.get(1) ?: "snippet$codeBlockNum" val blockName =
codeBlockNameRegex.find(prevLine)?.groupValues?.get(1) ?: "snippet$codeBlockNum"
while (linesIterator.hasNext()) { while (linesIterator.hasNext()) {
advance() advance()
val startDelimiterMatch = codeBlockDelimiterRegex.find(line) val startDelimiterMatch = codeBlockDelimiterRegex.find(line)
@@ -236,10 +254,13 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
snippetId, snippetId,
blockName, blockName,
language, language,
FileSource.from(docDescriptor.path.toFile(), FilePosition.from(jumpToLineNum)), FileSource.from(
docDescriptor.path.toFile(),
FilePosition.from(jumpToLineNum),
),
builder.toString(), builder.toString(),
testMode == "parsed", testMode == "parsed",
error.isNotEmpty() error.isNotEmpty(),
) )
) )
} }
@@ -261,28 +282,21 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
} }
} }
private sealed class Descriptor( private sealed class Descriptor(uniqueId: UniqueId, displayName: String, source: TestSource) :
uniqueId: UniqueId, AbstractTestDescriptor(uniqueId, displayName, source), Node<ExecutionContext> {
displayName: String,
source: TestSource
) : AbstractTestDescriptor(uniqueId, displayName, source), Node<ExecutionContext> {
class Path( class Path(
uniqueId: UniqueId, uniqueId: UniqueId,
displayName: String, displayName: String,
source: TestSource, source: TestSource,
val path: java.nio.file.Path val path: java.nio.file.Path,
) : Descriptor(uniqueId, displayName, source) { ) : Descriptor(uniqueId, displayName, source) {
override fun getType() = Type.CONTAINER override fun getType() = Type.CONTAINER
} }
class Section( class Section(uniqueId: UniqueId, displayName: String, source: TestSource, val level: Int) :
uniqueId: UniqueId, Descriptor(uniqueId, displayName, source) {
displayName: String,
source: TestSource,
val level: Int
) : Descriptor(uniqueId, displayName, source) {
override fun getType() = Type.CONTAINER override fun getType() = Type.CONTAINER
@@ -299,7 +313,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
source: TestSource, source: TestSource,
private val code: String, private val code: String,
private val parseOnly: Boolean, private val parseOnly: Boolean,
private val expectError: Boolean private val expectError: Boolean,
) : Descriptor(uniqueId, displayName, source) { ) : Descriptor(uniqueId, displayName, source) {
override fun getType() = Type.TEST override fun getType() = Type.TEST
@@ -308,11 +322,14 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
when (language) { when (language) {
"pkl" -> Parser().parseModule(code) "pkl" -> Parser().parseModule(code)
"pkl-expr" -> Parser().parseExpressionInput(code) "pkl-expr" -> Parser().parseExpressionInput(code)
else -> throw(Exception("Unrecognized language: $language")) else -> throw (Exception("Unrecognized language: $language"))
} }
} }
override fun execute(context: ExecutionContext, executor: DynamicTestExecutor): ExecutionContext { override fun execute(
context: ExecutionContext,
executor: DynamicTestExecutor,
): ExecutionContext {
if (parseOnly) { if (parseOnly) {
try { try {
parsed parsed
@@ -328,12 +345,7 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
} }
context.replServer.handleRequest( context.replServer.handleRequest(
ReplRequest.Eval( ReplRequest.Eval("snippet", code, !expectError, !expectError)
"snippet",
code,
!expectError,
!expectError
)
) )
val properties = parsed.children()?.filterIsInstance<ClassProperty>() ?: emptyList() val properties = parsed.children()?.filterIsInstance<ClassProperty>() ?: emptyList()
@@ -342,21 +354,21 @@ class DocSnippetTestsEngine : HierarchicalTestEngine<DocSnippetTestsEngine.Execu
// force each property // force each property
for (prop in properties) { for (prop in properties) {
responses.addAll(context.replServer.handleRequest( responses.addAll(
ReplRequest.Eval( context.replServer.handleRequest(
"snippet", ReplRequest.Eval("snippet", prop.name.value, false, true)
prop.name.value, )
false,
true
) )
))
} }
if (expectError) { if (expectError) {
if (responses.dropLast(1).any { it !is ReplResponse.EvalSuccess } || if (
responses.last() !is ReplResponse.EvalError) { responses.dropLast(1).any { it !is ReplResponse.EvalSuccess } ||
responses.last() !is ReplResponse.EvalError
) {
throw AssertionError( throw AssertionError(
"Expected %error snippet to fail at the end, but got the following REPL responses:\n\n" + "Expected %error snippet to fail at the end, but got the following REPL responses:\n\n" +
responses.joinToString("\n\n") { it.message }) responses.joinToString("\n\n") { it.message }
)
} }
return context return context
+1 -1
View File
@@ -1,7 +1,7 @@
# suppress inspection "UnusedProperty" for whole file # suppress inspection "UnusedProperty" for whole file
group=org.pkl-lang group=org.pkl-lang
version=0.32.0 version=0.33.0
# google-java-format requires jdk.compiler exports # google-java-format requires jdk.compiler exports
org.gradle.jvmargs= \ org.gradle.jvmargs= \
+25 -27
View File
@@ -3,66 +3,64 @@ assertj = "3.27.7"
checksumPlugin = "1.4.0" checksumPlugin = "1.4.0"
# 5.0.3 is the last version compatible with Kotlin 2.2 # 5.0.3 is the last version compatible with Kotlin 2.2
clikt = "5.0.3" clikt = "5.0.3"
commonMark = "0.28.0" commonMark = "0.29.0"
downloadTaskPlugin = "5.7.0" downloadTaskPlugin = "5.7.0"
errorProne = "2.48.0" errorProne = "2.50.0"
errorPronePlugin = "5.1.0" errorPronePlugin = "5.1.0"
geantyref = "1.3.16" geantyref = "2.0.1"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
googleJavaFormat = "1.35.0" googleJavaFormat = "1.35.0"
# 25.0.2 no longer supports macos-x64 graalVm = "25.1.3"
graalVm = "25.0.1" graalVmJdkVersion = "25.0.3"
#noinspection UnusedVersionCatalogEntry
graalVmJdkVersion = "25.0.1"
# slightly hacky but convenient place so we remember to update the checksum # slightly hacky but convenient place so we remember to update the checksum
# pklGraalVm.gradle.kts assumes this entry exists
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
graalVmSha256-macos-x64 = "a3d895b4cd1c783badbd277ec70409806bd4102fca0d2a60dbaeb0bab41aec30" graalVmSha256-macos-x64 = "unavailable"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
graalVmSha256-macos-aarch64 = "066339f24a8ab5c161548491a9400f7344e7761a1e46f8979e76c7ef11d5bc76" graalVmSha256-macos-aarch64 = "b41cdde27691a0e04a1f2b0660624bc37e59c738e536888860c4c9f65a4a9a3b"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
graalVmSha256-linux-x64 = "01e39fe1a87f28b842a3e4e3b77be9b544dca3a58fa6e93b924a6106c8bac7fb" graalVmSha256-linux-x64 = "e9cd1637be853e105f8b09125b4b19fbce385696465d782cbca8bb80e1df8f0d"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
graalVmSha256-linux-aarch64 = "7aa0b9935a80e67f37c6025678393dbd123bb6f2226811decbc1a13093fc8ae2" graalVmSha256-linux-aarch64 = "5e79978983439d28506ebef82254fe9f98995121208dc8be77c604f4ad5bc579"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
graalVmSha256-windows-x64 = "fde83c5ceec2c75560c747ccd9f314f90e4cf5c5287416e67c4ce442e344ca27" graalVmSha256-windows-x64 = "96f1e7a9674b5b5751224104ff0c4624f15f9522b190d960a041cab72c381393"
# pklGraalVm.gradle.kts assumes this entry exists # pklGraalVm.gradle.kts assumes this entry exists
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
graalVmSha256-windows-aarch64 = "unavailable" graalVmSha256-windows-aarch64 = "unavailable"
ideaExtPlugin = "1.4.1" ideaExtPlugin = "1.4.1"
javaPoet = "0.14.0" javaPoet = "0.17.0"
javaxInject = "1" javaxInject = "1"
jimfs = "1.3.1" jimfs = "1.3.1"
jline = "4.0.12" jline = "4.3.1"
jmh = "1.37" jmh = "1.37"
jmhPlugin = "0.7.3" jmhPlugin = "0.7.3"
jspecify = "1.0.0" jspecify = "1.0.0"
jsr305 = "3.0.2" junit = "6.1.1"
junit = "6.0.3"
# 1.7+ generates much more verbose code # 1.7+ generates much more verbose code
kotlinPoet = "1.6.0" kotlinPoet = "1.6.0"
kotlinStdLib = "2.2.21" kotlinStdLib = "2.2.21"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
kotlinTarget = "2.2" kotlinTarget = "2.2"
kotlinToolchain = "2.3.20" kotlinToolchain = "2.4.0"
kotlinxHtml = "0.12.0" kotlinxHtml = "0.12.0"
# 1.9.0 is the last version compatible with Kotlin 2.2 # 1.9.0 is the last version compatible with Kotlin 2.2
kotlinxSerialization = "1.9.0" kotlinxSerialization = "1.9.0"
kotlinxCoroutines = "1.10.2" kotlinxCoroutines = "1.11.0"
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
ktfmt = "0.62" ktfmt = "0.62"
# replaces nuValidator's log4j dependency # replaces nuValidator's log4j dependency
# 2.17.1 is the last version compatible with nuValidator # 2.17.1 is the last version compatible with nuValidator
log4j = "2.17.1" log4j = "2.17.1"
msgpack = "0.9.11" msgpack = "0.9.12"
nexusPublishPlugin = "2.0.0" nexusPublishPlugin = "2.0.0"
nullaway = "0.13.2" nullaway = "0.13.7"
nullawayPlugin = "3.0.0" nullawayPlugin = "3.0.0"
nuValidator = "26.4.2" nuValidator = "26.6.24"
paguro = "3.10.3" paguro = "3.10.3"
shadowPlugin = "9.4.1" shadowPlugin = "9.4.2"
slf4j = "2.0.17" slf4j = "2.0.18"
snakeYaml = "3.0.1" snakeYaml = "3.0.1"
spotlessPlugin = "8.4.0" spotlessPlugin = "8.7.0"
wiremock = "3.13.2" wiremock = "3.13.2"
[libraries] # ordered alphabetically [libraries] # ordered alphabetically
@@ -74,6 +72,7 @@ commonMarkTables = { group = "org.commonmark", name = "commonmark-ext-gfm-tables
downloadTaskPlugin = { group = "de.undercouch", name = "gradle-download-task", version.ref = "downloadTaskPlugin" } downloadTaskPlugin = { group = "de.undercouch", name = "gradle-download-task", version.ref = "downloadTaskPlugin" }
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
errorProne = { group = "com.google.errorprone", name = "error_prone_core", version.ref = "errorProne" } errorProne = { group = "com.google.errorprone", name = "error_prone_core", version.ref = "errorProne" }
errorProneAnnotations = { group = "com.google.errorprone", name = "error_prone_annotations", version.ref = "errorProne" }
errorPronePlugin = { group = "net.ltgt.gradle", name = "gradle-errorprone-plugin", version.ref = "errorPronePlugin" } errorPronePlugin = { group = "net.ltgt.gradle", name = "gradle-errorprone-plugin", version.ref = "errorPronePlugin" }
geantyref = { group = "io.leangen.geantyref", name = "geantyref", version.ref = "geantyref" } geantyref = { group = "io.leangen.geantyref", name = "geantyref", version.ref = "geantyref" }
graalCompiler = { group = "org.graalvm.compiler", name = "compiler", version.ref = "graalVm" } graalCompiler = { group = "org.graalvm.compiler", name = "compiler", version.ref = "graalVm" }
@@ -87,7 +86,6 @@ jlineTerminal = { group = "org.jline", name = "jline-terminal", version.ref = "j
jlineTerminalJni = { group = "org.jline", name = "jline-terminal-jni", version.ref = "jline" } jlineTerminalJni = { group = "org.jline", name = "jline-terminal-jni", version.ref = "jline" }
#noinspection UnusedVersionCatalogEntry #noinspection UnusedVersionCatalogEntry
jspecify = { group = "org.jspecify", name = "jspecify", version.ref = "jspecify" } jspecify = { group = "org.jspecify", name = "jspecify", version.ref = "jspecify" }
jsr305 = { group = "com.google.code.findbugs", name = "jsr305", version.ref = "jsr305" }
junitApi = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" } junitApi = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
junitEngine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" } junitEngine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" }
junitParams = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" } junitParams = { group = "org.junit.jupiter", name = "junit-jupiter-params", version.ref = "junit" }
@@ -118,10 +116,10 @@ slf4jApi = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4j" }
slf4jSimple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" } slf4jSimple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" }
snakeYaml = { group = "org.snakeyaml", name = "snakeyaml-engine", version.ref = "snakeYaml" } snakeYaml = { group = "org.snakeyaml", name = "snakeyaml-engine", version.ref = "snakeYaml" }
spotlessPlugin = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotlessPlugin"} spotlessPlugin = { group = "com.diffplug.spotless", name = "spotless-plugin-gradle", version.ref = "spotlessPlugin"}
svm = { group = "org.graalvm.nativeimage", name = "svm", version.ref = "graalVm" } svm = { group = "org.graalvm.nativeimage", name = "svm", version.ref = "graalVmJdkVersion" }
truffleApi = { group = "org.graalvm.truffle", name = "truffle-api", 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" } truffleDslProcessor = { group = "org.graalvm.truffle", name = "truffle-dsl-processor", version.ref = "graalVm" }
truffleSvm = { group = "org.graalvm.nativeimage", name = "truffle-runtime-svm", version.ref = "graalVm" } truffleSvm = { group = "org.graalvm.nativeimage", name = "truffle-runtime-svm", version.ref = "graalVmJdkVersion" }
truffleRuntime = { group = "org.graalvm.truffle", name = "truffle-runtime", version.ref = "graalVm" } truffleRuntime = { group = "org.graalvm.truffle", name = "truffle-runtime", version.ref = "graalVm" }
wiremock = { group = "org.wiremock", name = "wiremock", version.ref = "wiremock" } wiremock = { group = "org.wiremock", name = "wiremock", version.ref = "wiremock" }
Binary file not shown.
+4 -2
View File
@@ -1,8 +1,10 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionSha256Sum=2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb distributionSha256Sum=bbaeb2fef8710818cf0e261201dab964c572f92b942812df0c3620d62a529a01
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip
networkTimeout=10000 networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
Vendored
+3 -3
View File
@@ -20,7 +20,7 @@
############################################################################## ##############################################################################
# #
# Gradle start up script for POSIX generated by Gradle. # gradlew start up script for POSIX generated by Gradle.
# #
# Important for running: # Important for running:
# #
@@ -29,7 +29,7 @@
# bash, then to run this script, type that shell name before the whole # bash, then to run this script, type that shell name before the whole
# command line, like: # command line, like:
# #
# ksh Gradle # ksh gradlew
# #
# Busybox and similar reduced shells will NOT work, because this script # Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features: # requires all of these POSIX shell features:
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop. # Darwin, MinGW, and NonStop.
# #
# (3) This script is generated from the Groovy template # (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project. # within the Gradle project.
# #
# You can find Gradle at https://github.com/gradle/gradle/. # You can find Gradle at https://github.com/gradle/gradle/.
Vendored
+12 -23
View File
@@ -19,12 +19,12 @@
@if "%DEBUG%"=="" @echo off @if "%DEBUG%"=="" @echo off
@rem ########################################################################## @rem ##########################################################################
@rem @rem
@rem Gradle startup script for Windows @rem gradlew startup script for Windows
@rem @rem
@rem ########################################################################## @rem ##########################################################################
@rem Set local scope for the variables with windows NT shell @rem Set local scope for the variables, and ensure extensions are enabled
if "%OS%"=="Windows_NT" setlocal setlocal EnableExtensions
set DIRNAME=%~dp0 set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=. if "%DIRNAME%"=="" set DIRNAME=.
@@ -51,7 +51,7 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2 echo location of your Java installation. 1>&2
goto fail "%COMSPEC%" /c exit 1
:findJavaFromJavaHome :findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
@@ -65,29 +65,18 @@ echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2 echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2 echo location of your Java installation. 1>&2
goto fail "%COMSPEC%" /c exit 1
:execute :execute
@rem Setup the command line @rem Setup the command line
@rem Execute Gradle @rem Execute gradlew
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* @rem endlocal doesn't take effect until after the line is parsed and variables are expanded
@rem which allows us to clear the local environment before executing the java command
endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel
:end :exitWithErrorLevel
@rem End local scope for the variables with windows NT shell @rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts
if %ERRORLEVEL% equ 0 goto mainEnd "%COMSPEC%" /c exit %ERRORLEVEL%
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
+3 -3
View File
@@ -2,15 +2,15 @@
"catalogs": {}, "catalogs": {},
"aliases": { "aliases": {
"pkl": { "pkl": {
"script-ref": "org.pkl-lang:pkl-cli-java:0.31.1", "script-ref": "org.pkl-lang:pkl-cli-java:0.32.0",
"java-agents": [] "java-agents": []
}, },
"pkl-codegen-java": { "pkl-codegen-java": {
"script-ref": "org.pkl-lang:pkl-codegen-java:0.31.1", "script-ref": "org.pkl-lang:pkl-codegen-java:0.32.0",
"java-agents": [] "java-agents": []
}, },
"pkl-codegen-kotlin": { "pkl-codegen-kotlin": {
"script-ref": "org.pkl-lang:pkl-codegen-kotlin:0.31.1", "script-ref": "org.pkl-lang:pkl-codegen-kotlin:0.32.0",
"java-agents": [] "java-agents": []
} }
}, },
+3 -3
View File
@@ -83,8 +83,8 @@ tasks.shadowJar {
exclude("module-info.*") exclude("module-info.*")
} }
val testJavaExecutable by val testJavaExecutable =
tasks.registering(Test::class) { tasks.register<Test>("testJavaExecutable") {
testClassesDirs = tasks.test.get().testClassesDirs testClassesDirs = tasks.test.get().testClassesDirs
classpath = classpath =
// compiled test classes // compiled test classes
@@ -138,7 +138,7 @@ fun Exec.useRootDirAndSuppressOutput() {
// 0.28 Preparing for JDK21 toolchains revealed that `testStartJavaExecutable` may pass, even though // 0.28 Preparing for JDK21 toolchains revealed that `testStartJavaExecutable` may pass, even though
// the evaluator fails. To catch this, we eval a simple expression using the fat jar. // the evaluator fails. To catch this, we eval a simple expression using the fat jar.
val testEvalJavaExecutable by val testEvalJavaExecutable =
setupJavaExecutableRun("testEvalJavaExecutable", evalTestFlags) { useRootDirAndSuppressOutput() } setupJavaExecutableRun("testEvalJavaExecutable", evalTestFlags) { useRootDirAndSuppressOutput() }
// Run the same evaluator tests on all configured JDK test versions. // Run the same evaluator tests on all configured JDK test versions.
@@ -67,7 +67,7 @@ constructor(
val evaluator = builder.build() val evaluator = builder.build()
evaluator.use { evaluator.use {
evaluator.evaluateCommand( evaluator.evaluateCommand(
uri(resolvedSourceModules.first()), uri(options.normalizedSourceModules.first()),
reservedFlagNames, reservedFlagNames,
reservedFlagShortNames, reservedFlagShortNames,
) { spec -> ) { spec ->
@@ -115,7 +115,7 @@ constructor(
// used just to resolve the `%{moduleName}` placeholder // used just to resolve the `%{moduleName}` placeholder
val moduleResolver = ModuleResolver(moduleKeyFactories(ModulePathResolver.empty())) val moduleResolver = ModuleResolver(moduleKeyFactories(ModulePathResolver.empty()))
return resolvedSourceModules.associateWith { uri -> return options.base.normalizedSourceModules.associateWith { uri ->
val moduleDir: String? = val moduleDir: String? =
IoUtils.toPath(uri)?.let { IoUtils.toPath(uri)?.let {
IoUtils.relativize(it.parent, workingDir).toString().ifEmpty { "." } IoUtils.relativize(it.parent, workingDir).toString().ifEmpty { "." }
@@ -191,7 +191,7 @@ constructor(
} }
} else { } else {
var outputWritten = false var outputWritten = false
for (moduleUri in resolvedSourceModules) { for (moduleUri in options.base.normalizedSourceModules) {
val moduleSource = toModuleSource(moduleUri, inputStream) val moduleSource = toModuleSource(moduleUri, inputStream)
if (options.expression != null) { if (options.expression != null) {
val output = evaluator.evaluateExpressionString(moduleSource, options.expression) val output = evaluator.evaluateExpressionString(moduleSource, options.expression)
@@ -229,8 +229,8 @@ constructor(
private fun writeMultipleFileOutput(builder: EvaluatorBuilder) { private fun writeMultipleFileOutput(builder: EvaluatorBuilder) {
val outputDirs = directoryOutputPaths!! val outputDirs = directoryOutputPaths!!
val writtenFiles = mutableMapOf<Path, OutputFile>() val writtenFiles = mutableMapOf<Path, OutputFile>()
builder.setOutputFormat(options.outputFormat).build().use { evaluator ->
for ((moduleUri, outputDir) in outputDirs) { for ((moduleUri, outputDir) in outputDirs) {
val evaluator = builder.setOutputFormat(options.outputFormat).build()
if (outputDir.exists() && !outputDir.isDirectory()) { if (outputDir.exists() && !outputDir.isDirectory()) {
throw CliException("Output path `$outputDir` exists and is not a directory.") throw CliException("Output path `$outputDir` exists and is not a directory.")
} }
@@ -268,6 +268,7 @@ constructor(
} }
} }
} }
}
/** /**
* Resolves [rel] against this Path name-by-name. At each step, the real path is resolved if the * Resolves [rel] against this Path name-by-name. At each step, the real path is resolved if the
@@ -66,7 +66,7 @@ constructor(
try { try {
return builder return builder
.apply { .apply {
for ((idx, sourceModule) in resolvedSourceModules.withIndex()) { for ((idx, sourceModule) in options.base.normalizedSourceModules.withIndex()) {
addExternalProperty("pkl.analyzeImports.$idx", sourceModule.toString()) addExternalProperty("pkl.analyzeImports.$idx", sourceModule.toString())
} }
} }
@@ -15,6 +15,7 @@
*/ */
package org.pkl.cli package org.pkl.cli
import java.io.StringWriter
import java.io.Writer import java.io.Writer
import org.pkl.commons.cli.* import org.pkl.commons.cli.*
import org.pkl.core.Closeables import org.pkl.core.Closeables
@@ -22,8 +23,9 @@ import org.pkl.core.EvaluatorBuilder
import org.pkl.core.ModuleSource.uri import org.pkl.core.ModuleSource.uri
import org.pkl.core.PklException import org.pkl.core.PklException
import org.pkl.core.TestResults import org.pkl.core.TestResults
import org.pkl.core.stdlib.test.report.JUnitReport import org.pkl.core.stdlib.test.report.JUnitReporter
import org.pkl.core.stdlib.test.report.SimpleReport import org.pkl.core.stdlib.test.report.MinimalReporter
import org.pkl.core.stdlib.test.report.SpecReporter
import org.pkl.core.util.ErrorMessages import org.pkl.core.util.ErrorMessages
class CliTestRunner class CliTestRunner
@@ -47,7 +49,7 @@ constructor(
private fun evalTest(builder: EvaluatorBuilder) { private fun evalTest(builder: EvaluatorBuilder) {
val sources = val sources =
resolvedSourceModules.ifEmpty { project?.tests?.map { it.toUri() } } options.normalizedSourceModules.ifEmpty { project?.tests?.map { it.toUri() } }
?: ?:
// keep in sync with error message thrown by clikt // keep in sync with error message thrown by clikt
throw CliException( throw CliException(
@@ -64,13 +66,15 @@ constructor(
var failed = false var failed = false
var isExampleWrittenFailure = true var isExampleWrittenFailure = true
val moduleNames = mutableSetOf<String>() val moduleNames = mutableSetOf<String>()
val reporter = SimpleReport(useColor) val reporter =
when (testOptions.reporter) {
TestReporter.SPEC -> SpecReporter(useColor)
TestReporter.MINIMAL -> MinimalReporter(useColor)
}
val allTestResults = mutableListOf<TestResults>() val allTestResults = mutableListOf<TestResults>()
val junitDir = testOptions.junitDir val junitDir = testOptions.junitDir
if (junitDir != null) { junitDir?.toFile()?.mkdirs()
junitDir.toFile().mkdirs()
}
for ((idx, moduleUri) in sources.withIndex()) { for ((idx, moduleUri) in sources.withIndex()) {
try { try {
@@ -80,8 +84,11 @@ constructor(
failed = results.failed() failed = results.failed()
isExampleWrittenFailure = results.isExampleWrittenFailure.and(isExampleWrittenFailure) isExampleWrittenFailure = results.isExampleWrittenFailure.and(isExampleWrittenFailure)
} }
reporter.report(results, consoleWriter) val tmpWriter = StringWriter()
if (sources.size > 1 && idx != sources.size - 1) { reporter.report(results, tmpWriter)
val report = tmpWriter.toString()
consoleWriter.write(report)
if (report.isNotEmpty() && sources.size > 1 && idx != sources.size - 1) {
consoleWriter.append('\n') consoleWriter.append('\n')
} }
consoleWriter.flush() consoleWriter.flush()
@@ -101,7 +108,7 @@ constructor(
moduleNames += moduleName moduleNames += moduleName
if (!testOptions.junitAggregateReports) { if (!testOptions.junitAggregateReports) {
JUnitReport().reportToPath(results, junitDir.resolve(moduleName)) JUnitReporter().reportToPath(results, junitDir.resolve(moduleName))
} }
} }
} catch (ex: Exception) { } catch (ex: Exception) {
@@ -119,7 +126,7 @@ constructor(
} }
if (testOptions.junitAggregateReports && junitDir != null) { if (testOptions.junitAggregateReports && junitDir != null) {
val fileName = "${testOptions.junitAggregateSuiteName}.xml" val fileName = "${testOptions.junitAggregateSuiteName}.xml"
JUnitReport(testOptions.junitAggregateSuiteName) JUnitReporter(testOptions.junitAggregateSuiteName)
.summarizeToPath(allTestResults, junitDir.resolve(fileName)) .summarizeToPath(allTestResults, junitDir.resolve(fileName))
} }
consoleWriter.append('\n') consoleWriter.append('\n')
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -1295,7 +1295,7 @@ result = someLib.x
CliBaseOptions( CliBaseOptions(
sourceModules = listOf(moduleUri), sourceModules = listOf(moduleUri),
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
) )
) )
val buffer = ByteArrayOutputStream() val buffer = ByteArrayOutputStream()
@@ -1337,7 +1337,7 @@ result = someLib.x
CliBaseOptions( CliBaseOptions(
sourceModules = listOf(moduleUri), sourceModules = listOf(moduleUri),
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
settings = settingsFile, settings = settingsFile,
) )
) )
@@ -1367,7 +1367,7 @@ result = someLib.x
workingDir = tempDir, workingDir = tempDir,
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
noCache = true, noCache = true,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
) )
) )
@@ -1473,7 +1473,7 @@ result = someLib.x
sourceModules = listOf(URI("package://localhost:1/birds@0.5.0#/catalog/Ostrich.pkl")), sourceModules = listOf(URI("package://localhost:1/birds@0.5.0#/catalog/Ostrich.pkl")),
noCache = true, noCache = true,
httpProxy = URI(wwRuntimeInfo.httpBaseUrl), httpProxy = URI(wwRuntimeInfo.httpBaseUrl),
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
allowedModules = SecurityManagers.defaultAllowedModules + Pattern.compile("http:"), allowedModules = SecurityManagers.defaultAllowedModules + Pattern.compile("http:"),
) )
) )
@@ -1614,6 +1614,24 @@ result = someLib.x
assertThat(output).isEqualTo("result = 1\n") assertThat(output).isEqualTo("result = 1\n")
} }
@Test
fun `eval configured http headers`(wwRuntimeInfo: WireMockRuntimeInfo) {
stubFor(get(anyUrl()).willReturn(ok("result = 1")))
val file = URI("${wwRuntimeInfo.httpBaseUrl}/foo.pkl")
val output =
evalToConsole(
CliEvaluatorOptions(
CliBaseOptions(
sourceModules = listOf(file),
httpHeaders = mapOf("**" to mapOf("X-Foo" to listOf("Foo"))),
allowedModules =
listOf(Pattern.compile("http:"), Pattern.compile("file:"), Pattern.compile("pkl:")),
)
)
)
verify(getRequestedFor(urlEqualTo("/foo.pkl")).withHeader("X-Foo", equalTo("Foo")))
}
@Test @Test
fun `eval file with non-ASCII name`() { fun `eval file with non-ASCII name`() {
val tempDirUri = tempDir.toUri() val tempDirUri = tempDir.toUri()
@@ -1754,6 +1772,32 @@ result = someLib.x
) )
} }
@Test
fun `eval dependency notation source`(@TempDir tempDir: Path) {
PackageServer.populateCacheDir(tempDir)
val projectPath =
FileTestUtils.rootProjectDir.resolve(
"pkl-commons-cli/src/main/resources/org/pkl/commons/cli/project1/"
)
val options =
CliEvaluatorOptions(
CliBaseOptions(
sourceModules = listOf(URI("@fruit/catalog/apple.pkl")),
projectDir = projectPath,
moduleCacheDir = tempDir,
)
)
val output = evalToConsole(options)
assertThat(output)
.isEqualTo(
"""
name = "Apple 🍎"
"""
.trimIndent()
)
}
private fun evalModuleThatImportsPackage(certsFile: Path?, testPort: Int = -1) { private fun evalModuleThatImportsPackage(certsFile: Path?, testPort: Int = -1) {
val moduleUri = val moduleUri =
writePklFile( writePklFile(
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -169,4 +169,60 @@ class CliMainTest {
link.createSymbolicLinkPointingTo(dir) link.createSymbolicLinkPointingTo(dir)
return link return link
} }
@Test
fun `invalid http header glob pattern`() {
val ex =
assertThrows<BadParameterValue> {
rootCmd.parse(arrayOf("eval", "--http-header", "foo{{}}=bar:baz", "myModule.pkl"))
}
assertThat(ex.message)
.contains("Sub-patterns cannot be nested. To fix, remove or escape the inner `{` character.")
}
@Test
fun `forbidden http header name`() {
val ex =
assertThrows<BadParameterValue> {
rootCmd.parse(arrayOf("eval", "--http-header", "**=Connection: baz", "myModule.pkl"))
}
assertThat(ex.message).contains("HTTP header `Connection` is a reserved header")
}
@Test
fun `bad http header value`() {
val ex =
assertThrows<BadParameterValue> {
rootCmd.parse(arrayOf("eval", "--http-header", "**=X-Foo:🙃", "myModule.pkl"))
}
assertThat(ex.message).contains("HTTP header value `🙃` has invalid syntax")
}
@Test
fun `multiple headers`() {
val cmd = RootCommand()
cmd.parse(
arrayOf(
"eval",
"--http-header",
"**=X-Foo:Foo",
"--http-header",
"**=X-Foo:Foo2",
"--http-header",
"**=X-Bar:Bar",
"--http-header",
"https://example.com/**=X-Qux:Qux",
"pkl:base",
)
)
val evalCmd = cmd.registeredSubcommands().filterIsInstance<EvalCommand>().first()
assertThat(evalCmd.baseOptions.httpHeaders)
.isEqualTo(
mapOf(
"**" to mapOf("X-Foo" to listOf("Foo", "Foo2"), "X-Bar" to listOf("Bar")),
"https://example.com/**" to mapOf("X-Qux" to listOf("Qux")),
)
)
}
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -44,7 +44,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = packageUris =
@@ -83,7 +83,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")), packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")),
@@ -103,7 +103,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = packageUris =
@@ -124,7 +124,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = packageUris =
@@ -165,7 +165,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = listOf(PackageUri("package://localhost:0/badChecksum@1.0.0")), packageUris = listOf(PackageUri("package://localhost:0/badChecksum@1.0.0")),
@@ -184,7 +184,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = packageUris =
@@ -221,7 +221,7 @@ class CliPackageDownloaderTest {
baseOptions = baseOptions =
CliBaseOptions( CliBaseOptions(
moduleCacheDir = tempDir, moduleCacheDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = server.port, testPort = server.port,
), ),
packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")), packageUris = listOf(PackageUri("package://localhost:0/birds@0.5.0")),
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -763,6 +763,43 @@ class CliProjectPackagerTest {
) )
} }
@Test
fun `import path verification with glob imports`(@TempDir tempDir: Path) {
tempDir.writeFile(
"main.pkl",
"""
import* "**.pkl" as foo
res = foo
"""
.trimIndent(),
)
tempDir.writeFile(
"PklProject",
"""
amends "pkl:Project"
package {
name = "mypackage"
version = "1.0.0"
baseUri = "package://example.com/mypackage"
packageZipUrl = "https://foo.com"
}
"""
.trimIndent(),
)
CliProjectPackager(
CliBaseOptions(workingDir = tempDir),
listOf(tempDir),
CliTestOptions(),
".out/%{name}@%{version}",
skipPublishCheck = true,
consoleWriter = StringWriter(),
)
.run()
}
@Test @Test
@DisabledOnOs(OS.WINDOWS) @DisabledOnOs(OS.WINDOWS)
fun `import path verification -- absolute read from root dir`(@TempDir tempDir: Path) { fun `import path verification -- absolute read from root dir`(@TempDir tempDir: Path) {
@@ -930,7 +967,7 @@ class CliProjectPackagerTest {
CliProjectPackager( CliProjectPackager(
CliBaseOptions( CliBaseOptions(
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
), ),
listOf(tempDir.resolve("project")), listOf(tempDir.resolve("project")),
@@ -974,7 +1011,7 @@ class CliProjectPackagerTest {
CliProjectPackager( CliProjectPackager(
CliBaseOptions( CliBaseOptions(
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
), ),
listOf(tempDir.resolve("project")), listOf(tempDir.resolve("project")),
@@ -87,7 +87,7 @@ class CliProjectResolverTest {
CliProjectResolver( CliProjectResolver(
CliBaseOptions( CliBaseOptions(
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
noCache = true, noCache = true,
), ),
@@ -142,7 +142,7 @@ class CliProjectResolverTest {
CliProjectResolver( CliProjectResolver(
CliBaseOptions( CliBaseOptions(
workingDir = tempDir, workingDir = tempDir,
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
noCache = true, noCache = true,
), ),
@@ -240,7 +240,7 @@ class CliProjectResolverTest {
) )
CliProjectResolver( CliProjectResolver(
CliBaseOptions( CliBaseOptions(
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
noCache = true, noCache = true,
), ),
@@ -322,7 +322,7 @@ class CliProjectResolverTest {
val errOut = StringWriter() val errOut = StringWriter()
CliProjectResolver( CliProjectResolver(
CliBaseOptions( CliBaseOptions(
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
noCache = true, noCache = true,
), ),
@@ -397,7 +397,7 @@ class CliProjectResolverTest {
val errOut = StringWriter() val errOut = StringWriter()
CliProjectResolver( CliProjectResolver(
CliBaseOptions( CliBaseOptions(
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
noCache = true, noCache = true,
), ),
@@ -484,7 +484,7 @@ class CliProjectResolverTest {
assertThatCode { assertThatCode {
CliProjectResolver( CliProjectResolver(
CliBaseOptions( CliBaseOptions(
caCertificates = listOf(FileTestUtils.selfSignedCertificate), caCertificates = listOf(FileTestUtils.selfSignedCertificatePem),
testPort = packageServer.port, testPort = packageServer.port,
noCache = true, noCache = true,
), ),
@@ -31,7 +31,7 @@ class CliJavaCodeGenerator(private val options: CliJavaCodeGeneratorOptions) :
val builder = evaluatorBuilder() val builder = evaluatorBuilder()
try { try {
builder.build().use { evaluator -> builder.build().use { evaluator ->
for (moduleUri in resolvedSourceModules) { for (moduleUri in options.base.normalizedSourceModules) {
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri)) val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
val codeGenerator = JavaCodeGenerator(schema, options.toJavaCodeGeneratorOptions()) val codeGenerator = JavaCodeGenerator(schema, options.toJavaCodeGeneratorOptions())
try { try {
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
@file:Suppress("unused") @file:Suppress("unused", "CanConvertToMultiDollarString")
package org.pkl.codegen.java package org.pkl.codegen.java
@@ -172,7 +172,7 @@ class JavaCodeGenerator(
val annotation = codegenOptions.nonNullAnnotation val annotation = codegenOptions.nonNullAnnotation
val className = val className =
if (annotation == null) { if (annotation == null) {
ClassName.get("org.pkl.config.java.mapper", "NonNull") ClassName.get("org.jspecify.annotations", "NonNull")
} else { } else {
toClassName(annotation) toClassName(annotation)
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -1549,8 +1549,9 @@ class JavaCodeGeneratorTest {
// not worthwhile to add spring & spring boot dependency just so that this test can compile // not worthwhile to add spring & spring boot dependency just so that this test can compile
// their annotations // their annotations
val javaCodeWithoutSpringAnnotations = val javaCodeWithoutSpringAnnotations = javaCode.deleteLines {
javaCode.deleteLines { it.contains("ConfigurationProperties") } it.contains("ConfigurationProperties")
}
assertThat(javaCodeWithoutSpringAnnotations).compilesSuccessfully() assertThat(javaCodeWithoutSpringAnnotations).compilesSuccessfully()
} }
@@ -5,8 +5,8 @@ import java.lang.Override;
import java.lang.String; import java.lang.String;
import java.lang.StringBuilder; import java.lang.StringBuilder;
import java.util.Objects; import java.util.Objects;
import org.jspecify.annotations.NonNull;
import org.pkl.config.java.mapper.Named; import org.pkl.config.java.mapper.Named;
import org.pkl.config.java.mapper.NonNull;
import org.pkl.core.DataSize; import org.pkl.core.DataSize;
import org.pkl.core.Duration; import org.pkl.core.Duration;
@@ -5,8 +5,8 @@ import java.lang.Override;
import java.lang.String; import java.lang.String;
import java.lang.StringBuilder; import java.lang.StringBuilder;
import java.util.Objects; import java.util.Objects;
import org.jspecify.annotations.NonNull;
import org.pkl.config.java.mapper.Named; import org.pkl.config.java.mapper.Named;
import org.pkl.config.java.mapper.NonNull;
import org.pkl.core.Duration; import org.pkl.core.Duration;
public final class Mod { public final class Mod {
@@ -5,8 +5,8 @@ import java.lang.Override;
import java.lang.String; import java.lang.String;
import java.lang.StringBuilder; import java.lang.StringBuilder;
import java.util.Objects; import java.util.Objects;
import org.jspecify.annotations.NonNull;
import org.pkl.config.java.mapper.Named; import org.pkl.config.java.mapper.Named;
import org.pkl.config.java.mapper.NonNull;
/** /**
* module comment. * module comment.
@@ -11,8 +11,8 @@ import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.jspecify.annotations.NonNull;
import org.pkl.config.java.mapper.Named; import org.pkl.config.java.mapper.Named;
import org.pkl.config.java.mapper.NonNull;
import org.pkl.core.DataSize; import org.pkl.core.DataSize;
import org.pkl.core.DataSizeUnit; import org.pkl.core.DataSizeUnit;
import org.pkl.core.Duration; import org.pkl.core.Duration;
@@ -32,7 +32,7 @@ class CliKotlinCodeGenerator(private val options: CliKotlinCodeGeneratorOptions)
try { try {
builder.build().use { evaluator -> builder.build().use { evaluator ->
for (moduleUri in resolvedSourceModules) { for (moduleUri in options.base.normalizedSourceModules) {
val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri)) val schema = evaluator.evaluateSchema(ModuleSource.uri(moduleUri))
val codeGenerator = KotlinCodeGenerator(schema, options.toKotlinCodeGeneratorOptions()) val codeGenerator = KotlinCodeGenerator(schema, options.toKotlinCodeGeneratorOptions())
try { try {
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -1464,8 +1464,9 @@ class KotlinCodeGeneratorTest {
// not worthwhile to add spring & spring boot dependency just so that this test can compile // not worthwhile to add spring & spring boot dependency just so that this test can compile
// their annotations // their annotations
val kotlinCodeWithoutSpringAnnotations = val kotlinCodeWithoutSpringAnnotations = kotlinCode.deleteLines {
kotlinCode.deleteLines { it.contains("ConfigurationProperties") } it.contains("ConfigurationProperties")
}
assertThat(kotlinCodeWithoutSpringAnnotations).compilesSuccessfully() assertThat(kotlinCodeWithoutSpringAnnotations).compilesSuccessfully()
} }
+3 -2
View File
@@ -19,10 +19,11 @@ plugins {
id("pklPublishLibrary") id("pklPublishLibrary")
} }
val svmClasspath: Configuration by configurations.creating val svmClasspath: Configuration = configurations.create("svmClasspath")
// used by pklNativeExecutable.gradle.kts // used by pklNativeExecutable.gradle.kts
@Suppress("unused") val svm: SourceSet by sourceSets.creating { compileClasspath = svmClasspath } @Suppress("unused")
val svm: SourceSet = sourceSets.create("svm") { compileClasspath = svmClasspath }
dependencies { dependencies {
api(projects.pklCore) api(projects.pklCore)
@@ -144,11 +144,14 @@ data class CliBaseOptions(
/** URL prefixes to rewrite. */ /** URL prefixes to rewrite. */
val httpRewrites: Map<URI, URI>? = null, val httpRewrites: Map<URI, URI>? = null,
/** HTTP headers to add to the request. */
val httpHeaders: Map<String, Map<String, List<String>>>? = null,
/** External module reader process specs */ /** External module reader process specs */
val externalModuleReaders: Map<String, ExternalReader> = mapOf(), val externalModuleReaders: Map<String, ExternalReader>? = null,
/** External resource reader process specs */ /** External resource reader process specs */
val externalResourceReaders: Map<String, ExternalReader> = mapOf(), val externalResourceReaders: Map<String, ExternalReader>? = null,
/** Defines options for the formatting of calls to the trace() method. */ /** Defines options for the formatting of calls to the trace() method. */
val traceMode: TraceMode? = null, val traceMode: TraceMode? = null,
@@ -186,14 +189,13 @@ data class CliBaseOptions(
sourceModules sourceModules
.map { uri -> .map { uri ->
if (uri.isAbsolute) uri if (uri.isAbsolute) uri
else if (uri.path.startsWith("@") && !noProject && normalizedProjectFile != null) uri else if (uri.path.startsWith("@")) uri
else IoUtils.resolve(normalizedWorkingDir.toUri(), uri) else IoUtils.resolve(normalizedWorkingDir.toUri(), uri)
} }
// sort modules to make cli output independent of source module order // sort modules to make cli output independent of source module order
.sorted() .sorted()
val normalizedSettingsModule: URI? = val normalizedSettingsModule: URI? = settings?.let { uri ->
settings?.let { uri ->
if (uri.isAbsolute) uri else IoUtils.resolve(normalizedWorkingDir.toUri(), uri) if (uri.isAbsolute) uri else IoUtils.resolve(normalizedWorkingDir.toUri(), uri)
} }
@@ -86,36 +86,6 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
} }
} }
protected fun resolveModuleUri(uri: URI): URI =
if (uri.isAbsolute) uri
else { // must be @dep/mod.pkl notation!!
if (!uri.path.startsWith('@'))
throw CliBugException(
RuntimeException("tried to resolve project URI `$uri` with no @ prefix")
)
if (project == null)
throw CliBugException(
RuntimeException("tried to resolve project URI `$uri` with no project present")
)
val dep = uri.path.substringBefore('/').drop(1)
val path = uri.path.dropWhile { it != '/' }
if (path.isEmpty()) throw CliException("Invalid project dependency URI `$uri`.")
val remoteDep =
project!!.dependencies.remoteDependencies()[dep]
?: if (project!!.dependencies.localDependencies().containsKey(dep))
throw CliException(
"Only remote project dependencies may be referenced using @-notation. Dependency `@$dep` is a local dependency."
)
else throw CliException("Project does not contain dependency `@$dep`.")
remoteDep.packageUri.toPackageAssetUri(path).uri
}
protected val resolvedSourceModules: List<URI> by lazy {
if (project == null) cliOptions.normalizedSourceModules
else cliOptions.normalizedSourceModules.map(::resolveModuleUri)
}
protected fun loadProject(projectFile: Path): Project { protected fun loadProject(projectFile: Path): Project {
val securityManager = val securityManager =
SecurityManagers.standard( SecurityManagers.standard(
@@ -140,7 +110,7 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
private val evaluatorSettings: PklEvaluatorSettings? by lazy { private val evaluatorSettings: PklEvaluatorSettings? by lazy {
@Suppress("PklCliDirectProjectEvaluatorSettingsAccess") @Suppress("PklCliDirectProjectEvaluatorSettingsAccess")
if (cliOptions.omitProjectSettings) null else project?.evaluatorSettings if (cliOptions.omitProjectSettings) null else project?.resolvedEvaluatorSettings
} }
protected val allowedModules: List<Pattern> by lazy { protected val allowedModules: List<Pattern> by lazy {
@@ -215,15 +185,19 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
} }
protected val httpRewrites: Map<URI, URI>? by lazy { protected val httpRewrites: Map<URI, URI>? by lazy {
cliOptions.httpRewrites ?: evaluatorSettings?.http?.rewrites ?: settings.http?.rewrites() cliOptions.httpRewrites ?: evaluatorSettings?.http?.rewrites ?: settings.http?.rewrites
}
private val httpHeaders: Map<String, Map<String, List<String>>>? by lazy {
cliOptions.httpHeaders ?: evaluatorSettings?.http?.headers ?: settings.http?.headers
} }
protected val externalModuleReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy { protected val externalModuleReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy {
(evaluatorSettings?.externalModuleReaders ?: emptyMap()) + cliOptions.externalModuleReaders cliOptions.externalModuleReaders ?: evaluatorSettings?.externalModuleReaders ?: mapOf()
} }
protected val externalResourceReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy { protected val externalResourceReaders: Map<String, PklEvaluatorSettings.ExternalReader> by lazy {
(evaluatorSettings?.externalResourceReaders ?: emptyMap()) + cliOptions.externalResourceReaders cliOptions.externalResourceReaders ?: evaluatorSettings?.externalResourceReaders ?: mapOf()
} }
private val externalProcesses: private val externalProcesses:
@@ -277,6 +251,7 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
setProxy(proxyAddress, noProxy ?: listOf()) setProxy(proxyAddress, noProxy ?: listOf())
} }
httpRewrites?.let(::setRewrites) httpRewrites?.let(::setRewrites)
httpHeaders?.let(::setHeaders)
// Lazy building significantly reduces execution time of commands that do minimal work. // Lazy building significantly reduces execution time of commands that do minimal work.
// However, it means that HTTP client initialization errors won't surface until an HTTP // However, it means that HTTP client initialization errors won't surface until an HTTP
// request is made. // request is made.
@@ -307,6 +282,7 @@ abstract class CliCommand(protected val cliOptions: CliBaseOptions) {
add(ResourceReaders.modulePath(modulePathResolver)) add(ResourceReaders.modulePath(modulePathResolver))
add(ResourceReaders.pkg()) add(ResourceReaders.pkg())
add(ResourceReaders.projectpackage()) add(ResourceReaders.projectpackage())
addAll(ResourceReaders.fromServiceProviders())
add(ResourceReaders.file()) add(ResourceReaders.file())
add(ResourceReaders.http()) add(ResourceReaders.http())
add(ResourceReaders.https()) add(ResourceReaders.https())
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -22,4 +22,5 @@ class CliTestOptions(
val overwrite: Boolean = false, val overwrite: Boolean = false,
val junitAggregateReports: Boolean = false, val junitAggregateReports: Boolean = false,
val junitAggregateSuiteName: String = "pkl-tests", val junitAggregateSuiteName: String = "pkl-tests",
val reporter: TestReporter = TestReporter.default,
) )
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -13,15 +13,13 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package org.pkl.core.util; package org.pkl.commons.cli
import java.lang.annotation.*; enum class TestReporter {
import javax.annotation.meta.TypeQualifierNickname; SPEC,
import javax.annotation.meta.When; MINIMAL;
@Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) companion object {
@Retention(RetentionPolicy.RUNTIME) @JvmStatic val default: TestReporter = SPEC
@Documented }
@javax.annotation.Nonnull(when = When.ALWAYS) }
@TypeQualifierNickname
public @interface Nonnull {}
@@ -35,6 +35,7 @@ import org.pkl.core.evaluatorSettings.Color
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader import org.pkl.core.evaluatorSettings.PklEvaluatorSettings.ExternalReader
import org.pkl.core.evaluatorSettings.TraceMode import org.pkl.core.evaluatorSettings.TraceMode
import org.pkl.core.runtime.VmUtils import org.pkl.core.runtime.VmUtils
import org.pkl.core.util.GlobResolver
import org.pkl.core.util.IoUtils import org.pkl.core.util.IoUtils
@Suppress("MemberVisibilityCanBePrivate") @Suppress("MemberVisibilityCanBePrivate")
@@ -54,7 +55,8 @@ class BaseOptions : OptionGroup() {
if (IoUtils.isUriLike(moduleName)) URI(moduleName) if (IoUtils.isUriLike(moduleName)) URI(moduleName)
// Can't just use URI constructor, because URI(null, null, "C:/foo/bar", null) turns // Can't just use URI constructor, because URI(null, null, "C:/foo/bar", null) turns
// into `URI("C", null, "/foo/bar", null)`. // into `URI("C", null, "/foo/bar", null)`.
else if (IoUtils.isWindowsAbsolutePath(moduleName)) Path.of(moduleName).toUri() else if (IoUtils.isWindows() && IoUtils.isWindowsAbsolutePath(moduleName))
Path.of(moduleName).toUri()
else URI(null, null, IoUtils.toNormalizedPathString(Path.of(moduleName)), null) else URI(null, null, IoUtils.toNormalizedPathString(Path.of(moduleName)), null)
} catch (e: URISyntaxException) { } catch (e: URISyntaxException) {
val message = buildString { val message = buildString {
@@ -90,9 +92,11 @@ class BaseOptions : OptionGroup() {
> { > {
return splitPair(delimiter).convert { return splitPair(delimiter).convert {
val cmd = shlex(it.second) val cmd = shlex(it.second)
Pair(it.first, ExternalReader(cmd.first(), cmd.drop(1))) Pair(it.first, ExternalReader(cmd.first(), cmd.drop(1), null))
} }
} }
private val headerRegex = Regex("""^(.+?):[ \t]*(.*)$""")
} }
private val defaults = CliBaseOptions() private val defaults = CliBaseOptions()
@@ -285,6 +289,37 @@ class BaseOptions : OptionGroup() {
.multiple() .multiple()
.toMap() .toMap()
val httpHeaders: Map<String, Map<String, List<String>>> by
option(
names = arrayOf("--http-header"),
metavar = "<url-pattern>=<header name>:<header value>",
help = "HTTP header to add to the request.",
)
.splitPair()
.transformAll { pairs ->
buildMap<String, MutableMap<String, MutableList<String>>> {
for ((pattern, headerNameAndValue) in pairs) {
try {
GlobResolver.toRegexPattern(pattern)
} catch (e: GlobResolver.InvalidGlobPatternException) {
fail(e.message!!)
}
val (headerName, headerValue) =
headerRegex.find(headerNameAndValue)?.destructured
?: fail("Header '$headerNameAndValue' is not in 'name:value' format.")
try {
IoUtils.validateHeaderName(headerName)
IoUtils.validateHeaderValue(headerValue)
} catch (e: IllegalArgumentException) {
fail(e.message!!)
}
getOrPut(pattern) { mutableMapOf() }
.getOrPut(headerName) { mutableListOf() }
.add(headerValue)
}
}
}
val externalModuleReaders: Map<String, ExternalReader> by val externalModuleReaders: Map<String, ExternalReader> by
option( option(
names = arrayOf("--external-module-reader"), names = arrayOf("--external-module-reader"),
@@ -351,8 +386,9 @@ class BaseOptions : OptionGroup() {
httpProxy = proxy, httpProxy = proxy,
httpNoProxy = noProxy, httpNoProxy = noProxy,
httpRewrites = httpRewrites.ifEmpty { null }, httpRewrites = httpRewrites.ifEmpty { null },
externalModuleReaders = externalModuleReaders, httpHeaders = httpHeaders.ifEmpty { null },
externalResourceReaders = externalResourceReaders, externalModuleReaders = externalModuleReaders.ifEmpty { null },
externalResourceReaders = externalResourceReaders.ifEmpty { null },
traceMode = traceMode, traceMode = traceMode,
powerAssertionsEnabled = powerAssertionsEnabled, powerAssertionsEnabled = powerAssertionsEnabled,
) )
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -19,9 +19,11 @@ import com.github.ajalt.clikt.parameters.groups.OptionGroup
import com.github.ajalt.clikt.parameters.options.default import com.github.ajalt.clikt.parameters.options.default
import com.github.ajalt.clikt.parameters.options.flag import com.github.ajalt.clikt.parameters.options.flag
import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.types.enum
import com.github.ajalt.clikt.parameters.types.path import com.github.ajalt.clikt.parameters.types.path
import java.nio.file.Path import java.nio.file.Path
import org.pkl.commons.cli.CliTestOptions import org.pkl.commons.cli.CliTestOptions
import org.pkl.commons.cli.TestReporter
class TestOptions : OptionGroup() { class TestOptions : OptionGroup() {
private val junitReportDir: Path? by private val junitReportDir: Path? by
@@ -51,7 +53,19 @@ class TestOptions : OptionGroup() {
private val overwrite: Boolean by private val overwrite: Boolean by
option(names = arrayOf("--overwrite"), help = "Force generation of expected examples.").flag() option(names = arrayOf("--overwrite"), help = "Force generation of expected examples.").flag()
private val reporter: TestReporter by
option(names = arrayOf("--test-reporter"), help = "Which test reporter to use for CLI output.")
.enum<TestReporter> { it.name.lowercase() }
.single()
.default(TestReporter.default)
val cliTestOptions: CliTestOptions by lazy { val cliTestOptions: CliTestOptions by lazy {
CliTestOptions(junitReportDir, overwrite, junitAggregateReports, junitAggregateSuiteName) CliTestOptions(
junitReportDir,
overwrite,
junitAggregateReports,
junitAggregateSuiteName,
reporter,
)
} }
} }
@@ -0,0 +1,5 @@
amends "pkl:Project"
dependencies {
["fruit"] { uri = "package://localhost:0/fruit@1.1.0" }
}
@@ -0,0 +1,12 @@
{
"schemaVersion": 1,
"resolvedDependencies": {
"package://localhost:0/fruit@1": {
"type": "remote",
"uri": "projectpackage://localhost:0/fruit@1.1.0",
"checksums": {
"sha256": "$skipChecksumVerification"
}
}
}
}
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -98,17 +98,17 @@ class BaseCommandTest {
assertThat(cmd.baseOptions.externalModuleReaders) assertThat(cmd.baseOptions.externalModuleReaders)
.isEqualTo( .isEqualTo(
mapOf( mapOf(
"scheme3" to ExternalReader("reader3", emptyList()), "scheme3" to ExternalReader("reader3", emptyList(), null),
"scheme4" to ExternalReader("reader4", listOf("with", "args")), "scheme4" to ExternalReader("reader4", listOf("with", "args"), null),
"scheme+ext" to ExternalReader("reader5", listOf("with", "args")), "scheme+ext" to ExternalReader("reader5", listOf("with", "args"), null),
) )
) )
assertThat(cmd.baseOptions.externalResourceReaders) assertThat(cmd.baseOptions.externalResourceReaders)
.isEqualTo( .isEqualTo(
mapOf( mapOf(
"scheme1" to ExternalReader("reader1", emptyList()), "scheme1" to ExternalReader("reader1", emptyList(), null),
"scheme2" to ExternalReader("reader2", listOf("with", "args")), "scheme2" to ExternalReader("reader2", listOf("with", "args"), null),
"scheme+ext" to ExternalReader("reader5", listOf("with", "args")), "scheme+ext" to ExternalReader("reader5", listOf("with", "args"), null),
) )
) )
} }
@@ -17,13 +17,10 @@ package org.pkl.commons.cli
import com.github.ajalt.clikt.core.parse import com.github.ajalt.clikt.core.parse
import com.github.ajalt.clikt.parameters.groups.provideDelegate import com.github.ajalt.clikt.parameters.groups.provideDelegate
import java.net.URI
import java.nio.file.Path import java.nio.file.Path
import kotlin.io.path.ExperimentalPathApi import kotlin.io.path.ExperimentalPathApi
import kotlin.io.path.writeText
import org.assertj.core.api.Assertions.assertThat import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertThrows
import org.junit.jupiter.api.condition.DisabledOnJre import org.junit.jupiter.api.condition.DisabledOnJre
import org.junit.jupiter.api.condition.JRE import org.junit.jupiter.api.condition.JRE
import org.junit.jupiter.api.io.TempDir import org.junit.jupiter.api.io.TempDir
@@ -31,12 +28,12 @@ import org.pkl.commons.cli.commands.BaseCommand
import org.pkl.commons.cli.commands.ProjectOptions import org.pkl.commons.cli.commands.ProjectOptions
import org.pkl.commons.writeString import org.pkl.commons.writeString
import org.pkl.core.SecurityManagers import org.pkl.core.SecurityManagers
import org.pkl.core.evaluatorSettings.PklEvaluatorSettings
import org.pkl.core.evaluatorSettings.TraceMode import org.pkl.core.evaluatorSettings.TraceMode
import org.pkl.core.util.IoUtils import org.pkl.core.util.IoUtils
@OptIn(ExperimentalPathApi::class) @OptIn(ExperimentalPathApi::class)
class CliCommandTest { class CliCommandTest {
private val cmd = private val cmd =
object : BaseCommand("test", "") { object : BaseCommand("test", "") {
val projectOptions: ProjectOptions by ProjectOptions() val projectOptions: ProjectOptions by ProjectOptions()
@@ -49,7 +46,6 @@ class CliCommandTest {
class CliTest(options: CliBaseOptions) : CliCommand(options) { class CliTest(options: CliBaseOptions) : CliCommand(options) {
override fun doRun() = Unit override fun doRun() = Unit
val myResolvedSourceModules = resolvedSourceModules
val myAllowedModules = allowedModules val myAllowedModules = allowedModules
val myAllowedResources = allowedResources val myAllowedResources = allowedResources
val myRootDir = rootDir val myRootDir = rootDir
@@ -98,114 +94,6 @@ class CliCommandTest {
) )
} }
@Test
fun `@-notation package URIs - treated as relative paths when no project present`(
@TempDir tempDir: Path
) {
cmd.parse(arrayOf("--working-dir=$tempDir"))
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
val cliTest = CliTest(opts)
assertThat(cliTest.myResolvedSourceModules)
.isEqualTo(listOf(tempDir.toUri().resolve("@foo/bar.pkl")))
}
@Test
fun `@-notation package URIs - empty paths are rejected`(@TempDir tempDir: Path) {
tempDir
.resolve("PklProject")
.writeText(
"""
amends "pkl:Project"
"""
.trimIndent()
)
cmd.parse(arrayOf("--working-dir=$tempDir"))
val opts = cmd.baseOptions.baseOptions(listOf(URI("@no.slash")), testMode = true)
val exc = assertThrows<CliException> { CliTest(opts) }
assertThat(exc.message).isEqualTo("Invalid project dependency URI `@no.slash`.")
}
@Test
fun `@-notation package URIs - missing dependencies are rejected`(@TempDir tempDir: Path) {
tempDir
.resolve("PklProject")
.writeText(
"""
amends "pkl:Project"
"""
.trimIndent()
)
cmd.parse(arrayOf("--working-dir=$tempDir"))
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
val exc = assertThrows<CliException> { CliTest(opts) }
assertThat(exc.message).isEqualTo("Project does not contain dependency `@foo`.")
}
@Test
fun `@-notation package URIs - local dependencies are rejected`(
@TempDir tempDir: Path,
@TempDir depDir: Path,
) {
depDir
.resolve("PklProject")
.writeText(
"""
amends "pkl:Project"
package {
name = "foo"
baseUri = "package://example.com/foo"
version = "0.0.1"
packageZipUrl = "https://example.com/foo@\(version).zip"
}
"""
.trimIndent()
)
tempDir
.resolve("PklProject")
.writeText(
"""
amends "pkl:Project"
dependencies {
["foo"] = import("${depDir.toUri().resolve("PklProject")}")
}
"""
.trimIndent()
)
cmd.parse(arrayOf("--working-dir=$tempDir"))
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
val exc = assertThrows<CliException> { CliTest(opts) }
assertThat(exc.message)
.isEqualTo(
"Only remote project dependencies may be referenced using @-notation. Dependency `@foo` is a local dependency."
)
}
@Test
fun `@-notation package URIs - remote dependencies are resolved`(@TempDir tempDir: Path) {
tempDir
.resolve("PklProject")
.writeText(
"""
amends "pkl:Project"
dependencies {
["foo"] {
uri = "package://example.com/foo@1.2.3"
}
}
"""
.trimIndent()
)
cmd.parse(arrayOf("--working-dir=$tempDir"))
val opts = cmd.baseOptions.baseOptions(listOf(URI("@foo/bar.pkl")), testMode = true)
val cliTest = CliTest(opts)
assertThat(cliTest.myResolvedSourceModules)
.isEqualTo(listOf(tempDir.toUri().resolve("package://example.com/foo@1.2.3#/bar.pkl")))
}
val projectWithAllEvaluatorSettings = val projectWithAllEvaluatorSettings =
""" """
amends "pkl:Project" amends "pkl:Project"
@@ -284,4 +172,32 @@ class CliCommandTest {
.isNotNull .isNotNull
} }
} }
@Test
fun `--external-module-reader blows away PklProject externalModuleReaders`(
@TempDir tempDir: Path
) {
tempDir
.resolve("PklProject")
.writeString(
// language=pkl
"""
amends "pkl:Project"
evaluatorSettings {
externalModuleReaders {
["foo"] {
executable = "foo"
}
}
}
"""
.trimIndent()
)
cmd.parse(arrayOf("--external-module-reader", "bar=bar"))
val opts = cmd.baseOptions.baseOptions(emptyList(), null, true)
val cliTest = CliTest(opts)
assertThat(cliTest.myExternalModuleReaders)
.isEqualTo(mapOf("bar" to PklEvaluatorSettings.ExternalReader("bar", listOf(), null)))
}
} }
+5 -5
View File
@@ -37,7 +37,7 @@ dependencies {
* These packages are used by PackageServer to serve assets when running LanguageSnippetTests and * These packages are used by PackageServer to serve assets when running LanguageSnippetTests and
* PackageResolversTest. * PackageResolversTest.
*/ */
val createTestPackages by tasks.registering val createTestPackages = tasks.register("createTestPackages")
// make sure that declaring a dependency on this project suffices to have test fixtures generated // make sure that declaring a dependency on this project suffices to have test fixtures generated
tasks.processResources { tasks.processResources {
@@ -92,8 +92,8 @@ val keystoreName = "localhost.p12"
val keystoreFile = keystoreDir.map { it.file(keystoreName) } val keystoreFile = keystoreDir.map { it.file(keystoreName) }
val certsFileName = "localhost.pem" val certsFileName = "localhost.pem"
val generateKeys by val generateKeys =
tasks.registering(JavaExec::class) { tasks.register<JavaExec>("generateKeys") {
outputs.file(keystoreFile) outputs.file(keystoreFile)
mainClass.set("sun.security.tools.keytool.Main") mainClass.set("sun.security.tools.keytool.Main")
args = args =
@@ -117,8 +117,8 @@ val generateKeys by
} }
} }
val exportCerts by val exportCerts =
tasks.registering(JavaExec::class) { tasks.register<JavaExec>("exportCerts") {
val outputFile = keystoreDir.map { it.file(certsFileName) } val outputFile = keystoreDir.map { it.file(certsFileName) }
dependsOn(generateKeys) dependsOn(generateKeys)
inputs.file(keystoreFile) inputs.file(keystoreFile)
@@ -1,5 +1,5 @@
/* /*
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved. * Copyright © 2024-2026 Apple Inc. and the Pkl project authors. All rights reserved.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@@ -57,7 +57,6 @@ object Executables {
object pkl : ExecutablePaths("pkl-cli") { object pkl : ExecutablePaths("pkl-cli") {
val macAarch64: Path = executable("pkl-macos-aarch64") val macAarch64: Path = executable("pkl-macos-aarch64")
val macAmd64: Path = executable("pkl-macos-amd64")
val linuxAarch64: Path = executable("pkl-linux-aarch64") val linuxAarch64: Path = executable("pkl-linux-aarch64")
val linuxAmd64: Path = executable("pkl-linux-amd64") val linuxAmd64: Path = executable("pkl-linux-amd64")
val alpineAmd64: Path = executable("pkl-alpine-linux-amd64") val alpineAmd64: Path = executable("pkl-alpine-linux-amd64")
@@ -65,12 +64,11 @@ object Executables {
// order (aarch64 before amd64, linux before alpine) affects [firstExisting] // order (aarch64 before amd64, linux before alpine) affects [firstExisting]
override val allNative: List<Path> = override val allNative: List<Path> =
listOf(macAarch64, macAmd64, linuxAarch64, linuxAmd64, alpineAmd64, windowsAmd64) listOf(macAarch64, linuxAarch64, linuxAmd64, alpineAmd64, windowsAmd64)
} }
object pkldoc : ExecutablePaths("pkl-doc") { object pkldoc : ExecutablePaths("pkl-doc") {
val macAarch64: Path = executable("pkldoc-macos-aarch64") val macAarch64: Path = executable("pkldoc-macos-aarch64")
val macAmd64: Path = executable("pkldoc-macos-amd64")
val linuxAarch64: Path = executable("pkldoc-linux-aarch64") val linuxAarch64: Path = executable("pkldoc-linux-aarch64")
val linuxAmd64: Path = executable("pkldoc-linux-amd64") val linuxAmd64: Path = executable("pkldoc-linux-amd64")
val alpineAmd64: Path = executable("pkldoc-alpine-linux-amd64") val alpineAmd64: Path = executable("pkldoc-alpine-linux-amd64")
@@ -80,6 +78,6 @@ object Executables {
// order (aarch64 before amd64, linux before alpine) affects [firstExisting] // order (aarch64 before amd64, linux before alpine) affects [firstExisting]
override val allNative: List<Path> = override val allNative: List<Path> =
listOf(macAarch64, macAmd64, linuxAarch64, linuxAmd64, alpineAmd64, windowsAmd64) listOf(macAarch64, linuxAarch64, linuxAmd64, alpineAmd64, windowsAmd64)
} }
} }

Some files were not shown because too many files have changed in this diff Show More