Original PR: https://github.com/apple/pkl/pull/1238 Author: @bioball Created: 10/15/2025 Status: 🔄 Open
Base: main ← Head: c-library
main
c-library
46db74a
64 files changed (+3526 additions, -333 deletions)
📝 .circleci/config.pkl (+5 -2) 📝 .circleci/config.yml (+874 -56) 📝 .circleci/jobs/BuildNativeJob.pkl (+13 -1) 📝 .idea/inspectionProfiles/Project_Default.xml (+4 -1) 📝 bench/gradle.lockfile (+0 -1) 📝 buildSrc/src/main/kotlin/BuildInfo.kt (+26 -16) ➕ buildSrc/src/main/kotlin/CArchive.kt (+89 -0) ➕ buildSrc/src/main/kotlin/CCompile.kt (+407 -0) 📝 buildSrc/src/main/kotlin/NativeImageBuild.kt (+74 -16) ➕ buildSrc/src/main/kotlin/Target.kt (+93 -0) 📝 buildSrc/src/main/kotlin/pklNativeExecutable.gradle.kts (+68 -136) 📝 buildSrc/src/main/kotlin/pklNativeLifecycle.gradle.kts (+19 -50) ➕ buildSrc/src/main/resources/license-header.batch-script.txt (+15 -0) ➕ buildSrc/src/main/resources/license-header.hash-comment.txt (+15 -0) 📝 buildSrc/src/main/resources/license-header.line-comment.txt (+0 -1) 📝 docs/gradle.lockfile (+0 -1) 📝 gradle/libs.versions.toml (+7 -0) ➕ libpkl/gradle.lockfile (+87 -0) ➕ libpkl/libpkl.gradle.kts (+389 -0) ➕ libpkl/scripts/README.adoc (+7 -0)
.circleci/config.pkl
.circleci/config.yml
.circleci/jobs/BuildNativeJob.pkl
.idea/inspectionProfiles/Project_Default.xml
bench/gradle.lockfile
buildSrc/src/main/kotlin/BuildInfo.kt
buildSrc/src/main/kotlin/CArchive.kt
buildSrc/src/main/kotlin/CCompile.kt
buildSrc/src/main/kotlin/NativeImageBuild.kt
buildSrc/src/main/kotlin/Target.kt
buildSrc/src/main/kotlin/pklNativeExecutable.gradle.kts
buildSrc/src/main/kotlin/pklNativeLifecycle.gradle.kts
buildSrc/src/main/resources/license-header.batch-script.txt
buildSrc/src/main/resources/license-header.hash-comment.txt
buildSrc/src/main/resources/license-header.line-comment.txt
docs/gradle.lockfile
gradle/libs.versions.toml
libpkl/gradle.lockfile
libpkl/libpkl.gradle.kts
libpkl/scripts/README.adoc
...and 44 more files
This introduces native C bindings for Pkl.
This uses native-image to generate a C library for Pkl. This generated library from native-image is wrapped with our own library, in pkl.h.
pkl.h
This produces a static and a dynamic library for each os/arch variant that Pkl currently supports.
Supersedes #1136
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
No dependencies set.
The note is not visible to the blocked user.
📋 Pull Request Information
Original PR: https://github.com/apple/pkl/pull/1238
Author: @bioball
Created: 10/15/2025
Status: 🔄 Open
Base:
main← Head:c-library📝 Commits (1)
46db74aIntroduce C library for Pkl📊 Changes
64 files changed (+3526 additions, -333 deletions)
View changed files
📝
.circleci/config.pkl(+5 -2)📝
.circleci/config.yml(+874 -56)📝
.circleci/jobs/BuildNativeJob.pkl(+13 -1)📝
.idea/inspectionProfiles/Project_Default.xml(+4 -1)📝
bench/gradle.lockfile(+0 -1)📝
buildSrc/src/main/kotlin/BuildInfo.kt(+26 -16)➕
buildSrc/src/main/kotlin/CArchive.kt(+89 -0)➕
buildSrc/src/main/kotlin/CCompile.kt(+407 -0)📝
buildSrc/src/main/kotlin/NativeImageBuild.kt(+74 -16)➕
buildSrc/src/main/kotlin/Target.kt(+93 -0)📝
buildSrc/src/main/kotlin/pklNativeExecutable.gradle.kts(+68 -136)📝
buildSrc/src/main/kotlin/pklNativeLifecycle.gradle.kts(+19 -50)➕
buildSrc/src/main/resources/license-header.batch-script.txt(+15 -0)➕
buildSrc/src/main/resources/license-header.hash-comment.txt(+15 -0)📝
buildSrc/src/main/resources/license-header.line-comment.txt(+0 -1)📝
docs/gradle.lockfile(+0 -1)📝
gradle/libs.versions.toml(+7 -0)➕
libpkl/gradle.lockfile(+87 -0)➕
libpkl/libpkl.gradle.kts(+389 -0)➕
libpkl/scripts/README.adoc(+7 -0)...and 44 more files
📄 Description
This introduces native C bindings for Pkl.
This uses native-image to generate a C library for Pkl. This generated library from native-image is wrapped with our own library, in
pkl.h.This produces a static and a dynamic library for each os/arch variant that Pkl currently supports.
Supersedes #1136
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.