mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
[PR #204] [CLOSED] Upstream: Build Upgrades #448
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/apple/pkl/pull/204
Author: @sgammon
Created: 2/19/2024
Status: ❌ Closed
Base:
main← Head:chore/build-upgrades📝 Commits (10+)
2f12dbdFix droppedimplementSerializableflagf6c5bf3Add setting for Kotlin package to codegen2e45a9fImplement support for KotlinX Serialization4a9a5eeGeneral build upgrades and improvements8fcf9cbGitHub Actions checks for PR reviewe3a1a2dfeat: library api validation with kotlinx binary validator2cc10a2chore: add api pins for public modules49a54ccfixup! cleanups before push78a3534fixup! drop buildless action in cicdb3c66fixup! pr checks, dependency graph📊 Changes
166 files changed (+18060 additions, -1385 deletions)
View changed files
➕
.github/codeql/codeql-config.yml(+7 -0)➕
.github/dependency-review-config.yml(+11 -0)➕
.github/workflows/checks.apicheck.yml(+76 -0)➕
.github/workflows/checks.codeql.yml(+95 -0)➕
.github/workflows/checks.dependency-review.yml(+33 -0)➕
.github/workflows/checks.detekt.yml(+73 -0)➕
.github/workflows/checks.formatting.yml(+84 -0)➕
.github/workflows/checks.gradle-wrapper.yml(+25 -0)➕
.github/workflows/checks.scorecards.yml(+62 -0)➕
.github/workflows/job.build.yml(+104 -0)➕
.github/workflows/job.dependency-graph.yml(+75 -0)➕
.github/workflows/job.native-build.yml(+200 -0)➕
.github/workflows/job.tests.yml(+146 -0)➕
.github/workflows/on.pr.yml(+195 -0)➕
.github/workflows/on.push.yml(+80 -0)📝
.gitignore(+4 -0)📝
.idea/codeStyles/Project.xml(+0 -2)📝
.idea/inspectionProfiles/Project_Default.xml(+1 -0)📝
bench/bench.gradle.kts(+11 -12)📝
bench/gradle.lockfile(+1 -40)...and 80 more files
📄 Description
Summary
Not for merge
This is a massive PR that upgrades the Gradle build in a big way. I did this sort of for fun, over the weekend, while working on other PRs which are reasonable and not enormous.
We are intending to use and extend Pkl so we could maintain a fork, and I have no expectation that this will get merged as-is. That being said, since we've done the leg work on some of this stuff and it could be useful, I wanted to file and offer any of the below as a menu of changes the Pkl team could get upstreamed from us if desired.
There are a handful of test failures and checksums have changed, which I am fixing. Total broken tests number less than 10, I believe, and the breakages seem fixable.
Feedback is of course welcome but since this PR isn't designed to be merged, such feedback would be incorporated in another PR, which is smaller and reviewable.
Thank you to the Pkl team for a very cool project!
Update: Feb 21st
New batch of changes pushed with the following:
buildSrcrefactored toincludeBuild("build-logic")(here's why)23.1.2)--strict-image-heappkltruffle modulemodule-info)-Obpkl-coreenginefeat: usenote: rolling this back bcepsilongc in native binarypkl serverInitial native binary benchmarks show a modest improvement:
Download URLs to try it out
aarch64: zip, tar.gzUpdate: Split-out PRs (Feb 20th)
Changes enclosed
0) Fun developer ergonomics stuff.
1) Build upgrades.
jvm-test-suitepluginsproperty = valuesyntax instead ofproperty.set(value)1.9.22(for build)8.6212) Supply chain security.
3) GitHub project integration/ergonomics
4) Library updates / upgrades
1.9.22(for codegen and scripting)Full changelog
Expand to see full changelog
- chore: `buildSrc` refactored to `includeBuild("build-logic")` - feat: upgrade GraalVM → latest (`23.1.2`) - feat: support for `--strict-image-heap` - feat: support for GraalVM PGO in native mode - feat: preinitialization of `pkl` truffle module - feat: support for engine sharing/context re-use - feat: native jpms support (`module-info`) - feat: faster native builds with `-Ob` - feat: support for build scans with gradle enterprise - feat: support for caching with buildless (inert without key) - feat: support for gradle java toolchains - feat: support for static analysis with detekt - feat: support for toolchain vs. runtime target - feat: support for dynamic provisioning of toolchains - feat: support for static java checking with pmd - feat: enable typed project accessors, use them project-wide - feat: stricter repositories, locking for build classpath - feat: property to retarget java or kotlin bytecode versions - feat: parameter name integration between javac and kotlinc - feat: kotlin coverage support via `kover` plugin - feat: dependency verification for gradle build - feat: support for new gradle `jvm-test-suite` plugin - feat: reasonable local and remote build caching support - feat: project icon in intellij new ui - feat: aggregate reporting for tests, coverage, detekt - fix: repeatable/consistent archives from gradle - fix: don't list ephemeral spotless configurations in lockfiles - fix: make version catalog symbols available in `buildSrc` - fix: specify `rootProject.name` for `buildSrc` - fix: error when running `gradlew tasks` - fix: various java or gradle deprecations - fix: move all tool (linter, etc) versions into version catalog - chore: add testlogger for clearer test outcomes - chore: check build configuration with gradle doctor plugin - chore: generate initial suite of dependency verification material - chore: transition to property set syntax (`property = xyz`) - chore: cleanup uses of `buildDir` (becomes `layout.buildDirectory`) - chore: add Gradle Versions plugin for update checks - chore: upgrade Gradle → `8.6` (supports Java 21) - chore: upgrade Kotlin → `1.9.22` (build-time) - chore: upgrade KotlinX Serialization → `1.6.3` - chore: upgrade KotlinX HTML → `0.11.0` - chore: general dependency upgrades, where safeNot yet completed
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.